Partager via


Détermination de la broche de contrôle d’un nœud

Contrairement aux filtres et aux broches, les nœuds ne disposent pas d’un handle de fichier associé permettant aux applications de Ring 3 d’y accéder. Étant donné que les nœuds sont des composants internes au sein d’un filtre, ils existent quelque part entre les broches d’entrée et de sortie du filtre. Le fournisseur réseau doit déterminer la broche de filtre à utiliser, puis utiliser la broche pour accéder à un nœud. Cette broche de filtre est appelée broche de contrôle pour ce nœud. Pour déterminer la broche de contrôle pour chaque nœud dans la liste de connexions de modèle BDA d’un filtre, le fournisseur réseau interroge la propriété KSPROPERTY_BDA_CONTROLLING_PIN_ID du jeu de propriétés KSPROPSETID_BdaTopology . Le minidriver BDA appelle à son tour la fonction de prise en charge BdaPropertyGetControllingPinId pour chaque nœud. Dans cet appel, le minidriver passe un pointeur vers une structure KSP_BDA_NODE_PIN . Cette structure identifie la demande de propriété pour récupérer la broche de contrôle pour un type de nœud spécifique et une paire de broches d’entrée et de sortie du filtre. La bibliothèque de prise en charge BDA retourne l’identificateur de la broche de contrôle pour le type de nœud.

Un minidriver BDA n’intercepte généralement pas la propriété KSPROPERTY_BDA_CONTROLLING_PIN_ID. Le minidriver distribue automatiquement la fonction de prise en charge BdaPropertyGetControllingPinId à partir du jeu de propriétés KSPROPSETID_BdaTopology. Pour plus d’informations, consultez Détermination de la topologie des appareils BDA .

La bibliothèque de support est en mesure de déterminer l’identificateur de la broche de contrôle, car le minidriver BDA a fourni à la bibliothèque de support un pointeur vers la structure BDA_FILTER_TEMPLATE lorsque le minidriver BDA a commencé à fonctionner. Pour plus d’informations, consultez Démarrage d’un minidriver BDA . Un minidriver BDA indique à la bibliothèque de support BDA comment déterminer les broches de contrôle à l’aide des informations contenues dans BDA_FILTER_TEMPLATE. Ces informations incluent :

  • Tableau de connexions. Ce tableau est un tableau KSTOPOLOGY_CONNECTION qui fournit une représentation de toutes les connexions possibles entre les types de nœuds et de broches qui peuvent être effectuées dans un filtre ou entre un filtre et des filtres adjacents. Pour plus d’informations sur le tableau KSTOPOLOGY_CONNECTION, consultez Topologie de connexion de mappage .

  • Tableau de valeurs conjointes. Une jointure est un point de la topologie où une entrée se divise en un ou plusieurs chemins d’accès à différentes sorties, ou où une ou plusieurs entrées se joignent en un seul chemin de sortie. La valeur donnée à une jointure correspond à l’index d’un élément dans le tableau KSTOPOLOGY_CONNECTION. La plupart des topologies n’auront qu’une seule jointure.

  • Tableau de structures BDA_PIN_PAIRING . Ces structures identifient les types de broches d’entrée et de sortie, le nombre maximal d’instances de type entrée qui peuvent être créées sur le filtre et le nombre maximal d’instances de type sortie qui peuvent être créées sur le filtre. Ces structures contiennent également un pointeur vers le tableau de valeurs conjointes entre les broches d’entrée et de sortie. Pour plus d’informations sur le tableau BDA_PIN_PAIRING, consultez Démarrage d’un minidriver BDA .

L’illustration suivante montre comment la bibliothèque de support détermine la broche de filtre qui contrôle un nœud spécifique :

diagramme illustrant la façon dont la bibliothèque de support détermine la broche de filtre qui contrôle un nœud spécifique.