nester7 т.е. больше 32000 в мелкософте считать не умеют? Скока вешать в граммах?! и про какие там имеется ввиду? параметры чтоли? скопом открываем 125 файлов? мнения, предложения.
может имеется в виду имя файла (каталога) зы я не смотрел, но что-то мне подсказывает что руссинович должен был писать, ты его смотрел?
А (в данном случае) надо? Хм... следи за мыслью, возможно я и не правильно понял: Теперь про юникод: А вообще, возьми компилятор и проверь в той ситуации, которая тебя интересует )
неа ( /да просто запостил прогу с рекурсивным поиском древнюю и подумалось - а что ежели переполнение буферу да и устроить... ну в локале такие пути (\\?\) не сохранить просто видимо - надо динамические структуры походу гонять будет или долой рекурсию вопче/ компилеры какие-то нам не указ )) Ну вроде в онлайн версии говорится поболее чем всякие там "примерно" да "около" - CreateFile Короче, грабли одни - в статье, на которую этот самый CreateFile ссылается про именование файлов, опять одни approximately прут дуром!!! в общем какая то это "плавающая константа" в 32767. мдэ.
Вообще-то, ты проверишь реакцию системы, а не помпилера. А "approximately", подозреваю, родилось от того, что "простые" файловые имена \\?\C:\XXX транслируются в \Device\HarddiskVoiume0\XXX (или что-то вроде), а если есть тома (или томы, хз как правильно), то имя получается подлиннее. Отсюда и... запас прочности так сказать _) Напрашивается вывод, что драйверы с девайсами (с дисками в данном случае) работают с именем в максимум 32*1024 characters.
nester7 Конечно это всё логинчо, не спорю. Тогда согласно 32767 остаётся 1 байт... и тот нулевой наверное. The truth is out there опять.
asmfan Тут все проще. CreateFileW сохраняет ссылку на строку в виде UNICODE_STRING, содержащую длину строки и размер буфера в байтах в формате word. Поэтому размер строки в байтах, включая замыкающий ноль, не может превышать 0xFFFF & (-2) = 0xFFFE, а число символов в строке без учета нуля соответственно (0xFFFE-2)/2 = 32766. Минус 4 символа на префикс "\\?\" - итого 32762 символа на full path
leo Спасибо, решение то оказалось и вовсе простым, чёт не догадался копнуть в сторону структур UNICODE_STRING, даже после слов, мол парсинг строк при этом "\\?\" отключён, а как известно для UNICODE_STRING ничего парсить не надо, кроме указателя и длины. Тему можно считать закрытой.