我正在尝试编写一个HID Report Descriptor
解析器。监视某些HID设备时,我从.pcap
文件中获取了这些描述符,但遇到了一些我不理解的问题。
例如,当我插入键盘时,会得到device descriptor
,configuration descriptor
和string descriptors
,但我还会获得2次传输,每个传输具有不同的HID Report Descriptor
。我最近阅读了很多USB文档,因此我知道在Configuration Descriptor
中,它向我发送了我的设备具有更多HID Class
两个接口的信息(在此示例中为2个)。在第一个界面中,它告诉我bInterfaceProtocol = Keyboard
,但第二个只是0
。然后在第一个HID Report Descriptor
上我得到了GLobal item Usage = Generic Desktop Controls
和Local item Usage = Keyboard
。但是在第二篇文章中,它的结构更加合理,如下所示:
另外,第二个HID Report Descriptor's
Main item's Collections
也包含Report IDs
。
我的问题是:
为什么键盘正常的东西具有多个接口,因此有多个HID Report Descriptors
?
有没有办法从第二个HID Report descriptor
得知它是键盘描述符?稍后在代表其输入内容时会有所帮助。
如果我得到了多个HID Report descriptors
,并且其中一个由Report IDs
构成,而第二个则不是,那么我如何从输入中得知该设备发送给我,但前提是该设备已发送给我是否使用Report ID
?
谢谢您的输入。