Мне было интересно, какова самая длинная возможная длина имени, разрешенная ядром Windows?
Например: я знаю, что ядро использует UNICODE_STRING
структуры для хранения всех путей к объектам, ипоскольку длина байта строки широких символов хранится внутри USHORT
, это позволяет максимальную длину пути 2 ^ 15 - 1 символов.Существует ли подобное ограничение hard для имени файла (а не пути)?(Мне все равно, накладывает ли NTFS или FAT32 определенное ограничение; я ищу самое длинное теоретически допустимое имя в ядре, при условии отсутствия дополнительных ограничений файловой системы или оболочки.)
(Редактировать: Дляте, кто задаются вопросом, почему это вообще имеет значение, считают, что обычно обход каталога осуществляется с помощью вызовов FindFirstFile
/ FindNextFile
, по одному вызову на файл. Учитывая функцию с именем NtQueryDirectoryFile
, которая является базовым системным вызовом и возвращает множественные имен файлов за вызов, на самом деле можно воспользоваться этим ограничением максимальной длины пути, чтобы создать чрезвычайно быстрый обработчик каталогов, который использует только стек в качестве буфера. Теперь я пытаюсь расширить этои мне нужно знать максимальный размер имени файла.)