4

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

どうもありがとうございました!

4

1 に答える 1

1

答えは私が思っていたよりも少しわかりにくいように思われるので、RegisterDeviceNotification興味のある各デバイスを呼び出し、そのハンドルでデバイスを識別します。登録を作成するので、どのドライブ文字がどの通知ハンドルにマップされているかがわかります。

于 2012-12-14T14:36:22.907 に答える