Tableaux de fonctionnalités de bouton
Un tableau de fonctionnalités de bouton contient des informations sur les utilisations de boutons prises en charge par une collection de niveau supérieur pour un type spécifique de rapport HID. Les informations sur la fonctionnalité d’une collection sont contenues dans sa structure HIDP_CAPS.
Une application en mode utilisateur ou un pilote en mode noyau utilise l’une des routines de prise en charge HIDClass suivantes pour obtenir des informations sur les fonctionnalités de bouton :
HidP_GetButtonCaps retourne un tableau de fonctionnalités de bouton décrivant toutes les utilisations de bouton contenues dans un type de rapport spécifié.
HidP_GetSpecificButtonCaps filtre les informations de fonctionnalité de bouton qu’il retourne par une page d’utilisation spécifiée par l’appelant, un ID d’utilisation et une collection de liens.
Un tableau de fonctionnalités de bouton contient HIDP_BUTTON_CAPS structures, chacune d’elles contenant les informations suivantes sur une plage d’utilisation ou d’utilisation HID :
Page d’utilisation pour l’utilisation ou la plage d’utilisation
ID de rapport du rapport qui contient les données du bouton
L’ID d’utilisation ou la plage d’utilisation
Indicateur qui indique si une utilisation est une utilisation avec alias
Collection de liens qui contient la plage d’utilisation ou d’utilisation
Les descripteurs de chaîne et les désignateurs associés à la plage d’utilisation ou d’utilisation (voir Élément d’index du désignateur et Élément Index de chaîne)
Index de données attribués par l’analyseur HID à la plage d’utilisation ou d’utilisation
En général, les conditions suivantes sont remplies pour toutes les utilisations décrites par un tableau de fonctionnalités de bouton :
Chaque structure de fonctionnalité représente une seule plage d’utilisation ou d’utilisation associée à une variable main élément ou à un tableau main élément.
Les utilisations avec alias peuvent être utilisées avec une variable main élément. Une utilisation associée à un élément de tableau ne peut pas être associée à un alias. Une plage d’utilisation ne peut pas être alias.
L’analyseur HID utilise uniquement le nombre minimal d’utilisations requis pour affecter une utilisation à chaque bouton. L’analyseur attribue des utilisations dans l’ordre dans lequel elles sont spécifiées dans un descripteur de rapport. Les utilisations dans un descripteur de rapport qui ne sont pas obligatoires sont ignorées. Le tableau de fonctionnalités de bouton ne contient pas d’informations sur les utilisations ignorées.
Si le nombre d’utilisations spécifié pour un élément de variable est inférieur au nombre de boutons dans l’élément, le tableau de fonctionnalités ne contient qu’une seule structure de fonctionnalité qui décrit l’utilisation d’un bouton (la dernière utilisation spécifiée dans le descripteur de rapport pour la variable main élément). Toutefois, consultez Tableau des valeurs d’utilisation pour plus d’informations sur les valeurs d’utilisation dont le nombre de rapports est supérieur à un.
L’analyseur HID affecte un index de données unique à chaque utilisation décrite dans le tableau de fonctionnalités.
Les rubriques suivantes expliquent comment les structures de capacité sont organisées et définies dans un tableau de fonctionnalités de bouton :
- Utilisations des boutons dans un élément de main variable
- Utilisations des boutons dans un tableau main élément
Utilisations des boutons dans un élément de main variable
Chaque utilisation ou plage d’utilisation spécifiée dans un descripteur de rapport est décrite par sa propre structure de fonctionnalités dans un tableau de fonctionnalités de bouton.
Le membre IsAlias des structures de capacité est utilisé pour spécifier un ensemble de n utilisations avec alias comme suit :
- IsAlias est défini sur TRUE dans les premières structures de capacité n-1 ajoutées au tableau de capacités. IsAlias défini sur FALSE dans la nièmestructure de capacité. L’utilisation préférée est la dernière utilisation avec alias dans la séquence.
Une application ou un pilote peut déterminer les utilisations de boutons qui sont alias en recherchant ces séquences.
Le tableau suivant récapitule un exemple pour trois utilisations avec alias.
Ordre d’utilisation alias dans un descripteur de rapport | Ordre d’utilisation dans un tableau de fonctionnalités | Valeur de membre IsAlias |
---|---|---|
utilisation 1 | utilisation 3 | TRUE |
utilisation 2 | utilisation 2 | TRUE |
utilisation 3 | utilisation 1 | FALSE |
Pour plus d’informations sur la façon dont les utilisations et les index de données sont référencés de manière croisée, consultez Indices de données.
Utilisations des boutons dans un tableau main élément
Chaque plage d’utilisation ou d’utilisation d’un tableau de boutons main élément spécifié dans un descripteur de rapport est décrite par sa propre structure de fonctionnalités dans un tableau de fonctionnalités de bouton. L’ordre dans lequel les structures de capacité sont ajoutées à un tableau de fonctionnalités est l’inverse de l’ordre dans lequel les utilisations sont spécifiées pour un élément main.
L’analyseur HID affecte un index de données à chaque utilisation associée à l’élément de tableau dans l’ordre dans lequel les utilisations sont spécifiées dans un descripteur de rapport. Par exemple, le tableau suivant montre la correspondance entre un ensemble d’utilisations, tel que spécifié dans un descripteur de rapport, et les utilisations et les index de données, comme spécifié dans le tableau de fonctionnalités. (Dans ce tableau, n est le premier index de données que l’analyseur affecte à la première utilisation associée à l’élément de tableau.)
Ordre d’utilisation dans le descripteur de rapport | Ordre d’utilisation dans le tableau de fonctionnalités | DataIndex ou de DataIndexMin à DataIndexMax |
---|---|---|
utilisation 1 | plage d’utilisation 2 | de n+7 à n+8 |
plage d’utilisation 1 (avec 4 utilisations) | utilisation 2 | n+5 |
utilisation 2 | plage d’utilisation 1 | de n+1 à n+4 |
plage d’utilisation 2 (avec 2 utilisations) | utilisation 1 | n |