私はドライバー開発の初心者です。ユーザーからいくつかの USB デバイス タイプを隠すために、Windows7 用の USB フィルター ドライバーの開発を開始しました。ドライバーを USB ハブに接続すると、IRP_MN_QUERY_DEVICE_RELATIONS をインターセプトできます。いくつかの質問を聞きたいんです:
1 - オンIRP_MN_QUERY_DEVICE_RELATIONS
( QueryDeviceRelations.Type
BusRelations です) へのポインターを受け取ります。DEVICE_RELATIONS struct
私が理解しているように、構造体の Objects 配列は PDO へのポインターを保持する必要があります。しかし、DO_BUS_ENUMERATED_DEVICE
フラグをテストすると (msdn から:オペレーティング システムは、各物理デバイス オブジェクト (PDO) でこのフラグを設定します。ドライバーはこのフラグを変更してはなりません。 ) 時々、このフラグがオンになっているのを確認したり、フラグがオフになったりします。 . これは、PDO が表示されることもあれば、FDO が表示されることもあるということですか? または、この問題の別の説明はありますか? を取得した場合PDEVICE_OBJECT
、それが PDO か FDO かをどのように確認できますか?
2 - ユーザーが何らかの USB デバイスを接続し、フィルター ドライバーが を処理する必要があるIRP_MN_QUERY_DEVICE_RELATIONS
場合、オブジェクト配列のどのデバイスがデバイスに接続されているか、どのデバイスが以前に接続されていたか、どのデバイスが非アクティブとしてマークされているかを判断するにはどうすればよいですか?
前もって感謝します。フェリックス。