HID报告描述符复合HID设备
2022-05-13
5046
1
如我们电脑中有一个键盘,其设备管理器中如下:
它们的硬件ID分别如下:
- USB\VID_1A2C&PID_2124&REV_0110
可以看到,根设备由usbccgp来进行驱动,并枚举出2个子HID设备,第一个子HID设备是标准的HID键盘。第二个子HID设备又因为报告描述符枚举出2个子HID设备。
只不过不区的是,一个是通过接口实现设备的复合,一个是通过报告描述符实现的是HID设备的复合。
关于USB接口描述符实现的复合可参考:USBCCGP 功能简介http://www.usbzh.com/article/detail-576.html
这里我们讨论HID设备的复合,即通过HID报告描述实现HID设备的复合。
我们在分析USB\VID_1A2C&PID_2124&REV_0110&MI_01复合的HID设备之前,先分析一下它的报告描述符,我们通过BUSHOUND抓取内容如下:
05 0c 09 01 a1 01 85 01 19 00 2a 3c 02 15 00 26 3c 02 95 01 75 10 81 00 c0 05 01 09 80 a1 01 85
02 19 81 29 83 25 01 75 01 95 03 81 02 95 05 81 01 c0
使用本站提供的USB标准请求及描述符在线分析工具http://www.usbzh.com/tool/usb.html 分析内容如下:
当然也可以通过HidReportParser.exe来分析。
0x05, 0x0C, // Usage Page (Consumer)
0x09, 0x01, // Usage (Consumer Control)
0xA1, 0x01, // Collection (Application)
0x85, 0x01, // Report ID (1)
0x19, 0x00, // Usage Minimum (Unassigned)
0x2A, 0x3C, 0x02, // Usage Maximum (AC Format)
0x15, 0x00, // Logical Minimum (0)
0x26, 0x3C, 0x02, // Logical Maximum (572)
0x95, 0x01, // Report Count (1)
0x75, 0x10, // Report Size (16)
0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x80, // Usage (Sys Control)
0xA1, 0x01, // Collection (Application)
0x85, 0x02, // Report ID (2)
0x19, 0x81, // Usage Minimum (Sys Power Down)
0x29, 0x83, // Usage Maximum (Sys Wake Up)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x03, // Report Count (3)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x95, 0x05, // Report Count (5)
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
// 50 bytes
可以看到,这个HID报告描述符中包括了2个应用集合,所以其子设备复合出的2个子HID设备功能分别对应这两个HID报告描述符的功能。而其硬件ID中的COL则是代表的是集合中的第几个。其硬件ID的生成可见 http://www.usbzh.com/article/detail-954.html 一节中的代码。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936