Windowsでフィルタドライバを開発しています。ドライバはデバイス通知を受信するためにPnP対応であり、IOCTLを介して付随するusermodeサービスと通信する制御デバイスも作成します。要求に応じてプラグアンドプレイフィルタドライバを停止する方法はありますか?
私の知る限り、運転手の生涯はPnPマネージャによって制御されています。ドライバは、その時点までにドライバによって所有されているデバイスオブジェクトはないので、次のデバイス通知を処理した後にアンロードされます。
私がする必要があるのは、次のデバイスが到着/出発するときではなく、要求に応じてドライバを停止することです。これまでのところ、私はそれが動作するはずではないと思っています。一方、要求に応じてフィルタドライバをアンロードすることを禁じているロジックはありません。私はSTOPコントロールの送信を調査しましたが、PnPドライバでどのように処理できるかはわかりません(レガシードライバの場合のみ)。
今、私はすべてのデバイスオブジェクトを閉じる特別なIOCTLハンドラを追加するつもりです。しかし、それだけでは不十分です。ドライバーの生涯はPnPマネージャーによって管理されていますので、何とかマネージャーの「注意を」ドライバーに伝える必要があります。どんな助けもありがとう!
不思議なことに、私はドライバを停止可能にして、アンインストールで再起動する必要がないようにする必要があります。