Compartir a través de


Colecciones de vínculos

Colección de vínculos como subcollection anidada dentro de una colección de nivel superior. Una colección de nivel superior puede tener cero o más colecciones de vínculos.

HidP_GetLinkCollectionNodes devuelve una matriz de colecciones de vínculos de la colección de nivel superior que contiene información sobre las colecciones de vínculos de una colección de nivel superior.

Una matriz de colecciones de vínculos describe todas las colecciones de vínculos contenidas en una colección de nivel superior. Cada colección de vínculos se representa mediante una estructura de HIDP_LINK_COLLECTION_NODE . Los nodos de vínculo de la matriz se vinculan de una manera que identifica su orden secuencial y jerárquico dentro de una colección de nivel superior. El primer elemento de una matriz de colección de vínculos representa una colección de nivel superior y los miembros restantes representan las colecciones de vínculos de la colección de nivel superior.

Mediante el seguimiento a través de los nodos de la matriz de conexión de vínculo, una aplicación en modo de usuario o un controlador en modo kernel puede determinar la organización y el uso de todas las colecciones de vínculos de una colección de nivel superior. Además, la aplicación o el controlador pueden organizar los controles mediante su colección de vínculos. Esto es posible porque las matrices de funcionalidad de botón y las matrices de funcionalidad de valor de una colección de nivel superior identifican la colección de vínculos que contiene cada uso de HID descrito por las matrices de funcionalidades.

En la ilustración siguiente se muestra un ejemplo de una colección de nivel superior que contiene cuatro colecciones de vínculos.

Diagrama que ilustra una colección de nivel superior que contiene cuatro colecciones de vínculos.

Como se indica en la ilustración anterior, las colecciones de vínculos se vinculan juntas en un orden de arriba a abajo y de izquierda a derecha (ABCD). En la tabla siguiente se indica, para cada colección de vínculos del ejemplo, los vínculos entre la colección de nivel superior y sus colecciones de vínculos.

Nodo de vínculo Parent Children First Child Siguiente elemento del mismo nivel
A Colección de nivel superior B, C B None
B A D D C
C A None None None
D B None None None

En una matriz de colecciones de vínculos, las definiciones siguientes contienen:

  • Primario: el elemento primario de una colección de vínculos es la colección situada justo encima de ella en la jerarquía superior a inferior de las colecciones. Las colecciones de vínculos tienen un elemento primario. El miembro primario de un nodo de vínculo especifica el índice de su elemento primario en la matriz de la colección de vínculos.

  • Elementos secundarios: una colección de vínculos es un elemento secundario de su elemento primario. Un elemento primario puede tener cero o más elementos secundarios. El miembro NumberOfChildren de un nodo de vínculo especifica el número de elementos secundarios que tiene un elemento primario.

  • Hermanos: los hijos de un padre son hermanos.

  • Siguiente hermano: los hermanos se ordenan de izquierda a derecha. El siguiente hermano de un mismo nivel es el relacionado inmediatamente a su derecha, si existe, en un conjunto de hermanos. El miembro NextSibling de un nodo de colección de vínculos especifica el índice en su siguiente elemento relacionado de la matriz de colecciones de vínculos. Si un nodo de colección de vínculos no tiene un siguiente elemento relacionado, NextSibling se establece en cero.

  • Primer niño: el primer niño es el elemento del mismo nivel más a la izquierda en un conjunto de hermanos. El miembro FirstChild de un nodo de colección de vínculos especifica el índice en su primer elemento secundario de la matriz de colecciones de vínculos. Si un nodo de colección de vínculos no tiene elementos secundarios, FirstChild se establece en cero.

Una aplicación o controlador puede determinar todos los elementos secundarios de una colección primaria, empezando por el primer elemento secundario del elemento primario, secuenciando a través de los elementos del mismo nivel del primer elemento secundario hasta que el miembro NextSibling de un nodo relacionado es cero.

En el código siguiente se muestra cómo usar un índice de nodo de colección de vínculos para buscar el primer elemento secundario de la colección de vínculos siete:

HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
 
Node1 = Collection[Collection[7].FirstChild];

Colecciones con alias

Los elementos delimitadores se pueden usar en un descriptor de informe para delimitar un conjunto de colecciones con alias. Cada colección con alias se representa mediante un nodo de colección de vínculos con alias. Un conjunto completo y único de n, n>=2, los nodos con alias se vinculan de la siguiente manera:

  • Los nodos con alias están en orden consecutivo en la matriz de recopilación de vínculos.

  • Los primeros nodos n-1 tienen su miembro IsAlias establecido en TRUE. El nodo que sigue inmediatamente a dicha secuencia tiene su miembro IsAlias establecido en FALSE. Este nodo finaliza la secuencia de nodos con alias. El uso asociado a este nodo es el uso preferido.

Una aplicación o controlador puede determinar qué colecciones se alias incrementando repetidamente el índice de matriz de una matriz de colecciones de vínculos para buscar estas secuencias.

Las matrices de funcionalidad de botón y las matrices de funcionalidad de valor identifican, para cada uso que describen, la colección de vínculos que contiene el uso. Si se aplica alias a una colección de vínculos, las matrices de funcionalidad especifican el uso preferido.