Share via


インターフェイス ハンドラー プラグイン

インターフェイス ハンドラー プラグインを記述して、KS ミニドライバーによって公開されるドライバー固有のプロパティ セットへのプログラムによるユーザー モード アクセスを提供できます。 まず、「KS プロキシ プラグインの登録」の説明に従ってオブジェクトを登録します。

インターフェイス プラグイン クラスは CUnknown から取得できます。

class CMyPluginInterface : public CUnknown
{
public:
    // creation method
    static CUnknown* CALLBACK CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
private:
 CMyPluginInterface( IKsPropertySet* piKsPropertySet );
    IKsPropertySet* m_piKsPropertySet;
};

インターフェイス プラグインは、作成時に MS 提供の KS プロキシを使用して集計する、ベンダーが提供する COM インターフェイスです。

具体的には、プラグインの CreateInstance メソッドは、外部不明として KS プロキシへのポインターを受け取ります。

その後、MS 提供の IKsPropertySet インターフェイスへのポインターについて、この外部オブジェクトに対してクエリを実行できます。

hResult = piOuterUnknown->QueryInterface(
                __uuidof( piKsPropertySet ),
                 &piKsPropertySet );

次に、CreateInstance からインターフェイスのコンストラクターを呼び出して、インターフェイス ハンドラー オブジェクトのインスタンスを作成します。

コンストラクターの呼び出しでパラメーターとして IKsPropertySet へのポインターを指定します。 その後、コンストラクターは iKsPropertySet へのポインターを、前の宣言の m_piKsPropertySet メンバーとして保持します。

これで、ドライバーによって公開されるプロパティを操作するために、それぞれ IKsPropertySet::GetIKsPropertySet::Set を呼び出す Get メソッドと Set メソッドをクラスに実装できます。

または、その IKsObject インターフェイスへのポインターについて、外部不明のクエリを実行することもできます。 次に、IKsObject::KsGetObjectHandle を呼び出してファイル ハンドルを取得します。 次に、このファイル ハンドルを使用して KsSynchronousIoControlDevice を呼び出して、デバイスのプロパティを操作します。