Я прочитал много документации на эту тему, но, похоже, не могу понять.
Причина в том, что мне приходится обрабатывать пути к файлам, которые могут быть длиннее MAX_PATH
параметр, вызывающий множество проблем
Я уже заменил все мои ANSI
-функции, такие как GetFileAttributesA
, на эквивалент UNICODE
(GetFileAttributesW
) для поддержки расширенной длины пути к файлу с помощьюпрефикс: \\?\
.
Однако мне также нужно проверить, является ли путь файла, например, символической ссылкой, и мне нужно знать размер файла, дату последнего изменения и т. д.
Вчтобы сделать это, я использую функцию stat
, как показано ниже:
if (fstat(LongFilePath, &file_info) == 0) //THIS FAILS WITH THE ENAMETOOLONG FOR LONG FILEPATHS
Итак, здесь снова проблема в ошибке ENAMETOOLONG
из-за слишком длинного имени файла (превышающего MAX_PATH
).
Итак, я обнаружил, что могу использовать fstat
для доступа к файлу по его дескриптору.Однако, чтобы получить дескриптор, мне нужно использовать fopen
, который также имеет ограничение ENAMETOOLONG
.
Итак, мой вопрос.Как я могу получить информацию о файле, которая мне нужна (символическая ссылка, размер файла, последнее изменение, .... как предлагает функция stat
) для путей к файлам, превышающим MAX_PATH