ReadDirectoryChangesW()
監視する必要があるフォルダーの作業を行うことができました。私は IO Completion ルーチンを使用していますが、すべての変更監視は、変更とシグナルの停止以外は何もしないスレッドによって行われます。それはすべてうまくいきます。完了ルーチンは現在、変更されたファイル名とアクションを通知レコードからシステム デバッグ ログに記録しているだけです。繰り返しますが、うまく機能しているようです。テスト中、利用可能なすべてのイベント (0x017F のマスク) を待機しています。
私の質問は、メモ帳などで変更されたファイルを保存するときに、LAST WRITE 変更イベントが表示されないのはなぜですか?
私はもともと FILE_NOTIFY_CHANGE_CREATION、_LAST_WRITE、および _FILE_NAME イベントのみを待機していましたが、なぜ最後の書き込みイベントが表示されなかったのか疑問に思いました (ただし、待機していなかった _DIR_NAME イベントは表示されました)。そのため、すべてを待機するように変更しました。
私のコードは現在、例としてここで見つけたものと非常によく似ています: ReadDirectoryChangesW
デバッグ中に、FindFirstFile()
監視対象のファイルを変更する前後に WIN32_FIND_DATA のコピーを取得して、最終書き込み時刻が変更されたことを確認していました。では、なぜ通知がないのでしょうか。それを可能にするために何か特別なことをする必要がありますか?