WPD (ポータブル デバイス) クラス用の KMDF フィルター ドライバーを作成しています ( http://www.osronline.com/article.cfm?article=446の例に基づく)。ドライバーの目的は、デバイスへのブロック書き込み要求です。
WPD クラスの UpperFilters のレジストリに設定し、Samsung Galaxy S3 をプラグインすると、デバイスに送信された WPD IOCTL をキャッチできました (現在、ドライバーは要求を次のドライバーに転送するだけです)。ここまでは順調ですね。
次に、Samsung Kies をインストールしてフィルター ドライバーがまだ機能するかどうかを確認しましたが、デバイスを接続すると、Windows が「Samsung Mobile MTP Device」をインストールしようとして失敗しました。何度か試しました(ドライバーがまだインストールされていることを確認しましたが、これはドライバーが見つからないという問題ではありません)。ドライバーを UpperFilters から削除すると、デバイスがインストールされ、機能していました。フィルターを元に戻すと、デバイスが起動しませんでした (コード 10)。Windbg を使用すると、ドライバーが起動し、デバイスが追加され、ドライバーがアンロードされることがわかります (途中で何が起こるかわかりません...)
。それを下位フィルターとして配置しようとすると、再び正常に機能しました。
ネットを検索しているときに、WDK ではなく WDM を使用している場合にも発生することがわかりました。
この場合、UpperFilter を配置するとデバイスの起動に失敗するのはなぜですか?
それを解決する方法はありますか?