Как перебирать длинные имена путей с любой формой API Windows

у меня есть несколько файлов на сервере, которые превышают MAX_PATH ограничения. Я неоднократно слышал, что вы можете перечислить эти файлы с помощью pre-pending \\?\ в путь. Однако это не решает проблему с FindFirstFile[Ex] и его партнеры, поскольку они используют структуру данных, которая ограничивает длину имени файла MAX_PATH.

есть ли другой способ перебирать структуру каталогов, чтобы найти файлы с слишком длинным именем? Я видел утилиты, которые это делают, но ни одна из них не доступна в исходном виде.

обратите внимание, что я видел записи в блоге от людей .NET BCL и следовал ссылкам, которые они предоставляют.

Я бы предпочел сделать это на C или C++ для простоты, но сейчас подойдет любой свободно доступный язык.

указатели на код, документы или что-нибудь полезное ценятся.

1 ответов


Я не думаю, что здесь есть проблема. Вы имеете в виду WIN32_FIND_DATA который действительно возвращает имена файлов, ограниченные по длине до MAX_PATH. Но поскольку это только часть имени файла, а путь опущен, ограничений нет.

в каталоге длина объекта (файла или папки) ограничена, как правило, 255 символами. Вы можете определить, что это ограничение с