KS のプロパティ
プロパティは、フィルターやピンなどのカーネル ストリーミング オブジェクトに属する機能または制御状態の設定を表します。 カーネル ストリーミング ミニドライバーのクライアントは、ミニドライバーがインスタンス化したフィルターとピンに取得および設定プロパティ要求 (KSPROPERTY_TYPE_GET と KSPROPERTY_TYPE_SET) を送信できます。 関連するプロパティのグループは、プロパティ セットと呼ばれます。
個々のプロパティを取得または設定するために、ユーザーモード クライアントは dwIoControlCode パラメーターを IOCTL_KS_PROPERTY に設定して Win32 関数 DeviceIoControl を呼び出します。 DeviceIoControl については、Microsoft Windows SDK のドキュメントにて説明されています。 カーネルモード クライアントは KsSynchronousDeviceControl を呼び出す必要があります。
入力バッファーは、KSPROPERTY 構造体か、KSPROPERTY 構造体と要求に関連するその他の情報を含むラッパーです。 この呼び出しに応答して、オペレーティング システムは、クラス ドライバーに IRP をディスパッチします。
クラス ドライバーは、結果として得られる IRP を受け取ると、KsPropertyHandler を呼び出します。 クラス ドライバーには、プロパティ要求の詳細を識別する KSPROPERTY 構造体のアドレスを呼び出しパラメーターとして含まれます。 プロパティ要求は、クラス ドライバー レベルで自動的に処理されるか、ミニドライバーによって提供されるハンドラーによって処理されます。 クラス ドライバーによって処理されるプロパティ セットとミニドライバーで提供されるハンドラーを必要とするプロパティ セットなど、参照情報については、「カーネル ストリーミング プロパティ セット」を参照してください。 ミニドライバーは、クラス ドライバーによって既定で処理されるプロパティのコールバックを提供することで、クラス ドライバー ハンドラーをオーバーライドまたは拡張できます。
ミニドライバーがこのプロパティのハンドラーを提供している場合、KsPropertyHandler は、適切なミニドライバー指定のコールバックに要求を渡します。
ミニドライバーは、KSPROPERTY_ITEM 型の構造体のプロパティ サポート コールバックへのポインターを提供します。 ミニドライバーは、関連する KSPROPERTY_ITEM 構造体の配列を KSPROPERTY_SET 構造体にグループ化します。 クラス ドライバー モデルによって、ミニドライバーがプロパティ セット データをクラス ドライバーで使用できるようにするためのメソッドが若干異なります。 クラス ドライバー固有の情報は、カーネル ストリーミングのリンク先をご覧ください。
ミニドライバーは、KSPROPERTY_ITEM 構造体内の KSPROPERTY_VALUES 構造体へのポインターも提供します。 KSPROPERTY_VALUES 構造体には、KSPROPERTY_MEMBERSLIST 構造体の配列が含まれています。 ここで、ミニドライバーは、プロパティの許容される値のサイズと種類を指定します。 各 KSPROPERTY_MEMBERSLIST 構造体にはヘッダー メンバーが含まれています。ミニドライバーがサポートするプロパティの有効な範囲または値を指定する方法については、「KSPROPERTY_MEMBERSHEADER」を参照してください。 このメカニズムの実装は、Microsoft Windows Driver Kit (WDK) の Testcap サンプルでも確認できます。
プロパティの許容される値のサイズと型を報告するために、クラス ドライバーは、クライアントからの KSPROPERTY_TYPE_BASICSUPPORT 要求に応答して KSPROPERTY_DESCRIPTION 構造体を返します。
クラス ドライバーは、KSPROPERTY_MEMBERSHEADER 構造体の一覧を KSPROPERTY_DESCRIPTION 構造体に追加できます。