值功能数组
值功能数组包含有关特定类型 HID 报表的顶级集合支持的值用法的信息。 有关集合的值功能数组的信息包含在其 HIDP_CAPS 结构中。
用户模式应用程序或内核模式驱动程序使用以下 HIDClass 支持例程 之一来获取按钮功能信息:
HidP_GetValueCaps 返回值功能数组,该数组描述调用方指定的报表类型中包含的所有值。
HidP_GetSpecificValueCaps 筛选它按调用方指定的使用页、使用情况、链接集合和报表类型返回的值功能信息。
值功能数组包含 HIDP_VALUE_CAPS 结构,其中每个结构描述有关 HID 用法 或 使用范围的以下信息:
使用情况或使用情况范围的使用情况页
包含值的报表的报表 ID
使用情况 ID 或使用范围
指示用法是否为 别名用法
有关包含使用情况或使用情况范围 的链接集合 的信息
值的大小(以位为单位)和报表计数 (这是结构描述的单个值的数目)
每个值的属性,包括:它是否具有 null 值、其单位和指数,以及其逻辑和物理范围
有关与用法或用法范围关联的字符串描述符和指定符的信息
有关 HID 分析程序分配的使用情况或使用情况范围 的数据索引 的信息
一般情况下,以下条件适用于值功能数组描述的所有用法:
每个功能结构都表示与变量main项关联的使用情况、使用范围或使用情况值数组。 值不支持数组main项。
可以使用别名用法。 不能对使用范围进行别名化。 在值功能数组中,别名值与别名按钮链接在一起的方式与按钮功能数组中链接在一起的方式相同。 请参阅 变量主项中的按钮用法。
HID 分析程序仅使用所需的最低使用量来为每个值分配一个用法。 分析程序按在报表描述符中指定的顺序分配用法。 将放弃报表描述符中不需要的用法。 值功能数组不包含有关已放弃用法的任何信息。
HID 分析程序为功能数组中所述的每个用法分配唯一 的数据索引 。
有关如何将数据索引分配给值的说明,请参阅 数据索引。
使用情况值数组
使用情况值数组是在main项中指定的一组连续值,所有这些值都分配了相同的用法。 如果为报表计数大于 1 的main项指定了一个用法,则会出现这种情况。
下图显示了包含五个数据项(每个 6 位长)的使用情况值数组的示例。
在前面的示例中,此类使用值数组的值功能结构将它的 IsRange 成员设置为 FALSE,其 NotRange.Usage 成员设置为 17,其 ReportCount 成员设置为 5,BitSize 成员设置为 6。
如果使用情况的报告计数为 1,请使用 HidP_GetUsageValue 提取使用情况值。 如果使用情况的报告计数大于 1,HidP_GetUsageValue 仅返回使用情况值数组中的第一个数据项。 若要提取使用情况值数组中的所有数据项,请使用 HidP_GetUsageValueArray。