KSTOPOLOGY_CONNECTION構造体 (ks.h)
KSTOPOLOGY_CONNECTION構造体は、カーネル ストリーミング フィルター内の単一のデータ パス接続を記述します。
PCCONNECTION_DESCRIPTORは、KSTOPOLOGY_CONNECTIONのエイリアスです。
構文
typedef struct {
ULONG FromNode;
ULONG FromNodePin;
ULONG ToNode;
ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;
メンバーズ
FromNode
接続の上流側のノードのノード ID を指定します。 接続のこの終了が、ノード上の論理ピンではなく、フィルター上の外部ピンである場合は、このメンバーを null ノード ID 値に設定KSFILTER_NODE。
FromNodePin
接続の上流端のピン ID を指定します。 **FromNode **がKSFILTER_NODEの場合、接続のこの端のピンはフィルターの外部ピンです。 そうでない場合、この端のピンは内部ノードの論理ピンです。
ToNode
接続のダウンストリーム側のノードのノード ID を指定します。 接続のこの終了が、ノード上の論理ピンではなく、フィルター上の外部ピンである場合は、このメンバーを null ノード ID 値に設定KSFILTER_NODE。
ToNodePin
接続のダウンストリームエンドのピン ID を指定します。 ToNode がKSFILTER_NODE場合、接続のこの端のピンはフィルターの外部ピンです。 そうでない場合、この端のピンは内部ノードの論理ピンです。
備考
KSTOPOLOGY_CONNECTIONは、外部ピン、内部ノード、または外部ピンと内部ノードの間のフィルター内の単一の接続を表します。
ストリーミング ドライバーは、KSPROPERTY_TOPOLOGY_CONNECTIONS get-property 要求に応答して、KSTOPOLOGY_CONNECTION構造体の配列を返します。
2 つの外部ピン間の接続を表す場合は、FromNode と ToNode の両方を KSFILTER_NODE に設定し、FromNodePin と ToNodePin をそれぞれのピンのピンタイプ ID にする必要があります。 ピンの種類 ID の説明については、KSPROPSETID_Pin を参照してください。
それ以外の場合 、FromNodePin または ToNodePin 接続の論理入力ピンまたは発信ピンを表します。 論理ピン番号は、ノード間の接続を記述するためにのみ使用されます。KSPROPERTY_TOPOLOGY_CONNECTIONSプロパティの外部には存在しません。
PCCONNECTION_DESCRIPTOR
PCCONNECTION_DESCRIPTOR構造体名は、KSTOPOLOGY_CONNECTIONのエイリアスです。 IMiniport::GetDescription() のPCCONNECTION_DESCRIPTORは、ミニポートによって実装されるフィルターのトポロジ内のノード接続の説明です。 portcls.h ヘッダーでは、次のように定義されています。
typedef KSTOPOLOGY_CONNECTION PCCONNECTION_DESCRIPTOR, *PPCCONNECTION_DESCRIPTOR;
パラメーターの説明では、PCFILTER_NODE はKSFILTER_NODEではなくPCCONNECTION_DESCRIPTORで使用されることに注意してください。
PCCONNECTION_DESCRIPTOR 構造体は、フィルター内の 1 つの接続を指定します。 接続には、次のいずれかを指定できます。
2 つの内部ノード間の接続
内部ノードとフィルター上のピンの間の接続
フィルター上の 2 つのピン間の接続
最後の種類の接続は、フィルターの入力ピンがデータを同じフィルターの出力ピンに直接ストリーミングするときに発生します。
アダプター ドライバーは、構造体の配列を使用して、フィルターの内部トポロジを指定します。
データ ストリームは、FromNode エンドから接続の ToNode エンドに流れます。
PCCONNECTION_DESCRIPTOR 構造を使用するために、ドライバー ライターはフィルター内のノードに "論理" ピンを割り当てます。 これらの "ピン" はノード上の接続ポイントであり、フィルターが他のフィルターに接続するために使用する外部ピンに似ています。 ただし、ノード上の論理ピンは、フィルター内の接続を指定するためにのみ使用されます。
1 つの入力と 1 つの出力を持つ単純なノードでは、通常、入力ピンと出力ピンがそれぞれ 1 と 0 に番号が付けられます。 慣例により、この番号付けは、データ フローではなく IRP フローの方向に基づいています。
より複雑なノードでは、クライアントが特定のピンへの機能の割り当てをより簡単に判断できるようにするために、標準化されたピン ID が必要になる場合があります。 たとえば、KSNODETYPE_ACOUSTIC_ECHO_CANCEL ノードでは、その 4 つのピンに標準化された ID が使用されます。
接続の一方の端のピンが、ノード上の論理ピンではなく、フィルターの入力または出力ピンである場合は、FromNodeまたは ToNode メンバー (指定する接続の終了に応じて) を null ノード ID 値に設定 PCFILTER_NODE。
フィルター内のノード上の接続ポイントのみを記述するために使用される論理ピンと、フィルターが他のフィルターへの接続に使用する外部ピンを混同しないようにします。 論理ピンは、PCCONNECTION_DESCRIPTOR 構造の外部で使用されることはほとんどありません。 このドキュメントでは、ピン という用語は、特に明記されていない限り、ノード上の論理ピンではなく、KS フィルター上のピンを指します。
IMiniport::GetDescription メソッドは、PCCONNECTION_DESCRIPTOR 配列へのポインターを含む PCFILTER_DESCRIPTOR 構造体を出力します。
PCCONNECTION_DESCRIPTOR 構造の使用方法を示す簡単なコード例については、「フィルター トポロジのの公開」を参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ks.h (Ks.h を含む) |
関連項目
BdaPropertyTemplateConnections