値機能配列

値機能配列には、特定の種類の HID レポートの最上位のコレクションでサポートされている値の使用法に関する情報が含まれています。 コレクションの値機能配列に関する情報は、その HIDP_CAPS 構造体に含まれています。

ユーザー モード アプリケーションまたはカーネル モード ドライバーは、次の HIDClass サポート ルーチンのいずれかを使用して、ボタンの機能情報を取得します。

  • HidP_GetValueCaps は、呼び出し元指定のレポートの種類に含まれているすべての値を記述する値機能配列を返します。

  • HidP_GetSpecificValueCaps は、呼び出し元指定の使用法ページ、使用法、リンク コレクション、レポートの種類によって、返される値機能情報をフィルター処理します。

値機能配列には HIDP_VALUE_CAPS 構造体が含まれており、それぞれに HID 使用法または使用法範囲に関する次の情報が記述されています。

  • 使用法または使用法範囲を示す使用法ページ

  • 値が含まれるレポートのレポート ID

  • 使用法 ID または使用法範囲

  • 使用法がエイリアス化された使用法であるかどうかを示します

  • 使用法または使用法範囲が含まれるリンク コレクションに関する情報

  • 値のサイズ (ビット単位)、およびレポート数 (構造体によって記述された個々の値の数)

  • 各値の属性 (null 値があるかどうか、その単位と指数、論理範囲と物理範囲を含む)

  • 使用法または使用法範囲に関連付けられている文字列記述子と指定子に関する情報

  • HID パーサーが使用状況または使用範囲を割り当てたデータ インデックスに関する情報

一般に、次の条件は、値機能配列によって記述されたすべての使用法に対して保持されます。

  • 各機能構造は、変数メイン項目に関連付けられた使用法、使用法範囲、または使用法値配列を表します。 配列メイン項目は、値ではサポートされていません。

  • エイリアス化された使用法は使用できます。 使用法範囲はエイリアス化できません。 エイリアス化された値は、エイリアス化されたボタンがボタン機能配列でリンクされるのと同じ方法で、値機能配列内でリンクされます。 「変数メイン項目のボタン使用法」を参照してください。

  • HID パーサーは、最低限必要な使用法のみを使用して各値に使用法を割り当てます。 パーサーは、レポート記述子で指定された順序で使用法を割り当てます。 レポート記述子内の不要な使用法は破棄されます。 値機能配列には、破棄された使用法に関する情報は含まれません。

  • HID パーサーは、機能配列で説明されている各使用法に一意のデータ インデックスを割り当てます。

データ インデックスを値に割り当てる方法の詳細については、「データ インデックス」を参照してください。

使用法値配列

使用法値配列は、メイン項目で指定された連続する一連の値であり、そのすべてが同じ使用法に割り当てられます。 これは、レポート数が 1 より大きいメイン項目に対して 1 つの使用法のみが指定されている場合に発生します。

次の図は、それぞれ 6 ビット長の 5 つのデータ項目が含まれる使用法値配列の例を示しています。

Diagram illustrating a usage value array that contains five data items, each 6 bits long.

前の例では、このような使用法値配列の値機能構造では、IsRange メンバーが FALSE に設定され、その NotRange.Usage メンバーが 17 に設定され、その ReportCount メンバーが 5 に設定され、BitSize メンバーが 6 に設定されます。

使用法のレポート数が 1 の場合は、HidP_GetUsageValue を使用して使用法値を抽出します。 使用法のレポート数が 1 より大きい場合、HidP_GetUsageValue は使用法値配列の最初のデータ項目のみを返します。 使用法値配列内のすべてのデータ項目を抽出するには、HidP_GetUsageValueArray を使用します。