В общем: я делаю так:
#define BUF_SIZE 4096
BYTE* pBuf = (BYTE*)GlobalAlloc(GPTR, BUF_SIZE);
DWORD br = 0;
HANDLE chNotHandle = FindFirstChangeNotification(L"MegaDir", TRUE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE);
HANDLE hDir = CreateFile(L"MegaDir", FILE_LIST_DIRECTORY, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);TRACE1("HANDLE: %i\n", hDir);
DWORD waitRet = WaitForSingleObject(chNotHandle, INFINITE);
TRACE1("FUNK RETURNED %i\n", waitRet);
BOOL res = ReadDirectoryChangesW(hDir, pBuf, BUF_SIZE, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE, &br, 0, 0);//Все тормозится на этой функции.
TRACE1("_%i_\n_", res);
Происходит следующее: WaitForSingleObject отлично ожидает изменения имени файла, возвращает значения, я вызываю ReadDirectoryChangesW, однако происходит странное: функция не завершается, но, блджад, зацикливается. Что я делаю не так?