我在C ++程序的一个线程中运行 ReadDirectoryChangesW 。不幸的是,我只会在根目录中的文件发生变化时收到通知,即使我已将bWatchSubtree参数设置为TRUE。
文档说:
bWatchSubtree [in]
如果此参数为TRUE,则该函数将监视以指定目录为根的目录树。如果此参数为FALSE,则该函数仅监视hDirectory参数指定的目录。
我错过了什么?
谢谢!
KK
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
}
}
}