オーディオのプロパティの要求
Microsoft Windows Driver Model (WDM) オーディオ ドライバーのクライアントは、ドライバーがインスタンス化した KS フィルターとピンに、KS プロパティの要求を送信できます。 たとえば、ユーザー モード クライアントは、IOCTL_KS_PROPERTYの I/O 制御コードを使用して、DeviceIoControl 関数 (Microsoft Windows SDK のドキュメントを参照) を呼び出すことによって、KS プロパティ要求を送信することができます。 この関数は、プロパティ要求を含む IRP を、指定されたフィルターまたはピン オブジェクトに送信します。
オーディオ ドライバーは、プロパティ (KSPROPERTY_TYPE_GET、KSPROPERTY_TYPE_SET、および KSPROPERTY_TYPE_BASICSUPPORT) の取得、設定、および基本サポート要求をサポートしています。 詳細については、「オーディオ ドライバーのプロパティ セット」を参照してください。
クライアントは、フィルター プロパティ、ピン プロパティ、ノード プロパティの 3 種類のプロパティに対して要求を送信できます。 詳しくは、「フィルター、ピン、およびノード プロパティ」を参照してください。
フィルター プロパティ要求をフィルター オブジェクトに送信するときに、クライアントはインスタンス ハンドルでターゲット フィルターを指定します (「フィルター ファクトリ」を参照)。 同様に、ピンプロパティ要求をピン オブジェクトに送信するときは、ターゲット ピンがそのインスタンス ハンドルで指定されます (「ピン ファクトリ」を参照)。 どちらの種類の要求にも、次を指定する KSPROPERTY 構造体が含まれています。
プロパティ セットを識別するGUID
指定したプロパティ セット内のプロパティ項目を識別するインデックス
プロパティ要求の種類 (get、set、または basic-support) を示すフラグ
関連プロパティは、プロパティ セットを形成するためにまとめて収集されます。 特定のプロパティは、そのプロパティ セットと、そのセット内での位置を指定するインデックスによって識別されます。
ノード プロパティ要求には、KSPROPERTY 構造体とノード ID を組み合わせる KSNODEPROPERTY 構造体が含まれています。 プロパティ要求のターゲットは、ノード プロパティに応じて、フィルター インスタンスかピン インスタンスのいずれかです。
フィルターで特定のノード タイプのインスタンスを複数作成できる場合、要求のターゲットはピン ハンドルによって指定されます。 ハンドルは、ノード インスタンスが存在するデータ パスの先頭または末尾にあるピン インスタンスを識別します。 SUM ノードまたは MUX ノードを含むフィルターの場合 (「KSNODETYPE_SUM」と「KSNODETYPE_MUX」を参照)、次の規則が適用されます。
プロパティが、シンク (入力) ピンの下流にあり、SUM ノードまたは MUX ノードの上流にあるノードに属している場合、プロパティ要求はシンク ピンに送信されます。
プロパティが、SUM ノードまたは MUX ノードの下流にあり、ソース (出力) ピンの上流にあるノードに属している場合、プロパティ要求はソース ピンに送信されます。 (また、SUM ノードまたは MUX ノードのプロパティ要求も、ソース ピンに送信されます)。
これらの規則を使用すると、特定のデータ パス上の特定のノードを一意に識別できます。
ミキサー API を使用してデータ パス内のノードを走査する方法については、「カーネル ストリーミング トポロジからオーディオ ミキサー API への変換」を参照してください。