問題タブ [readdirectorychangesw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - ReadDirectoryChangesW と、変更の原因となったプロセスの特定
どのプロセスがどのファイルに変更を加えているかを判断するにはどうすればよいですか。
私はこれを見つけました:
FileSystemWatcher: どのプロセスが変更を行ったかを知る方法は?
でも最近何か変わったのかな?どのプロセスがファイルシステムに変更を加えているかを特定することはまだ可能ReadDirectoryChangesW
ですか? カーネルドライバーを作成したり使用したりする必要はありません。
buffer-overflow - ReadDirectoryChangesW:非同期で使用するときにバッファオーバーフローを検出する方法は?
GetQueuedCompletionStatusと組み合わせてReadDirectoryChangesW(Windows API)を非同期的に使用しています。バッファオーバーフローの可能性を検出して、少なくとも1つのファイルシステム変更イベントが失われたことを理解するにはどうすればよいですか?
delphi - FILE_NOTIFY_CHANGE_LAST_WRITE フィルターのみを使用した ReadDirectoryChangesW が、ファイル編集時に複数のイベントを通知するのはなぜですか?
別のスレッド アプリケーション構成ファイルで監視しています。場合によっては、別の XML または別の INI である可能性があります。スレッド監視ディレクトリのコード (Delphi 内) は次のようなものです。
構成ファイルのフラグが変更されて保存されたときに、少なくとも 2 回シグナルを送信する理由と、正しいシグナルを取得する方法を教えてください。
winapi - ReadDirectoryChangesW ファイル移動の回避策
バックグラウンド
ファイル システムの変更を監視するための Windows API ReadDirectoryChangesWは、ファイルの移動操作を確実に報告できません。代わりに、削除済み + 作成済みを通知するだけです。
質問
Windows でこのような「移動イベント」効果を実現するには、どのような回避策を実装できますか? これに対処したのは私が初めてではないと確信しています。
私自身の最初の考えは、監視対象のディレクトリ (おそらく SQLite データベース) 内のすべての SHA1 合計を保存し、変更されたファイルを SHA1 と比較して、delete + create が発生し、それらの sha1 合計が一致した場合に安全に想定できるようにすることでした。移動操作でした。これは少しやり過ぎのように感じますが、他の誰かがすでにより良い回避策を見つけているのではないかと思っています。
何か案は?
c++ - ReadDirectoryChangesW の問題
この質問ReadDirectoryChangesW
に 基づいて、ディレクトリの変更を非同期的に監視するために使用 していますが、特定のディレクトリを監視する関数を実装していますが、それでもエラーメッセージが表示されます GetQueuedCompletionStatus(): Timeout
ReadDirectoryChangesW
と非同期で使用する方法を知る必要がありますIoCompletionPort
。
助けてください。
filesystemwatcher - DataOntap での FileSystemWatcher の使用
現在 Windows Server マシンでホストされているネットワーク共有でファイルの作成/削除アクティビティを監視するプロジェクトがありますが、DataOntap を実行している NetApp ボックスにファイルを移動することを検討しています。彼らの API ドキュメントには、FileSystemWatcher が内部で使用しているものである ReadDirectoryChangesW をサポートしていると書かれていますが、完全な実装ではないのではないかと懸念しています。注意すべき落とし穴はありますか?
c++ - CreateFile、ReadDirectoryChanges の問題
ReadDirectoryChangesW
で開いたフォルダーをスパイするために使用してCreateFile
います。ファイルが追加されたらOnFileChanged
、サイズを読み取って読み取り用に開く関数()を呼び出します。アプリケーションは小さなサイズのファイルに対しては正常に動作しますが、しようとすると問題が発生します大きなファイルを自分のフォルダー (7,24 M) にコピーすると、Permission denied
fopen を呼び出して読み取るとエラーが発生します。
監視プロセスはこれに基づいています
ファイルの処理方法がわかりませんでした。それを読み取らせてくれませんか? 呼び出した後に Sleep() を呼び出しOnFileChanged
、終了したら目を覚まそうとしましたが、無駄でした。任意のアイデアをお願いします。
python - ReadDirectoryChangesW にイベントがないようです
ReadDirectoryChangesW を使用してサブツリーのファイル変更を監視しようとしましたが、一貫性のない結果が得られることがわかりました。以下は、問題を説明する自己完結型のテスト ケースです。これを実行すると、次のように生成されることがあります。
別の時には、次のように生成される可能性があります。
巨大なバッファを作成しましたが、変更されるファイルの数は非常に少なくなっています (3 ファイル)。
コード:
c++ - Wchar_t から文字列への変換
ファイルパスを確認できるように、 strFileNotifyInfo[1].FileName (Wchar_t) を文字列に変換したいと考えています。しかし、私はそれを機能させることはできません。
これが私のコードです:
c++ - GetQueuedCompletionStatusEx()、ReadDirectoryChangesW()
複数のファイルシステム階層への変更の通知を使用GetQueuedCompletionStatusEx()
して受信しようとしています。ReadDirectoryChangesW()
一度に多くの変更が行われると、エラー0x10Cの完了パケットを受信することに気付きました。このエラーコードは、私がインクルードしたヘッダーファイルのどこにもありませんでしたし、ドキュメントにもありませんでした(http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85 ).aspx)。STATUS_NOTIFY_ENUM_DIR
少し掘り下げてみると、で定義されていることがわかりましたntstatus.h
。STATUS_NOTIFY_ENUM_DIRはドキュメントに記載されておらず、ntstatus.hを含める必要もありません。MSDNは、そうすべきだったことを示していますERROR_NOTIFY_ENUM_DIR
。だから私は疑問に思っています、これはドキュメントのバグですか、それとも私は何か間違ったことをしていますか?