Collections de liens
Collection de liens en tant que sous-collection imbriquée dans une collection de niveau supérieur. Une collection de niveau supérieur peut avoir zéro ou plusieurs collections de liens.
HidP_GetLinkCollectionNodes retourne le tableau de collection de liens d’une collection de niveau supérieur qui contient des informations sur les collections de liens d’une collection de niveau supérieur.
Tableau de collection de liens
Un tableau de collection de liens décrit toutes les collections de liens contenues dans une collection de niveau supérieur. Chaque collection de liens est représentée par une structure HIDP_LINK_COLLECTION_NODE . Les nœuds de liaison du tableau sont liés de manière à identifier leur ordre séquentiel et hiérarchique au sein d’une collection de niveau supérieur. Le premier élément d’un tableau de collection de liens représente une collection de niveau supérieur et les membres restants représentent les collections de liens de la collection de niveau supérieur.
En effectuant le suivi via les nœuds du tableau de connexions de liaison, une application en mode utilisateur ou un pilote en mode noyau peut déterminer la organization et l’utilisation de toutes les collections de liens dans une collection de niveau supérieur. En outre, l’application ou le pilote peut organiser les contrôles en fonction de leur collection de liens. Cela est possible, car les tableaux de fonctionnalités de bouton et les tableaux de capacité de valeur d’une collection de niveau supérieur identifient la collection de liens qui contient chaque utilisation HID décrite par les tableaux de fonctionnalités.
La figure suivante montre un exemple de collection de niveau supérieur qui contient quatre collections de liens.
Comme indiqué dans la figure précédente, les collections de liens sont liées entre elles dans un ordre de haut en bas et de gauche à droite (ABCD). Le tableau suivant indique, pour chaque collection de liens de l’exemple, les liens entre la collection de niveau supérieur et ses collections de liens.
Nœud de liaison | Parent | Children | First Child | Frère suivant |
---|---|---|---|---|
A | Collection de niveau supérieur | B, C | B | None |
B | A | D | D | C |
C | Un | None | None | None |
D | B | None | None | None |
Dans un tableau de collection de liens, les définitions suivantes contiennent :
Parent : le parent d’une collection de liens est la collection immédiatement au-dessus d’elle dans la hiérarchie de haut en bas des collections. Les collections de liens ont un parent. Le membre Parent d’un nœud de lien spécifie l’index de son parent dans le tableau de collection de liens.
Enfants : une collection de liens est un enfant de son parent. Un parent peut avoir zéro enfant ou plus. Le membre NumberOfChildren d’un nœud de lien spécifie le nombre d’enfants dont dispose un parent.
Frère : les enfants d’un parent sont frères.
Frère suivant : Les frères et sœurs sont classés de gauche à droite. Le frère suivant d’un frère est le frère immédiatement à sa droite, le cas échéant, dans un ensemble de frères. Le membre NextSibling d’un nœud de collection de liens spécifie l’index de son frère suivant dans le tableau de collection de liens. Si un nœud de collection de liens n’a pas de frère suivant, NextSibling est défini sur zéro.
Premier enfant : le premier enfant est le frère le plus à gauche d’un ensemble de frères. Le membre FirstChild d’un nœud de collection de liens spécifie l’index de son premier enfant dans le tableau de collection de liens. Si un nœud de collection de liens n’a pas d’enfants, FirstChild est défini sur zéro.
Une application ou un pilote peut déterminer tous les enfants d’une collection parente en commençant par le premier enfant du parent, en séquenceant les frères du premier enfant jusqu’à ce que le membre NextSibling d’un nœud frère soit égal à zéro.
Le code suivant montre comment utiliser un index de nœud de collection de liens pour rechercher le premier enfant de la collection de liens sept :
HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
Node1 = Collection[Collection[7].FirstChild];
Collections avec alias
Les éléments délimiteurs peuvent être utilisés dans un descripteur de rapport pour délimiter un ensemble de collections avec alias. Chaque collection avec alias est représentée par un nœud de collection de liens avec alias. Un ensemble complet et unique de nœuds sous alias n, n>=2 est lié entre eux de la manière suivante :
Les nœuds alias sont dans l’ordre consécutif dans le tableau de collection de liens.
Les premiers nœuds n-1 ont leur membre IsAlias défini sur TRUE. Le nième nœud suivant immédiatement une telle séquence a son membre IsAlias défini sur FALSE. Ce nœud met fin à la séquence de nœuds avec alias. L’utilisation associée à ce nœud est l’utilisation préférée.
Une application ou un pilote peut déterminer quelles collections sont alias en incrémentant à plusieurs reprises l’index de tableau d’un tableau de collection de liens pour rechercher de telles séquences.
Les tableaux de fonctionnalités de bouton et lestableaux de fonctionnalités de valeur identifient, pour chaque utilisation qu’ils décrivent, la collection de liens qui contient l’utilisation. Si une collection de liens est sous alias, les tableaux de fonctionnalités spécifient l’utilisation préférée.