Windows HID报告描述符解释

Windows HID报告描述符解释,windows,usb,pcap,hid,Windows,Usb,Pcap,Hid,我正在尝试编写一个HID报告描述符解析器。在监视我的一些HID设备时,我从.pcap文件中获取这些描述符,我遇到了一些我不理解的事情 例如,当我插入键盘时,我得到了设备描述符、配置描述符和字符串描述符,但我也得到了两个传输,每个传输都有一个不同的HID报告描述符。我最近读了很多USB文档,所以我知道在配置描述符中,它告诉我我的设备有更多接口(在本例中为2个),包括HID类。在第一个界面中,它告诉我bInterfaceProtocol=Keyboard,但第二个界面就是0。然后在第一个HID报告描

我正在尝试编写一个
HID报告描述符
解析器。在监视我的一些HID设备时,我从
.pcap
文件中获取这些描述符,我遇到了一些我不理解的事情

例如,当我插入键盘时,我得到了
设备描述符
配置描述符
字符串描述符
,但我也得到了两个传输,每个传输都有一个不同的
HID报告描述符
。我最近读了很多USB文档,所以我知道在
配置描述符
中,它告诉我我的设备有更多接口(在本例中为2个),包括
HID类
。在第一个界面中,它告诉我
bInterfaceProtocol=Keyboard
,但第二个界面就是
0
。然后在第一个
HID报告描述符上,我得到
GLobal item Usage=Generic Desktop Controls
Local item Usage=Keyboard
。但在第二种情况下,它更结构化,如下所示:

另外,第二个
HID报告描述符的
主项的集合
中也有
报告ID

我的问题是:

为什么像键盘这样普通的东西有多个接口,因此有多个
HID报告描述符

有没有办法从第二个
HID报告描述符
判断它是键盘描述符?它将帮助我以后表示它的输入

如果我得到了这些多个
HID报告描述符
,其中一个是用
报告ID
构造的,而第二个不是,那么我如何从输入中判断这个设备发送给我的,无论它是否用
报告ID

谢谢你的意见