HID规范
+ -

HID主条目collection和end collection详解

2021-08-18 1844 0
  • 与数据无关的collection和end collection
    collection

collection item标识两个或多个数据(input、output或feature)之间的关系。例如,鼠标可以描述为两到四个数据(x、y、按钮 1、按钮 2)的collection。 当 Collection 项打开一个数据集合时,End Collection 项关闭一个集合.

physical collection - 0

物理集合用于表示在一个几何点收集的数据点的一组数据项。 这对于可能需要将测量或感测数据集与单个点相关联的感测设备很有用。 它并不表示一组数据值来自一个设备,例如键盘。 在报告多个传感器位置的设备的情况下,物理集合用于显示哪些数据来自每个单独的传感器。

Application collection - 1

应用程序可能熟悉的一组主要项目。 它还可以用于识别单个设备中服务于不同目的的项目组。 常见的例子是键盘或鼠标。 带有集成指针设备的键盘可以定义为两个不同的应用程序集合。 数据报告通常(但不一定)与应用程序集合相关联(每个应用程序至少有一个报告 ID)。

Logical collection - 2

当一组数据项形成复合数据结构时,将使用逻辑集合。 一个例子是数据缓冲区和数据字节数之间的关联。 集合建立计数和缓冲区之间的链接

Report collection -3

定义一个包含报表中所有字段的逻辑集合。 此集合中将包含唯一的报告 ID。 应用程序可以轻松确定设备是否支持某个功能。 请注意,可以为报告集合声明任何有效的报告 ID 值。

Name dArray collection - 4

命名数组是包含选择器用法数组的逻辑集合。 对于给定的功能,类似设备使用的选择器集可能会有所不同。 在记录硬件寄存器时,字段的命名是常见的做法。 要确定设备是否支持特定功能(如状态),应用程序可能必须先查询几个已知的状态选择器用法,然后才能确定设备是否支持状态。 Named Array 用法允许对包含选择器的 Array 字段进行命名,因此应用程序只需查询 Status 用法即可确定设备支持状态信息。

Usage Switch collection - 5

Usage Switch 是一个逻辑集合,用于修改它所包含的用法的含义。 此集合类型向应用程序指示在此集合中找到的用法必须是特殊情况。 例如,不是在 LED 页面上为每个可能的功能声明用法,而是可以将指标用法应用于 Usage Switch 集合,并且该集合中定义的标准用法现在可以识别为函数的指标,而不是函数本身 . 请注意,此集合类型不用于标记 Ordinal 集合,为此使用逻辑集合类型。

Usage Modifier collection - 6

修改附加到包含集合的用法的含义。 用法通常为控件定义单一操作模式。 使用修饰符允许扩展控件的操作模式。 例如,LED 通常是打开或关闭的。 对于特定状态,设备可能需要一种通用方法来闪烁或选择标准 LED 的颜色。 将 LED 用法附加到 Usage Modifier 集合将向应用程序表明该用法支持新的操作模式。

0x07-0x7f

保留,为将来扩展

0x80-0xff

厂商自定义集合


  • Collection 项和 End Collection 项之间的所有 Main 项都包含在集合中。 集合可能包含其他嵌套集合。
  • 集合项不生成数据。 但是,Usage 项标签必须与任何集合(例如鼠标或油门)相关联。 集合项可以嵌套,并且它们始终是可选的,除了顶级应用程序集合。
  • 如果遇到未知的供应商定义的集合类型,则应用程序必须忽略该集合中声明的所有主要项。 请注意,在该集合中声明的全局项将影响状态表。
  • 如果未知用法附加到已知集合类型,则应忽略该集合的内容。 请注意,在该集合中声明的全局项将影响状态表。
  • 字符串和物理索引以及定界符可能与集合相关联。
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

HID主条目collection和end collection详解
与数据无关的collection和end collectioncollection item标识两个或多个数据(input、output或feature)之间的关系。例如,鼠标可以描述为两到四个数据(x、y、按钮 1、按钮 2)的collection。 当 Collection 项打开一个数据集......
HIDP_DEVICE_DESC和HIDP_COLLECTION_DESC、HIDP_REPORT_IDS关系注释
在说明Hid.dll的导出函数Hid.dll导出函数HidD_GetPreparsedData,其实会涉及到Hidparser.sys中比较重要的两个结构体,就是HIDP_COLLECTION_DESC和HIDP_REPORT_IDS。这两个结构体的定义如下:typedef struct _HID......
HID_PARSER_CONTEXT解析报告描述符生成的COLLECTION树形结构
通过前面的代码,我们简单的说明了一下HIDP_DEVICE_DESC和HIDP_COLLECTION_DESC、HIDP_REPORT_IDS关系:其实我们在分析其代码的时候,都是通过ParserContext来实现的,这个指针的定义实质上为:typedef struct{ // ......
HID报告描述符主项ITEM_TYPE_MAIN-COLLECTION和END COLLECTION
主项ITEM_TYPE_MAIN时,ITEM_PREFIX的Type(BIT2,BIT3)为0时。#define ITEM_TYPE_MAIN 0x0主项主要包括以下几个:ITEM_TAG_MAIN_COLLECTIONITEM_TAG_MAIN......
HID报告描述符主项InputReport、OutputReport,FeatureReport
HID报告描述符主项除过COLLECTION项,就是输入报告InputReport,输出报告OutputReport和特性报告FeatureReport。ITEM_PREFIX的BIT2,BIT3为00,bit4-7的值为:#define ITEM_TAG_MAIN_INPUT ......
HID报告描述符解析过程中的数据结构关系
Hid报告描述符的短项定义了MAIN,GLOBAL,LOCAL三种类型的项。其中MAIN项主要定义了三个类型,分别为集合(COLLECTION),输入报告(Input Report),输出报告(Output Report)和特性报告(Feature Report).在Windows系统的Pars......
使用USB鼠标HID报告描述符分析HID_REPORT及成员HID_REPORT_ITEM关系
HID报告描述分过程比较麻烦,对于MAIN ITEM,相对来说比较简单,就是一个简单的树形结构。但对于GLOBAL ITEM和LOCAL ITEM组织的数据结构定义,还是相对比较麻烦的。每一个HID报告描述符都会有很多集合,这是由MAIN ITEM的Collection关键字定义的,无论它是Appl......
UAC音频控制接口头描述符bInCollection及baInterfaceNr字段分析
UAC1.0规范音频控制接口头描述符的定义如下:typedef struct _USB_AC_HEADER{ UINT8 bLength; UINT8 bDescriptorType; UINT8 bDescriptorSubType; UINT16 bcd......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!