Verknüpfen von Sammlungen

Eine Linksammlung als geschachtelte Untersammlung innerhalb einer Auflistung auf oberster Ebene. Eine Auflistung der obersten Ebene kann null oder mehr Linksammlungen aufweisen.

HidP_GetLinkCollectionNodes gibt das Linksammlungsarray einer Auflistung der obersten Ebene zurück, das Informationen zu den Linksammlungen einer Sammlung auf oberster Ebene enthält.

Ein Linksammlungsarray beschreibt alle Linksammlungen, die in einer Auflistung der obersten Ebene enthalten sind. Jede Linkauflistung wird durch eine HIDP_LINK_COLLECTION_NODE-Struktur dargestellt. Die Linkknoten des Arrays werden so verknüpft, dass ihre sequenzielle und hierarchische Reihenfolge innerhalb einer Auflistung der obersten Ebene identifiziert wird. Das erste Element eines Linksammlungsarrays stellt eine Auflistung der obersten Ebene dar, und die restlichen Member stellen die Linkauflistungen der Auflistung der obersten Ebene dar.

Durch Ablaufverfolgung durch die Knoten im Linkverbindungsarray kann eine Benutzermodusanwendung oder ein Kernelmodustreiber die organization und Die Verwendung aller Linksammlungen in einer Sammlung auf oberster Ebene bestimmen. Darüber hinaus kann die Anwendung oder der Treiber Steuerelemente nach ihrer Linksammlung organisieren. Dies ist möglich, da die Schaltflächenfunktionsarrays und Wertfunktionsarrays einer Sammlung der obersten Ebene die Linkauflistung identifizieren, die jede von den Funktionsarrays beschriebene HID-Verwendung enthält.

Die folgende Abbildung zeigt ein Beispiel für eine Auflistung der obersten Ebene, die vier Linksammlungen enthält.

Diagramm, das eine Auflistung der obersten Ebene veranschaulicht, die vier Linkauflistungen enthält.

Wie in der vorherigen Abbildung dargestellt, werden Linksammlungen in einer Reihenfolge von oben nach unten und von links nach rechts (ABCD) miteinander verknüpft. Die folgende Tabelle gibt für jede Linkauflistung im Beispiel die Links zwischen der Auflistung der obersten Ebene und ihren Linkauflistungen an.

Linkknoten Parent Children First Child Nächste Gleichgeordnete
Ein Sammlung auf oberster Ebene B, C B Keine
B Ein D D C
C Ein Keine Keine Keine
D B Keine Keine Keine

In einem Linksammlungsarray enthalten die folgenden Definitionen:

  • Übergeordnetes Element: Das übergeordnete Element einer Linksammlung ist die Auflistung, die direkt darüber in der obersten nach unten stehenden Hierarchie von Sammlungen liegt. Linksammlungen verfügen über ein übergeordnetes Element. Das übergeordnete Element eines Linkknotens gibt den Index des übergeordneten Knotens im Linksammlungsarray an.

  • Untergeordnete Elemente: Eine Linksammlung ist ein untergeordnetes Element ihrer übergeordneten Sammlung. Ein übergeordnetes Element kann null oder mehr untergeordnete Elemente aufweisen. Das NumberOfChildren-Element eines Linkknotens gibt die Anzahl der untergeordneten Elemente an, über die ein übergeordnetes Element verfügt.

  • Geschwister: Die untergeordneten Elemente eines Elternteils sind Geschwister.

  • Nächste Gleichgeordnete: Geschwister werden von links nach rechts sortiert. Das nächste Geschwister eines Geschwisters ist das Geschwisterchen, das sich unmittelbar rechts befindet, falls vorhanden, in einer Gruppe von Geschwistern. Das NextSibling-Element eines Linksammlungsknotens gibt den Index zum nächsten untergeordneten Element im Linksammlungsarray an. Wenn ein Linksammlungsknoten nicht über einen nächsten gleichgeordneten Knoten verfügt, wird NextSibling auf 0 festgelegt.

  • Erstes Kind: Das erste Kind ist das linksste Geschwisterpaar in einer Gruppe von Geschwistern. Das FirstChild-Element eines Linksammlungsknotens gibt den Index für sein erstes untergeordnetes Element im Linksammlungsarray an. Wenn ein Linksammlungsknoten keine untergeordneten Elemente aufweist, wird FirstChild auf 0 festgelegt.

Eine Anwendung oder ein Treiber kann alle untergeordneten Elemente einer übergeordneten Sammlung bestimmen, indem sie beginnend mit dem ersten untergeordneten Element des übergeordneten Elements durch die Geschwister des ersten Untergeordneten sequenziert, bis das NextSibling-Element eines untergeordneten Knotens 0 ist.

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];

Aliassammlungen

Trennzeichenelemente können in einem Berichtsdeskriptor verwendet werden, um eine Gruppe von Aliassammlungen zu trennen. Jede aliasierte Auflistung wird durch einen Aliaslinksammlungsknoten 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 aufeinanderfolgender Reihenfolge im Linksammlungsarray.

  • Für die ersten n-1-Knoten ist ihr IsAlias-Member auf TRUE festgelegt. Für den n. Knoten, der unmittelbar nach einer solchen Sequenz folgt, ist sein IsAlias-Member auf FALSE festgelegt. Dieser Knoten beendet die Sequenz der aliasierten Knoten. Die diesem Knoten zugeordnete Nutzung ist die bevorzugte Verwendung.

Eine Anwendung oder ein Treiber kann ermitteln, welche Sammlungen aliasiert werden, indem der Arrayindex eines Linksammlungsarrays wiederholt erhöht wird, um solche Sequenzen zu finden.

Schaltflächenfunktionsarrays und Wertfunktionsarrays identifizieren für jede von ihnen beschriebene Verwendung die Linksammlung, die die Verwendung enthält. Wenn eine Linksammlung aliasisiert wird, geben die Funktionsarrays die bevorzugte Verwendung an.