最上位コレクション内の入れ子サブコレクションとしてのリンクコレクション。 最上位のコレクションには、0 個以上のリンク コレクションを含めることができます。
HidP_GetLinkCollectionNodes は、最上位のコレクションの リンク コレクション に関する情報を含む、最上位レベルのコレクションのリンク コレクション配列を返します。
コレクション配列をリンクする
リンク コレクション配列は、最上位のコレクションに含まれるすべてのリンク コレクションを表します。 各リンク コレクションは、 HIDP_LINK_COLLECTION_NODE 構造体によって表されます。 配列のリンク ノードは、最上位レベルのコレクション内で順番と階層の順序を識別する方法でリンクされます。 リンク コレクション配列の最初の要素は最上位のコレクションを表し、残りのメンバーは最上位レベルのコレクションのリンク コレクションを表します。
リンク接続配列内のノードをトレースすることで、ユーザー モード アプリケーションまたはカーネル モード ドライバーは、最上位レベルのコレクション内のすべてのリンク コレクションの編成と使用状況を判断できます。 さらに、アプリケーションまたはドライバーは、リンク コレクションによってコントロールを整理できます。 これは、最上位レベルのコレクションの ボタン機能配列 と 値機能配列 が、機能配列によって記述された各 HID 使用法 を含むリンク コレクションを識別するためです。
次の図は、4 つのリンク コレクションを含む最上位レベルのコレクションの例を示しています。
前の図に示すように、リンク コレクションは上から下、左から右の順 (ABCD) でリンクされます。 次の表は、例の各リンク コレクションについて、最上位レベルのコレクションとそのリンク コレクション間のリンクを示しています。
| リンク ノード | 親 | 子供 | 最初の子 | 次の兄弟 |
|---|---|---|---|---|
| A | 最上位のコレクション | B、C | B | 無し |
| B | A | D | D | C |
| C | A | 無し | 無し | 無し |
| D | B | 無し | 無し | 無し |
リンク コレクション配列では、次の定義が保持されます。
親: リンク コレクションの 親 は、コレクションの上から下の階層のそのすぐ上にあるコレクションです。 リンクコレクションには親が1つあります。 リンク ノードの Parent メンバーは、リンク コレクション配列内の親のインデックスを指定します。
子: リンク コレクションは、その親の 子 です。 親は 0 人以上の子供を持つことができます。 リンク ノードの NumberOfChildren メンバーは、親が持つ子の数を指定します。
兄弟: 親の子は 兄弟です。
次の兄弟: 兄弟は左から右に並べ替えられます。 兄弟の次の兄弟は、一連の兄弟の中で右側に位置する兄弟です。 リンク コレクション ノードの NextSibling メンバーは、リンク コレクション配列内の次の兄弟へのインデックスを指定します。 リンク コレクション ノードに次の兄弟がない場合、 NextSibling は 0 に設定されます。
最初の子: 最初の子 は、一連の兄弟の左端の兄弟です。 リンク コレクション ノードの FirstChild メンバーは、リンク コレクション配列内の最初の子へのインデックスを指定します。 リンク コレクション ノードに子がない場合、 FirstChild は 0 に設定されます。
アプリケーションまたはドライバーは、親の最初の子から始めて、兄弟ノードの NextSibling メンバーが 0 になるまで最初の子の兄弟をシーケンス処理することで、親コレクションのすべての子を決定できます。
次のコードは、リンク コレクション ノード インデックスを使用して、リンク コレクション 7 の最初の子を検索する方法を示しています。
HIDP_LINK_COLLECTION_NODE Collection[10] ;
HIDP_LINK_COLLECTION_NODE Node1 ;
Node1 = Collection[Collection[7].FirstChild];
エイリアス化されたコレクション
区切り記号項目は、エイリアス 化されたコレクションのセットを区切るためにレポート記述子で使用できます。 エイリアスが設定された各コレクションは、エイリアス化されたリンク コレクション ノードによって表されます。 完全で一意の n、 n>=2 のエイリアス化されたノードのセットは、次のようにリンクされます。
エイリアス化されたノードは、リンク コレクション配列内で連続した順序になります。
最初の n-1 ノードでは、 IsAlias メンバーが TRUE に設定されています。 このようなシーケンスの直後の n 番目 のノードでは、 IsAlias メンバーが FALSE に設定されています。 このノードは、エイリアス化されたノードのシーケンスを終了します。 このノードに関連付けられている使用法が推奨される使用法です。
アプリケーションまたはドライバーは、リンク コレクション配列の配列インデックスを繰り返しインクリメントしてそのようなシーケンスを検索することで、エイリアス化されるコレクションを決定できます。
ボタン機能配列 と 値機能配列は 、説明する使用法ごとに、使用法を含むリンク コレクションを識別します。 リンク コレクションがエイリアス化されている場合、機能配列は推奨される使用法を指定します。