Windows プログラミングは初めてで、ファイル システムへのすべての変更の通知を受けようとしています (SysInternals の FileMon が表示する情報に似ていますが、API を介して)。各 (非ネットワーク、非サブステッド) ドライブの FindFirstChangeNotification は私の最善の策ですか、それとも他のより適切な C/C++ API がありますか?
4 に答える
FindFirstChangeNotification
は問題ありませんが、もう少し究極のパワーを使用する必要がありますReadDirectoryChangesW.
(実際、ドキュメントでも推奨されています!)
関数ポインターは必要ありません。生のバッファーを手動でデコードする必要があり、Unicode ファイル名を使用しますが、一般的にはより優れており、より柔軟です。
一方、FileMon の機能を実行したい場合は、おそらく FileMon の機能を実行し、IFS を使用してファイル システム フィルターを作成してインストールする必要があります。
他にも方法はありますが、ほとんどの場合、ユーザーの努力が必要です (または、アプリのパフォーマンスを低下させたり、スレッドをブロックして使用する必要があるなど)。関数ポインタなどの扱いに慣れていない場合、FindFirstChangeNotification は少し複雑ですが、OS に大部分の作業を任せられるという利点があります。
実際、FileSystemWatcher は共有ネットワーク ドライブで完全に動作します。私は現在、特にファイルシステムの変更を監視するアプリケーションで使用しています。(www.tabbles.net)。
FileSystemWatcher クラスを使用できます。非常に効率的ですが、ネットワーク共有ドライブでは機能しません。