1


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
        }
    }
}
4

0 に答える 0