Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Collezione di collegamenti come sottocollezione annidata all'interno di una collezione di livello superiore. Una raccolta di livello superiore può avere zero o più raccolte di collegamenti.
HidP_GetLinkCollectionNodes restituisce una matrice di raccolta di collegamenti di livello superiore che contiene informazioni sulle raccolte di collegamenti di una raccolta di livello superiore.
Matrice di raccolta di collegamenti
Una matrice di raccolte di collegamenti descrive tutte le raccolte di collegamenti contenute in una raccolta di primo livello. Ogni raccolta di collegamenti è rappresentata da una struttura HIDP_LINK_COLLECTION_NODE . I nodi di collegamento della matrice sono collegati in modo da identificarne l'ordine sequenziale e gerarchico all'interno di una raccolta di livello superiore. Il primo elemento di una matrice di raccolte di collegamenti rappresenta una raccolta di livello superiore e i membri rimanenti rappresentano le raccolte di collegamenti della raccolta di livello superiore.
Tracciando i nodi nella matrice di connessione di collegamento, un'applicazione in modalità utente o un driver in modalità kernel può determinare l'organizzazione e l'utilizzo di tutte le raccolte di collegamenti in una raccolta di primo livello. Inoltre, l'applicazione o il driver può organizzare i controlli in base alla raccolta di collegamenti. Ciò è possibile perché le matrici di funzionalità dei pulsanti di una raccolta di primo livello e le matrici di funzionalità di valore 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 sono collegate tra loro in un ordine dall'alto verso il basso e da sinistra a destra (ABCD). La tabella seguente indica, per ogni raccolta di collegamenti nell'esempio, i collegamenti tra la raccolta di livello superiore e le relative raccolte di collegamenti.
| Nodo collegamento | Genitore | Bambini | Primo figlio | Prossimo elemento di pari livello |
|---|---|---|---|---|
| A | Raccolta di primo livello | B, C | B | Nessuno |
| B | A | D | D | C |
| C | A | Nessuno | Nessuno | Nessuno |
| D | B | Nessuno | Nessuno | Nessuno |
In una matrice di raccolta di collegamenti, le definizioni sono le seguenti:
Padre: l'elemento padre di una raccolta di collegamenti è la raccolta immediatamente sopra di essa nella gerarchia superiore a quella inferiore delle raccolte. Le raccolte di collegamenti hanno un elemento padre. Il membro Padre di un nodo di collegamento specifica l'indice del relativo elemento padre nella matrice della raccolta di collegamenti.
Children: una raccolta di collegamenti è un elemento figlio del relativo elemento padre. Un padre può avere zero o più figli. Il membro NumberOfChildren di un nodo di link specifica il numero di nodi figlio presenti in un nodo padre.
Fratelli: i figli di un genitore sono fratelli.
Fratello successivo: gli elementi fratelli sono ordinati da sinistra a destra. Il prossimo fratello è il fratello immediatamente a destra, se presente, in un insieme di fratelli. Il membro NextSibling di un nodo della raccolta di collegamenti specifica l'indice al successivo elemento di pari livello nell'array della raccolta di collegamenti. Se un nodo della raccolta di collegamenti non ha un elemento di pari livello successivo, NextSibling è impostato su zero.
Primo figlio: il primo figlio è l'elemento di pari livello più a sinistra in un set di fratelli. Il membro FirstChild di un nodo della raccolta di collegamenti specifica l'indice del primo elemento figlio nella matrice di raccolta 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, iniziando dal primo figlio della raccolta padre e sequenziando attraverso gli elementi di pari livello di questo 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 elemento figlio della raccolta di collegamenti sette:
HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
Node1 = Collection[Collection[7].FirstChild];
Raccolte con alias
Gli elementi delimitatori possono essere utilizzati in un descrittore di report per delimitare un set di raccolte con alias. Ogni raccolta con alias è rappresentata da un nodo della raccolta di collegamenti con alias. Un set completo e univoco di n, n>=2, i nodi con alias vengono collegati nel modo seguente:
I nodi con alias sono in ordine consecutivo nella matrice di raccolta dei collegamenti.
I primi n-1 nodi hanno il membro IsAlias impostato su TRUE. Il n° nodo immediatamente successivo a tale sequenza ha il relativo membro IsAlias impostato su FALSE. Questo nodo termina la sequenza di nodi con alias. L'utilizzo associato a questo nodo è l'utilizzo preferito.
Un'applicazione o un driver può determinare quali raccolte vengono aliasate incrementando ripetutamente l'indice della matrice di una matrice di raccolte 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 collezione di link viene rinominata, le matrici di funzionalità specificano l'uso preferito.