2

Я помню, как слышал, как кто-то упоминал что-то об удалении ссылок на пути, но удаление ссылок не было объяснено, и я не знаю, что это такое.

2 ответа2

2

Это путь увеличенной длины. См. MSDN: Имена файлов, путей и пространств имен.

В Windows API (с некоторыми исключениями, обсуждаемыми в следующих параграфах) максимальная длина пути равна MAX_PATH, которая определяется как 260 символов. [...]

Windows API имеет много функций, которые также имеют версии Unicode, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. [...] Чтобы указать путь расширенной длины, используйте "\\?\" префикс. Например, "\\?\D:\very long path" .

В основном, \\?\ указывает Windows API передать путь непосредственно в файловую систему без дальнейших манипуляций. Помимо увеличения доступной длины, он отключает автоматическое преобразование / в \ а также позволяет использовать зарезервированные имена файлов . и .. Смотрите статью, приведенную выше, для деталей.

2

Что значит \\?\c:\ значит?

Первая часть \\?\ называется префиксом пути расширенной длины. Он используется для обхода ограничений Windows API в максимальной длине пути:

Для файлового ввода / вывода "\?\"Префикс к строке пути указывает API-интерфейсам Windows отключить анализ всей строки и отправить строку, следующую за ней, прямо в файловую систему.

Например, если файловая система поддерживает большие пути и имена файлов, вы можете превысить пределы MAX_PATH, которые в противном случае применяются API-интерфейсами Windows.

Вторая часть c:\ является ссылкой на корневой путь диска c:.

Ограничение максимальной длины пути

В Windows API (с некоторыми исключениями, обсуждаемыми в следующих параграфах) максимальная длина пути равна MAX_PATH, которая определяется как 260 символов.

...

Windows API имеет много функций, которые также имеют версии Unicode, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов , разделенных обратной косой черты, каждый до значения , возвращаемого в параметре lpMaximumComponentLength функции GetVolumeInformation (это значение обычно 255 символов).

Чтобы указать путь расширенной длины, используйте "\?\" префикс. Например, "\?\D:\ очень длинный путь ".

Примечание. Максимальный путь в 32 767 символов является приблизительным, поскольку "\?"\ "Префикс может быть расширен системой до более длинной строки во время выполнения, и это расширение применяется к общей длине.

"\?Префикс \ "также можно использовать с путями, созданными в соответствии с универсальным соглашением об именах (UNC). Чтобы указать такой путь с помощью UNC, используйте "\?\ UNC \ "префикс. Например, "\?\ UNC \ server \ share ", где" server "- это имя компьютера, а" share "- это имя общей папки. Эти префиксы не используются как часть самого пути. Они указывают, что путь должен быть передан в систему с минимальной модификацией, что означает, что вы не можете использовать прямую косую черту для представления разделителей пути, или точку для представления текущего каталога, или двойные точки для представления родительского каталога. Потому что вы не можете использовать "\?\ "префикс с относительным путем, относительные пути всегда ограничены суммой символов MAX_PATH.

Файлы имен источников , пути и пространства имен

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .