值能力數組包含特定 HID 報表類型的最高層級集合所支援之值使用方式的信息。 集合值功能陣列的相關信息包含在其 HIDP_CAPS 結構中。
使用者模式應用程式或核心模式驅動程式會使用下列其中一個 HIDClass 支援常式 來取得按鈕功能資訊:
HidP_GetValueCaps 會傳回一個值能力陣列,描述呼叫端指定的報表類型中所包含的所有值。
HidP_GetSpecificValueCaps 依據呼叫端指定的用途頁面、用途、連結集合和報告類型來篩選並傳回值功能資訊。
值功能陣列包含HIDP_VALUE_CAPS結構,其中每一個結構都會描述下列 HID 使用方式或使用範圍的相關信息:
使用量或使用量範圍的使用量頁面
包含該值的報表之報表標識碼
使用量標識碼或使用範圍
指出使用方式是否為 別名用法
有關包含使用方式或使用範圍的連結集合的信息
值的大小,以位為單位,以及報表計數(這是 結構所描述的個別值數目)
每個值的屬性,包括:其是否有 Null 值、其單位和指數,以及其邏輯和實體範圍
與使用方式或使用範圍相關聯的字串描述元和指定項相關信息
HID 剖析器用於指派使用方式或使用範圍的 數據索引 資訊。
一般而言,值功能陣列所描述的所有使用方式都會保留下列條件:
每個功能結構都代表與變數主要專案相關聯的使用方式、使用範圍或 使用值陣列 。 陣列主要項目不支持值。
別名用法是可以使用的。 無法為使用範圍設別名。 值的別名會在值功能陣列中以類似於按鈕別名在按鈕功能陣列中連結的方式被連結在一起。 請參閱 變數主要專案中的按鈕使用方式。
HID 剖析器只會使用最少的必要用法,將使用量指派給每個值。 剖析器會依報告描述子中指定的順序指派使用情形。 在報告描述符中,無需的用途會被捨棄。 價值能力陣列不包含任何有關被捨棄的使用方式的資訊。
HID 剖析器會將唯一 的數據索引 指派給功能陣列中所述的每個使用方式。
如需如何將數據索引指派給值的描述,請參閱 數據索引。
使用值陣列
使用值陣列是一組連續在主要專案中指定的值,這些值全都會指派相同的使用方式。 如果只有一個使用方式指定給報告計數大於一的主要項目,就會發生這種情況。
下圖顯示使用值陣列的範例,其中包含五個數據項,每六個位長。
在上述範例中,這類使用值數組的值功能結構會將其 IsRange 成員設定為 FALSE、其 NotRange.Usage 成員設定為 17、其 ReportCount 成員設定為 5,而其 BitSize 成員設定為 6。
如果使用量的報表計數為 1,請使用 HidP_GetUsageValue 來擷取使用量值。 如果使用量的報表計數大於 1,HidP_GetUsageValue 只會傳回使用量值陣列中的第一個數據項。 若要擷取使用值陣列中的所有資料項,請使用 HidP_GetUsageValueArray。