Partager via


structure KSTOPOLOGY_CONNECTION (ks.h)

La structure KSTOPOLOGY_CONNECTION décrit une connexion de chemin d’accès aux 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 à la fin en amont de la connexion. Si cette fin de 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 null node-ID, KSFILTER_NODE.

FromNodePin

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

ToNode

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

ToNodePin

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

Remarques

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

Un pilote de diffusion en continu retourne un tableau de structures KSTOPOLOGY_CONNECTION en réponse à une requête get-property KSPROPERTY_TOPOLOGY_CONNECTIONS.

Lorsque vous représentez une connexion entre deux broches externes, les FromNode et les ToNode doivent être définis sur KSFILTER_NODE, et les 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 broche.

Sinon, FromNodePin ou ToNodePin représentent une broche entrante ou sortante logique pour la connexion. Les numéros de broche logique 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 la 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 circule du FromNode fin vers la ToNode fin 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 broches 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.

Des nœuds plus complexes peuvent nécessiter des ID de broche standardisés pour 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 l’épingle à 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 l'FromNode ou membre ToNode (selon la fin de la connexion que vous spécifiez) sur la valeur null node-ID, PCFILTER_NODE.

Évitez les broches logiques déroutantes, 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 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 épingle 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 Exposing Filter Topology.

Exigences

Exigence Valeur
d’en-tête ks.h (include Ks.h)

Voir aussi

BdaPropertyTemplateConnections

KSPROPERTY_TOPOLOGY_CONNECTIONS

KSPROPSETID_Pin

KSPROPSETID_Topology