インターフェイス ハンドラー プラグイン
インターフェイス ハンドラー プラグインを記述して、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::Get と IKsPropertySet::Set を呼び出す Get メソッドと Set メソッドをクラスに実装できます。
または、その IKsObject インターフェイスへのポインターについて、外部不明のクエリを実行することもできます。 次に、IKsObject::KsGetObjectHandle を呼び出してファイル ハンドルを取得します。 次に、このファイル ハンドルを使用して KsSynchronousIoControlDevice を呼び出して、デバイスのプロパティを操作します。