Всем читающим этот "?" Доброго всем времени суток. Есть код: Code (Text): invoke MessageBox,NULL,ADDR T_Buf, lpSaveFolder,MB_OK invoke FindFirstFile,ADDR T_Buf,ADDR wfd ; Ищем файлы inc eax ; Если ничего не нашли - выходим .if !ZERO? dec eax ; Иначе, сохраним mov [hSrch], eax ; хэндл поиска .while eax ;< покажим что нашли lea eax, [wfd.cFileName] PrintStringByAddr eax ;> invoke FindNextFile,[hSrch],ADDR wfd ; Ищем следующий файл .endw ; Если ничего не нашли invoke FindClose,[hSrch] ; Закрываем хэндл поиска .endif Находит все файлы в указанной папке. Но если убрать Code (Text): invoke MessageBox,NULL,ADDR T_Buf, lpSaveFolder,MB_OK или заменить на Code (Text): invoke MessageBox,NULL,ADDR T_Buf, NULL,MB_OK Отказывается работать, выводит только часть файлов. T_Buf, wfd, hSrch - локальные переменные. Из какой оперы этот прикол? Подскажите.
JCronos Не верно. Связано с асинхронным чтением директори в апи, следует реализовать самостоятельно посредством натива.
А в чем, собственно, проблема с findnextfile? Хотите сказать, что функция настолько криво написана, что может с разу на раз пропускать некоторые файлы? oO
Nouzui Это факт, я както писал поиск ресурсов с иконками во всех файлах, так эта апи кучу файлов пропускала.
Clerk, ни разу не замечал, чтобы тотал/проводник вот так "пропускали" файлы. может, есть какие-то конкретные причины? Ось, FS, характер поиска, действия, предшевствующие findfirst и между вызовами findnext.. ?
MirrorBlack Наверно изза того, что в FindFirstFile() не полностью выполняется проверка результата для сервиса NtQueryDirectoryFile получающего список файлов в директории, зотя может и флажки при открытии файлов тоже являются причиной..
Clerk Я вспомнил подобную фигню с ReadDirectoryChangesW. Лечилось sleep. Вот я и думаю, может работать с предпоследним дискриптором?
Епт, первый раз слышу чтоб FindXxxFile так глючила) Никогда раньше не встречал. Быть может все-таки у тебя ошибка?
Может FindFileNext попробовать проверять на (ноль) или на (ERROR_NO_MORE_FILES = 18) ? Можно ещё попробовать обнулить структуру (wfd) перед вызовом FindFileFirst. хотя вряд ли это делу поможет...
Спасибо за поддержку! На 2000 всё прошло без всяких глюков, а на работе под XP SP2, то работает, то нет. Функция FindNextFile просто вылетает со всей прогой, ни сообщений обо ошибке ни ни. Просто "ХЛОП" и нет проги. Скорее всего глючно написанная функция FindNextFile. Два года назад, уже 3, юзал ее в потоке на этой же машине, проблем не было. Прога делала список файлов со всех жестких дисков. Работатала. Может всё таки мне систему переустановить, 3 год как стоит.