Udostępnij przez


Kolekcje łączy

Zbiór łączy jako zagnieżdżona podkolekcja w kolekcji najwyższego poziomu. Kolekcja najwyższego poziomu może mieć zero lub więcej kolekcji linków.

HidP_GetLinkCollectionNodes zwraca tablicę kolekcji łączy najwyższego poziomu zawierającą informacje o kolekcjach łączy kolekcji najwyższego poziomu.

Tablica kolekcji łączy opisuje wszystkie kolekcje linków zawarte w kolekcji najwyższego poziomu. Każda kolekcja linków jest reprezentowana przez strukturę HIDP_LINK_COLLECTION_NODE . Węzły powiązań tablicy są połączone w sposób identyfikujący ich sekwencyjną i hierarchiczną kolejność w kolekcji najwyższego poziomu. Pierwszy element tablicy kolekcji linków reprezentuje kolekcję najwyższego poziomu, a pozostałe elementy reprezentują kolekcje linków najwyższego poziomu.

Śledząc węzły w tablicy połączeń łączy, aplikacja trybu użytkownika lub sterownik trybu jądra może zidentyfikować organizację i użycie wszystkich zbiorów łączy w zbiorze najwyższego poziomu. Ponadto aplikacja lub sterownik mogą organizować kontrolki według kolekcji powiązań. Jest to możliwe, ponieważ w kolekcji nadrzędnej tablice przycisków i tablice wartości identyfikują kolekcję linków zawierającą każde użycie HID opisane przez te tablice możliwości.

Na poniższej ilustracji przedstawiono przykład kolekcji najwyższego poziomu zawierającej cztery kolekcje linków.

Diagram przedstawiający kolekcję najwyższego poziomu zawierającą cztery kolekcje łączy.

Jak wskazano na poprzedniej ilustracji, kolekcje łączy są połączone w kolejności od góry do dołu i od lewej do prawej (ABCD). Poniższa tabela wskazuje dla każdej kolekcji linków w przykładzie połączenia między kolekcją najwyższego poziomu a jej zbiorami linków.

Węzeł łączący Parent Dzieci Pierwsze dziecko Następny element równorzędny
A Kolekcja najwyższego poziomu B, C B Żaden
B A D D C
C A Żaden Żaden Żaden
D B Żaden Żaden Żaden

W zbiorze linków znajdują się następujące definicje:

  • Nadrzędny: element nadrzędny kolekcji linków jest kolekcją bezpośrednio nad nią w hierarchii od góry do dołu kolekcji. Kolekcje odnośników mają jednego nadrzędnego. Element nadrzędny węzła łącza określa indeks jego elementu nadrzędnego w tablicy kolekcji łączy.

  • Elementy podrzędne: kolekcja linków jest elementem podrzędnym jej elementu nadrzędnego. Rodzic może mieć zero lub więcej dzieci. Element NumberOfChildren w węźle łącza określa liczbę dzieci, które ma element nadrzędny.

  • Rodzeństwo: Dzieci rodziców są rodzeństwem.

  • Następne rodzeństwo: Rodzeństwo jest uporządkowane od lewej do prawej. Następne rodzeństwo to rodzeństwo, które znajduje się bezpośrednio po swojej prawej stronie, jeśli istnieje, wśród zestawu rodzeństwa. Element członkowski NextSibling węzła kolekcji łączy określa indeks do następnego elementu równorzędnego w tablicy kolekcji łączy. Jeśli węzeł kolekcji odnośników nie ma kolejnego węzła podrzędnego, wtedy NextSibling jest ustawiany na zero.

  • Pierwsze dziecko: Pierwsze dziecko jest rodzeństwem najbardziej lewym w zestawie rodzeństwa. Element FirstChild węzła kolekcji łączy określa indeks jego pierwszego elementu w tablicy kolekcji łączy. Jeśli węzeł kolekcji łączy nie ma elementów podrzędnych, parametr FirstChild jest ustawiony na zero.

Aplikacja lub sterownik może określić wszystkie elementy podrzędne kolekcji nadrzędnej, zaczynając od pierwszego dziecka elementu nadrzędnego, przechodząc przez rodzeństwo pierwszego dziecka, aż członek NextSibling węzła rodzeństwa wyniesie zero.

Poniższy kod przedstawia sposób użycia indeksu węzła kolekcji linków w celu znalezienia pierwszego elementu podrzędnego kolekcji linków siedem:

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

Zaliasowane kolekcje

Elementy ogranicznika mogą być używane w deskryptorze raportu, aby oddzielić zestaw aliasowanych kolekcji. Każda kolekcja aliasów jest reprezentowana przez aliasowany węzeł kolekcji linków. Kompletny i unikatowy zestaw n, n>=2, aliasowanych węzłów jest połączony w następujący sposób:

  • Węzły aliasu są w porządku sekwencyjnym w tablicy kolekcji łączy.

  • Pierwsze n-1 węzły mają swój członek IsAlias ustawiony na TRUE. Węzeł nth bezpośrednio po takiej sekwencji ma element członkowski IsAlias ustawiony na FALSE. Ten węzeł kończy sekwencję aliasowanych węzłów. Użycie skojarzone z tym węzłem jest preferowanym użyciem.

Aplikacja lub sterownik może określić, które kolekcje są aliasowane przez wielokrotne zwiększanie indeksu tablicy kolekcji łączy w celu znalezienia takich sekwencji.

Tablice możliwości przycisków i tablice możliwości wartości identyfikują, dla każdego użycia, które opisują, kolekcję łącz zawierającą to użycie. Jeśli zbiór linków ma alias, tablice możliwości określają preferowane użycie.