structure KSTOPOLOGY_CONNECTION (ks.h)

La structure KSTOPOLOGY_CONNECTION décrit une connexion de chemin de données unique à l’intérieur d’un filtre de diffusion en continu du noyau.

PCCONNECTION_DESCRIPTOR est un alias pour KSTOPOLOGY_CONNECTION.

Syntaxe

typedef struct {
  ULONG FromNode;
  ULONG FromNodePin;
  ULONG ToNode;
  ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;

Membres

FromNode

Spécifie l’ID de nœud du nœud à l’amont fin de la connexion. Si cette fin de la connexion est une broche externe sur le filtre, et non une broche logique sur un nœud, m définissez ce membre sur la valeur ID de nœud null, KSFILTER_NODE.

FromNodePin

Spécifie l’ID de broche pour la amont fin de la connexion. Si **FromNode **est KSFILTER_NODE, la broche à cette extrémité de la connexion est une broche externe sur le filtre. Si ce n’est pas le cas, l’épingle de cette extrémité est une broche logique sur un nœud interne.

ToNode

Spécifie l’ID de nœud du nœud à l’extrémité aval de la connexion. Si cette fin de la connexion est une broche externe sur le filtre, et non une broche logique sur un nœud, définissez ce membre sur la valeur ID de nœud null, KSFILTER_NODE.

ToNodePin

Spécifie l’ID de broche pour l’extrémité en aval de la connexion. Si ToNode est KSFILTER_NODE, la broche à cette extrémité de la connexion est une broche externe sur le filtre. Si ce n’est pas le cas, l’épingle de cette extrémité est une broche logique sur un nœud interne.

Remarques

KSTOPOLOGY_CONNECTION représente une connexion unique à l’intérieur d’un filtre, entre des broches externes, des nœuds internes ou une broche externe et un nœud interne.

Un pilote de streaming retourne un tableau de structures KSTOPOLOGY_CONNECTION en réponse à une demande get-property KSPROPERTY_TOPOLOGY_CONNECTIONS .

Lorsque vous représentez une connexion entre deux broches externes, FromNode et ToNode doivent être définis sur KSFILTER_NODE, et FromNodePin et ToNodePin doivent être l’ID de type de broche des broches respectives. Consultez KSPROPSETID_Pin pour obtenir une description des ID de type de broche.

Sinon, FromNodePin ou ToNodePin représentent une broche entrante ou sortante logique pour la connexion. Les numéros d’épingle logiques sont utilisés uniquement pour décrire une connexion entre les nœuds ; ils n’ont pas d’existence en dehors de la propriété KSPROPERTY_TOPOLOGY_CONNECTIONS.

PCCONNECTION_DESCRIPTOR

Le nom de structure PCCONNECTION_DESCRIPTOR est un alias pour KSTOPOLOGY_CONNECTION. PCCONNECTION_DESCRIPTOR pour IMiniport ::GetDescription() est une description d’une connexion de nœud dans la topologie du filtre implémenté par le miniport. Il est défini comme suit dans l’en-tête portcls.h :

typedef KSTOPOLOGY_CONNECTION PCCONNECTION_DESCRIPTOR, *PPCCONNECTION_DESCRIPTOR;

Notez que pour les descriptions des paramètres, le PCFILTER_NODE est utilisé avec PCCONNECTION_DESCRIPTOR au lieu de KSFILTER_NODE.

La structure PCCONNECTION_DESCRIPTOR spécifie une connexion unique à l’intérieur d’un filtre. La connexion peut être l’une des suivantes :

  • Connexion entre deux nœuds internes

  • Connexion entre un nœud interne et une broche sur le filtre

  • Connexion entre deux broches sur le filtre

Le dernier type de connexion se produit lorsqu’une broche d’entrée sur un filtre diffuse des données directement vers une broche de sortie sur le même filtre.

Un pilote d’adaptateur utilise un tableau de structures pour spécifier la topologie interne d’un filtre.

Le flux de données passe de l’extrémité FromNode à l’extrémité ToNode de la connexion.

Pour utiliser la structure PCCONNECTION_DESCRIPTOR , l’enregistreur de pilotes affecte des broches « logiques » aux nœuds à l’intérieur du filtre. Ces « broches » sont des points de connexion sur les nœuds et sont analogues aux broches externes que le filtre utilise pour se connecter à d’autres filtres. Toutefois, les broches logiques sur les nœuds sont utilisées uniquement pour spécifier les connexions à l’intérieur du filtre.

Un nœud simple avec une seule entrée et une seule sortie numérote généralement ses épingles d’entrée et de sortie un et zéro, respectivement. Par convention, cette numérotation est basée sur la direction du flux IRP plutôt que sur le flux de données.

Les nœuds plus complexes peuvent nécessiter des ID de broche standardisés afin de permettre aux clients de déterminer plus facilement l’attribution de fonctions à des broches spécifiques. Par exemple, le nœud KSNODETYPE_ACOUSTIC_ECHO_CANCEL utilise des ID standardisés pour ses quatre broches.

Lorsque la broche d’une extrémité d’une connexion est une broche d’entrée ou de sortie sur le filtre plutôt qu’une broche logique sur un nœud, définissez le membre FromNode ou ToNode (en fonction de l’extrémité de la connexion que vous spécifiez) sur la valeur ID de nœud null, PCFILTER_NODE.

Évitez de confondre les broches logiques, qui sont utilisées uniquement pour décrire les points de connexion sur les nœuds d’un filtre, avec les broches externes utilisées par les filtres pour se connecter à d’autres filtres. Les broches logiques sont rarement utilisées en dehors de la structure PCCONNECTION_DESCRIPTOR . Dans ce document, le terme broche fait référence à une broche sur un filtre KS plutôt qu’à une broche logique sur un nœud, sauf indication contraire.

La méthode IMiniport ::GetDescription génère une structure PCFILTER_DESCRIPTOR qui contient un pointeur vers un tableau PCCONNECTION_DESCRIPTOR .

Pour obtenir un exemple de code simple qui montre comment la structure PCCONNECTION_DESCRIPTOR est utilisée, consultez Exposition de la topologie de filtre.

Configuration requise

Condition requise Valeur
En-tête ks.h (inclure Ks.h)

Voir aussi

BdaPropertyTemplateConnections

KSPROPERTY_TOPOLOGY_CONNECTIONS

KSPROPSETID_Pin

KSPROPSETID_Topology