Всем Привет! Вот проблема, нужно найти файлы в каталоге все, для этого я использовал 714Eh int 21h, там есть где в регистрах должен быть указан адрес буфера 318 байт (ESI), но при поиске из под Turbo Debugger-a функция задействует DTA который по умолчанию находиться по адресу CS:0080h. Проблема не могу понять при поиске файлов длинные имена отражаються в DTA(cs:0080h), а в буфере который указан в функции 714Eh int 21h указано только короткое имя и никаких данных больше нет. Кто сталкивался, подскажите пожалуйста.
судя по размеру системного буфера, то не больше 8191 вложенность. это если осуществляется поиск unicode функциями и каждый подкаталог именуется 1 символом. максимальная длина unicode строки 32768 байт, 1 символ = 2 байтам. имя диска с двоеточием 2 символа ("C:") и 8191 имя каталога из 1 символа с предшествующим разделителем ("\0\0\0\0\0\0\0...") хотя это число гораздо меньше на самом деле. максимальна длина буфера 260 символов=байт.
думаете может быть 8191 подкаталогов в глубину, можно попробывать. Я пищу прогу обход по всему диску , вот пока на поиске остановился
n0name тут используется константа MAX_LEN = 260. ну может в Висте эта константа и изменилась, но в ХР используется точно.
может MAX_PATH? эта ограничение обходится указанием родительского каталога. можно добираться до файла открывая промежуточные каталоги.