Freigeben über


Verknüpfen von Sammlungen

Eine Linksammlung als geschachtelte Untersammlung in einer Auflistung auf oberster Ebene. Eine Sammlung auf oberster Ebene kann null oder mehr Verknüpfungssammlungen aufweisen.

HidP_GetLinkCollectionNodes gibt ein Link-Sammlungsarray einer übergeordneten Sammlung zurück, das Informationen zu den Link-Sammlungen einer Sammlung auf höchster Ebene enthält.

Ein Linksammlungsarray beschreibt alle Linksammlungen, die in einer Sammlung der obersten Ebene enthalten sind. Jede Verknüpfungssammlung wird durch eine HIDP_LINK_COLLECTION_NODE Struktur dargestellt. Die Verknüpfungsknoten des Arrays werden auf eine Weise verknüpft, die ihre sequenzielle und hierarchische Reihenfolge innerhalb einer Auflistung auf oberster Ebene identifiziert. Das erste Element eines Linkauflistungsarrays stellt eine Auflistung der obersten Ebene dar, und die verbleibenden Elemente stellen die Verknüpfungssammlungen der obersten Ebene dar.

Durch die Verfolgung über die Knoten im Link-Verbindungsarray kann eine Benutzermodus-Anwendung oder ein Kernelmodus-Treiber die Organisation und Verwendung aller Verbindungssammlungen in einer Top-Level-Sammlung bestimmen. Darüber hinaus kann die Anwendung oder der Treiber Steuerelemente nach ihrer Linksammlung organisieren. Dies ist möglich, da die Schaltflächenarrays und Wertfunktionsarrays einer Sammlung auf oberster Ebene die Verknüpfungssammlung identifizieren, die jede von den Funktionsarrays beschriebene HID-Verwendung enthält.

Die folgende Abbildung zeigt ein Beispiel für eine Auflistung auf oberster Ebene, die vier Verknüpfungssammlungen enthält.

Diagramm, das eine Auflistung auf oberster Ebene veranschaulicht, die vier Linkauflistungen enthält.

Wie in der vorherigen Abbildung angegeben, werden Verknüpfungssammlungen in einer Reihenfolge von oben nach unten und von links nach rechts (ABCD) miteinander verknüpft. Die folgende Tabelle gibt für jede Verknüpfungsauflistung im Beispiel die Verknüpfungen zwischen der Auflistung der obersten Ebene und den zugehörigen Verknüpfungssammlungen an.

Verknüpfungsknoten Parent Kinder Erstes Kind Nächstes gleichgeordnetes Element
A Sammlung auf oberster Ebene B, C B Nichts
B A D D C
C A Nichts Nichts Nichts
D B Nichts Nichts Nichts

In einem Link-Sammlungsarray gelten die folgenden Definitionen:

  • Übergeordnetes Element: Das übergeordnete Element einer Verknüpfungssammlung befindet sich unmittelbar darüber in der obersten bis unteren Hierarchie von Sammlungen. Verknüpfungssammlungen haben ein übergeordnetes Element. Das übergeordnete Element eines Verknüpfungsknotens gibt den Index des übergeordneten Elements im Linksammlungsarray an.

  • Kinder: Eine Linksammlung ist ein Kind ihres Elternteils. Ein Elternteil kann null oder mehr Kinder haben. Das NumberOfChildren-Mitglied eines Verknüpfungsknotens gibt die Anzahl der Kinder an, die ein Elternknoten hat.

  • Geschwister: Kinder eines Elternteils sind Geschwister.

  • Nächstes Geschwisterelement: Geschwisterelemente sind von links nach rechts angeordnet. Ein nächstes gleichgeordnetes Element ist das direkt rechts davon liegende gleichgeordnete Element, falls vorhanden, in einem Satz von gleichgeordneten Elementen. Das NextSibling-Mitglied eines Verknüpfungssammlungs-Knotens gibt den Index zu seinem nächsten Geschwisterknoten im Verknüpfungssammlung-Array an. Wenn ein Verknüpfungssammlungsknoten nicht über ein nächstes gleichgeordnetes Element verfügt, wird NextSibling auf Null festgelegt.

  • Erstes Kind: Das erste Kind ist das am weitesten links stehende Geschwisterchen in einer Gruppe von Geschwistern. Das FirstChild-Element eines Knotens in der Verknüpfungssammlung gibt den Index seines ersten untergeordneten Elements im Verknüpfungssammlungs-Array an. Wenn ein Linkknoten keine Kinder hat, wird FirstChild auf Null festgelegt.

Eine Anwendung oder ein Treiber kann alle untergeordneten Elemente einer übergeordneten Auflistung ermitteln, indem sie mit dem ersten untergeordneten Element des übergeordneten Elements beginnen und die gleichgeordneten Elemente des ersten untergeordneten Elements durchlaufen, bis das NextSibling-Element eines gleichgeordneten Knotens den Wert null erreicht.

Der folgende Code zeigt, wie Sie einen Linksammlungsknotenindex verwenden, um das erste untergeordnete Element der Linksammlung sieben zu finden:

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

Sammlungen mit Aliasnamen

Trennzeichenelemente können in einem Berichtsdeskriptor verwendet werden, um eine Gruppe von aliasierten Auflistungen zu trennen. Jede aliasierte Auflistung wird durch einen aliasierten Linksammlungsknoten dargestellt. Ein vollständiger und eindeutiger Satz von n, n>=2, aliasierten Knoten wird wie folgt miteinander verknüpft:

  • Die aliasierten Knoten befinden sich in aufeinander folgender Reihenfolge im Linkarray.

  • Die ersten n-1-Knoten haben ihr IsAlias-Element auf TRUE festgelegt. Der nth-Knoten , der unmittelbar auf eine solche Sequenz folgt, hat sein IsAlias-Element auf FALSE festgelegt. Dieser Knoten beendet die Sequenz von aliasierten Knoten. Die diesem Knoten zugeordnete Verwendung ist die bevorzugte Verwendung.

Eine Anwendung oder ein Treiber kann bestimmen, welche Sammlungen aliased werden, indem es den Array-Index eines Link-Sammlungsarrays wiederholt erhöht, um solche Sequenzen zu finden.

Schaltflächenfunktionsarrays und Wertfunktionsarrays identifizieren für jede beschriebene Verwendung die Linksammlung, die die Verwendung enthält. Wenn eine Linkauflistung aliasiert ist, geben die Fähigkeitsarrays die bevorzugte Verwendung an.