Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Спасибо. Я попробовал такой тестовый код: 07.08.07 03:40 Число просмотров: 2700
Автор: void <Grebnev Valery> Статус: Elderman
|
Спасибо. Я попробовал такой тестовый код:
HANDLE hDir = CreateFile ( lpDir, FILE_LIST_DIRECTORY, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (INVALID_HANDLE_VALUE == hDir)
{
_tprintf(TEXT("Error opening the directory (%s) (error code: %d).\n"), lpDir, ::GetLastError());
return;
}
FILE_NOTIFY_INFORMATION Buffer[1024];
::ZeroMemory(Buffer, sizeof(Buffer));
DWORD BytesReturned;
while (ReadDirectoryChangesW( hDir, Buffer, sizeof(Buffer), FALSE,
FILE_NOTIFY_CHANGE_FILE_NAME, // | FILE_NOTIFY_CHANGE_LAST_WRITE,
&BytesReturned, NULL, NULL ))
{
if ( Buffer[0].Action == FILE_ACTION_ADDED)
_tprintf(_T("Added %s\n"), Buffer[0].FileName);
else if ( Buffer[0].Action == FILE_ACTION_MODIFIED)
_tprintf(_T("Modified %s\n"), Buffer[0].FileName);
// to do ...
//Sleep(1000);
::ZeroMemory(Buffer, sizeof(Buffer));
}
CloseHandle(hDir);
Там где закоментировано // to do ...//Sleep(1000); обработка не может быть длительной. Иначе винда сигналит о 2-3 файлах из 10 и "забывает" просигналить об остальных.
Если Sleep(1000); закоментировано, то винда честно сигналит о всей пачке новых файлов.
Возможно асинхронный вызов ReadDirectoryChangesW с сигналом на IOCP поможет. Не знаю.
|
|
|