值能力数组

值功能数组包含有关特定类型 HID 报表的顶级集合支持的值使用情况的信息。 集合的值功能数组的信息包含在其 HIDP_CAPS 结构中。

用户模式应用程序或内核模式驱动程序使用以下 HIDClass 支持例程 之一来获取按钮功能信息:

  • HidP_GetValueCaps 返回一个值功能数组,该数组描述调用方指定的报表类型中包含的所有值。

  • HidP_GetSpecificValueCaps 根据调用方指定的用途页、用途、链接集合和报告类型筛选返回的值功能信息。

值功能数组包含 HIDP_VALUE_CAPS 结构,每个结构描述了有关 HID 用法使用情况范围的以下信息:

  • 用法或用法范围的使用页

  • 包含该值的报表 ID

  • 使用 ID 或使用范围

  • 指明使用情况是否为 别名用法

  • 关于包含使用情况或使用范围的链接集合的信息

  • 值的大小(以比特为单位)和报告计数(即结构所描述的各个独立值的数量)

  • 每个值的属性,包括:它是否具有 null 值、其单位和指数以及其逻辑和物理范围

  • 有关与用法或使用范围关联的字符串描述符和指定符的信息

  • 有关 HID 分析器分配使用情况或使用情况范围 的数据索引 的信息

一般情况下,值功能数组描述的所有用法都保留以下条件:

  • 每个功能结构表示与变量主项关联的使用情况、使用范围或 使用情况值数组 。 值不支持数组主项。

  • 可以使用别名用法。 不能对使用范围进行别名。 别名值在值能力数组中的链接方式与别名按钮在按钮能力数组中的链接方式相同。 请参阅 变量主项中的按钮用法

  • HID 分析程序仅使用所需的最小用法来为每个值分配使用情况。 分析器按报表描述符中指定的顺序分配使用情况。 放弃报表描述符中不需要的用法。 值功能数组不包含有关丢弃用法的任何信息。

  • HID 分析程序将唯一 的数据索引 分配给功能数组中所述的每个用法。

有关如何向值分配数据索引的说明,请参阅 数据索引

使用值数组

使用值数组是在主项中指定的连续一组值,所有这些值都分配了相同的用法。 如果只为一个报告计数大于 1 的主项指定一种用法,就会出现这种情况。

下图显示了包含五个数据项的使用情况值数组示例,每个数据项长度为 6 位。

该图显示了包含五个数据项的使用情况值数组,每个数据项长度为 6 位。

在前面的示例中,此类使用值数组的值功能结构将它的 IsRange 成员设置为 FALSE,其 NotRange.Usage 成员设置为 17,其 ReportCount 成员设置为 5,其 BitSize 成员设置为 6。

如果使用情况的报表计数为 1,请使用 HidP_GetUsageValue 提取使用值。 如果使用情况的报表计数大于 1,HidP_GetUsageValue 仅返回使用情况值数组中的第一个数据项。 若要提取使用情况值数组中的所有数据项,请使用 HidP_GetUsageValueArray