Collegamenti alle raccolte
Raccolta di collegamenti come sottocollection annidata all'interno di una raccolta di livello superiore. Una raccolta di primo livello può avere zero o più raccolte di collegamenti.
HidP_GetLinkCollectionNodes restituisce una matrice di raccolta di collegamenti di primo livello che contiene informazioni sulle raccolte di collegamenti di livello superiore.
Matrice di raccolte di collegamenti
Una matrice di raccolte di collegamenti descrive tutte le raccolte di collegamenti contenute in una raccolta di livello superiore. Ogni raccolta di collegamenti è rappresentata da una struttura HIDP_LINK_COLLECTION_NODE . I nodi di collegamento della matrice sono collegati in modo da identificare il relativo ordine sequenziale e gerarchico all'interno di una raccolta di livello superiore. Il primo elemento di una matrice di raccolta collegamenti rappresenta una raccolta di primo livello e i membri rimanenti rappresentano le raccolte di collegamenti della raccolta di primo livello.
Tracciando i nodi nella matrice di connessione collegamento, un driver in modalità utente o in modalità kernel può determinare l'organizzazione e l'utilizzo di tutte le raccolte di collegamenti in una raccolta di livello superiore. Inoltre, l'applicazione o il driver possono organizzare i controlli tramite la raccolta di collegamenti. Ciò è possibile perché le matrici di funzionalità e le funzionalità del pulsante di un insieme di livello superiore identificano la raccolta di collegamenti che contiene ogni utilizzo HID descritto dalle matrici di funzionalità.
La figura seguente mostra un esempio di una raccolta di livello superiore che contiene quattro raccolte di collegamenti.
Come indicato nella figura precedente, le raccolte di collegamenti vengono collegate insieme in un ordine superiore a basso e a sinistra (ABCD). La tabella seguente indica, per ogni raccolta di collegamenti nell'esempio, i collegamenti tra la raccolta di primo livello e le raccolte di collegamenti.
Nodo collegamento | Parent | Children | First Child | Successivo fratello |
---|---|---|---|---|
Una | Raccolta di primo livello | B, C | b | nessuno |
B | Una | D | D | C |
C | Una | Nessuno | Nessuno | Nessuno |
D | b | nessuno | Nessuno | Nessuno |
In una matrice di raccolta collegamenti le definizioni seguenti contengono:
Padre: l'elemento padre di una raccolta di collegamenti è la raccolta immediatamente sopra di essa nella gerarchia superiore a inferiore delle raccolte. Le raccolte di collegamenti hanno un elemento padre. Il membro Padre di un nodo di collegamento specifica l'indice del relativo padre nella matrice di raccolta di collegamenti.
Figlio: una raccolta di collegamenti è un elemento figlio del relativo padre. Un padre può avere zero o più elementi figlio. Il membro NumberOfChildren di un nodo di collegamento specifica il numero di elementi figlio presenti in un elemento padre.
Fratello: i figli di un genitore sono fratelli.
Successivamente fratelli: i fratelli sono ordinati a sinistra a destra. Un fratello successivo è il fratello immediatamente a destra, se presente, in un set di fratelli. Il membro NextSibling di un nodo della raccolta di collegamenti specifica l'indice al successivo elemento di pari livello nella matrice di raccolta di collegamenti. Se un nodo della raccolta di collegamenti non ha un fratello successivo, NextSibling è impostato su zero.
Primo figlio: il primo figlio è il fratello più sinistro in un set di fratelli. Il membro FirstChild di un nodo della raccolta di collegamenti specifica l'indice al primo figlio nella matrice di raccolta di collegamenti. Se un nodo della raccolta di collegamenti non ha elementi figlio, FirstChild è impostato su zero.
Un'applicazione o un driver può determinare tutti gli elementi figlio di una raccolta padre, a partire dal primo figlio padre, sequenziando attraverso i fratelli del primo figlio fino a quando il membro NextSibling di un nodo di pari livello è zero.
Il codice seguente illustra come usare un indice del nodo della raccolta di collegamenti per trovare il primo figlio della raccolta di collegamenti sette:
HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
Node1 = Collection[Collection[7].FirstChild];
Raccolte aliasate
Gli elementi delimitatori possono essere usati in un descrittore di report per delimitare un set di raccolte alias. Ogni raccolta aliased è rappresentata da un nodo della raccolta di collegamenti alias. Un set completo e univoco di n, n>=2, nodi aliasati è collegato insieme nel modo seguente:
I nodi alias sono in ordine consecutivo nella matrice di raccolta di collegamenti.
I primi nodi n-1 hanno il membro IsAlias impostato su TRUE. Il nodo nth immediatamente dopo tale sequenza ha il membro IsAlias impostato su FALSE. Questo nodo termina la sequenza di nodi aliasti. L'utilizzo associato a questo nodo è l'utilizzo preferito.
Un'applicazione o un driver può determinare quali raccolte vengono aliasate ripetutamente incrementando l'indice della matrice di una matrice di raccolta di collegamenti per trovare tali sequenze.
Le matrici di funzionalità dei pulsanti e le matrici di funzionalità valore identificano, per ogni utilizzo descritto, la raccolta di collegamenti che contiene l'utilizzo. Se una raccolta di collegamenti è aliasata, le matrici di funzionalità specificano l'utilizzo preferito.