я бегу ReadDirectoryChangesW из нити в моей C ++ программе. К сожалению, я получаю уведомления только при изменении файлов из корневого каталога, хотя я установил для аргумента bWatchSubtree значение TRUE.
Документы говорят:
bWatchSubtree [в]
Если этот параметр имеет значение TRUE, функция отслеживает дерево каталогов с корнем в указанном каталоге. Если этот параметр имеет значение FALSE, функция отслеживает только каталог, указанный параметром hDirectory.
Что мне не хватает?
Спасибо!
кк
void WatchDirectory(LPTSTR lpDir)
{
HANDLE hDir = CreateFile(
lpDir,
FILE_LIST_DIRECTORY,
FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL
);
FILE_NOTIFY_INFORMATION strFileNotifyInfo[1024];
DWORD dwBytesReturned = 0;
while(RUNNING)
{
if(ReadDirectoryChangesW(
hDir,
(LPVOID)&strFileNotifyInfo,
sizeof(strFileNotifyInfo),
TRUE,
FILE_NOTIFY_CHANGE_LAST_WRITE,
&dwBytesReturned,
NULL,
NULL) == 0)
{
MGlobal::displayInfo("Error Reading Directory Change");
}
else
{
// Do cool stuff
}
}
}
Задача ещё не решена.
Других решений пока нет …