C0USIN
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Я тут провел небольшие изыскания в документации: Цитата: ...имея дело с файлами, всегда необходимо помнить об ограничении длины полного имени файла, накладываемого операционной системой. Для ANSI-версий функций (единственно доступных для ОС Windows 95/98), выполняющих файловые операции, максимальная длина буфера, содержащего полный путь к файлу (включая ноль-терминатор) равна MAX_PATH (что составляет 260 для PC-архитектуры и 256 для MAC). Для Windows NT/2000 доступны UNICODE-версии функций, которые способны расширить этот предел вплоть до 32767 UNICODE символов. В последнем случае UNICODE-строка, содержащая полный путь к файлу, должна начинаться символами "\\?\". Для более полной информации см. раздел "File Name Conventions" в MSDN. |
Цитата: На самом деле это ограничение в 260 символов есть только в Windows API. В самой файловой системе (FAT32 или NTFS) максимальная длина имени файла ограничена 255 символами, но максимальная длина пути может быть гораздо больше, чем поддерживает WinAPI. Поэтому, ограничение на длину пути может быть преодолено. |
Цитата: Unicode-версии функций CreateDirectory, FindFirstFile, GetFileAttributes, и SetFileAttributes позволяют использовать пути, превышающие длину MAX_PATH, если путь имеет префикс "\\?\" or "\\?\UNC\". Эти префиксы указывают функции на необходимость отключения проверки пути. Используйте "\\?\" префикс для путей на локальных носителях, а "\\?\UNC\" для путей, которые имеют UNC-формат. |
Цитата: Universal Naming Convention Universal Naming Convention - сокращенно UNC, можно дословно перевести как "Универсальное Соглашение об Именах", это формат для записи пути к файлу расположенному на удаленном компьютере. Он имеет вид "\\server\share\path". Server это, как ни странно сервер, share - это расшаренный ресурс на нем, а дальше следует путь к файлу в обычном формате. Такой способ доступа к файлам можно использовать и для локальной машины, только в этом случае вместо "server" нужно подставлять "?" или ".", а путь к файлу указывать вместе с буквой диска. Например так: "\\?\C:\folder\file.txt". | Кстати, я слышал, что Microsoft выпустил обновление для Win98 добавляющее в Windows API UNICODE-версии функций. И весит оно всего 200кб. Называлось это примерно так "UNICODE layer for Windows 98" Ничто не мешает нам, используя префикс "\\?\", создать путь с длиной большей, чем 260 символов. Но проблема в том, что просматривать кэш можно будет только средствами HC. Например, Архивариус не сможет проиндексировать страницы с длинным именем. | Всего записей: 2739 | Зарегистр. 18-07-2003 | Отправлено: 00:46 10-04-2006 | Исправлено: C0USIN, 00:51 10-04-2006 |
|