ノードの制御ピンの決定
フィルターやピンとは異なり、ノードには、リング 3 のアプリケーションがアクセスできる関連ファイル ハンドルがありません。 ノードはフィルターの内部コンポーネントであるため、フィルターの入力ピンと出力ピンの間のどこかに存在します。 ネットワーク プロバイダーは、どのフィルター ピンを使用するかを決定し、そのピンを使用してノードにアクセスする必要があります。 このフィルター ピンは、そのノードの制御ピンと呼ばれます。 フィルターの BDA テンプレート接続リスト内の各ノードの制御ピンを決定するために、ネットワーク プロバイダーはKSPROPSETID_BdaTopologyプロパティ セットのKSPROPERTY_BDA_CONTROLLING_PIN_IDプロパティをクエリします。 BDA ミニドライバーは、各ノードのBdaPropertyGetControllingPinIdサポート関数を呼び出します。 この呼び出しでは、ミニドライバーは、KSP_BDA_NODE_PIN構造体へのポインターを渡します。 この構造体は、特定のノード タイプの制御ピンと、フィルターの入力ピンと出力ピンのペアを取得するためのプロパティ要求を識別します。 BDA サポート ライブラリは、ノードタイプの制御ピンの識別子を返します。
BDA ミニドライバーは通常、KSPROPERTY_BDA_CONTROLLING_PIN_ID プロパティをインターセプトしません。 ミニドライバーは、KSPROPSETID_BdaTopology プロパティ セットからBdaPropertyGetControllingPinIdサポート関数を自動的にディスパッチします。 詳細については、 「BDA デバイス トポロジの決定」 を参照してください。
BDA ミニドライバが動作開始時にサポートライブラリにBDA_FILTER_TEMPLATE構造体へのポインタを提供したため、サポート ライブラリは、制御ピンの識別子を決定するすべての作業を行うことができます。 詳細については、「BDA ミニドライバーの起動」を参照してください。 BDA ミニドライバーは、BDA_FILTER_TEMPLATE に含まれる情報を介して制御ピンを決定する方法を BDA サポート ライブラリに通知します。 この情報には、以下が含まれます。
接続の配列。 この配列は、フィルター内またはフィルターと隣接するフィルターの間で作成できるノード タイプとピン タイプの間のすべての可能な接続を表すKSTOPOLOGY_CONNECTION 配列です。 KSTOPOLOGY_CONNECTION 配列の詳細については、 「接続トポロジ のマッピング」を参照してください。
ジョイント値の配列 ジョイントは、1 つの入力が異なる出力への 1 つ以上のパスに分割されるか、1 つ以上の入力が 1 つの出力パスに結合されるトポロジー内のポイントです。 ジョイントに与えられる値は、KSTOPOLOGY_CONNECTION 配列内の要素のインデックスに対応します。 ほとんどのトポロジでは、ジョイントが 1 つだけあります。
BDA_PIN_PAIRING構造体の配列。 これらの構造体は、入力ピン タイプと出力ピン タイプ、フィルターで作成できる入力型インスタンスの最大数、およびフィルターで作成できる出力型インスタンスの最大数を識別します。 これらの構造体には、入力ピンと出力ピンの間のジョイント値の配列へのポインターも含まれています。 BDA_PIN_PAIRING 配列の詳細については、「 BDA ミニドライバー の起動」を参照してください。
次の図は、サポート ライブラリが特定のノードを制御するフィルター ピンを決定する方法を示しています。