вызываю так
DWORD dwBytesRead = 0;
DWORD dwWaitState = 0;
DWORD status = ERROR_SUCCESS;
DWORD cbNotifyBuffer;
// PFILE_NOTIFY_INFORMATION pNotifyInformation;
// wchar_t filename[MAX_PATH + 1];
OVERLAPPED overlapped;
HANDLE hFile = INVALID_HANDLE_VALUE;
PFILE_NOTIFY_INFORMATION pNotifyBuffer = NULL;
sp->addText(_T("\n"));
sp->addText(_T("я запустился!-"));
sp->addText(sp->dirs[i]);
ZeroMemory(&overlapped, sizeof(overlapped));
cbNotifyBuffer = 4096;
pNotifyBuffer = (PFILE_NOTIFY_INFORMATION) new BYTE[cbNotifyBuffer];
if (!pNotifyBuffer)
{
status = ERROR_NOT_ENOUGH_MEMORY;
}
if (status == ERROR_SUCCESS) {
hFile = CreateFileW(sp->dirs[i], FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_DIRECTORY | FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
status = GetLastError();
}
}
if (status == ERROR_SUCCESS) {
overlapped.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
HANDLE hEventsToWait[2] = {sp->ev, overlapped.hEvent };
BOOL cik=TRUE;
while (cik) {
ReadDirectoryChangesW(hFile, pNotifyBuffer, cbNotifyBuffer, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME |
FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE |
FILE_NOTIFY_CHANGE_LAST_WRITE,
NULL, &overlapped, _CompletionRoutine);
dwWaitState = WaitForMultipleObjects(2, hEventsToWait, FALSE, INFINITE);
но при изменении в директории не срабатывает?
вчем может быть причина?