USB デバイスのアクティビティをログに記録するための小さなツールを使用しています。私のツールは、すべてのデバイス イベントをキャッチする Windows サービスとして機能します。基本的に、DBT_DEVICEARRIVAL
イベントをキャッチするとすぐに USB デバイスの監視を開始します。この後、すぐにモニターを停止する必要がありますDBT_DEVICEQUERYREMOVE
(そうしないと、サービスがデバイスの安全な取り出しを拒否します)。問題は、ツールが複数のデバイスを監視できる必要があるため、ユーザーがどのデバイスを取り出そうとしているかを判断できる必要があることです。DBT_DEVICEQUERYREMOVE
イベントにはDEV_BROADCAST_HANDLE
構造があることがわかりました。この構造から、どのデバイスが取り出されているかを特定できる有用な情報を抽出しようとしています。デバイスへのハンドルがあることが判明したので、システム関数を使用してドライブレターを抽出してみましたGetFinalPathNameByHandle
しかし、正しく動作していません (空の値を返します)。どうすればこれを行うことができますか?
どうもありがとうございました!