-
HID 设备除了支持 USB 设备的 5 种标准描述符之外,还支持 HID 设备特有的 3 种描
述符。这些描述符是:
USB 标准描述符:设备、配置、接口、端点和字符串描述符。
HID 特有的描述符:HID、报表(Report)和实体(Physical)描述符。(基本不用,至少我没遇到需要描述实体描述符的) - 从描述符的关联关系看,HID 描述符是关联于接口。所以如果一个 HID 设备有 2 个端点,设备不需要每个端点有一个 HID 描述符。
- 从前面的 USB 描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段(bDescriptorType)表明描述符的种类,下表列出了不同描述符的类型字段数值。
- 对于一个 HID 设备,设备描述符与配置描述符没有 HID 特定的信息。其设备描述符的bDeviceClass 和 bDeviceSubClass 字段的值为 0,接口描述符的 bInterfaceClass 字段值为 03,表示设备的该接口是 HID 类别。在接口描述符中其他包含 HID 特定信息的字段还有子类别码(blnterfaceSubClass)与协议码(blnterfaceProtocol 字段)。
- 在接口描述符中子类别码字段等于 1 表示此设备支持启动接口(Boot Interface)。如果设备有启动接口,即便主机的 HID 没有加载驱动程序,设备也可以使用。这种情形可能发生在计算机是由 DOS 直接启动,在启动时观看系统设置画面或使用 Windows 的安全模式时。
- 含有启动接口的键盘或鼠标可以使用 BIOS 或许多主机支持的默认简单协议。HID 规范定义了键盘与鼠标的启动接口协议。
- 如果设备没有启动接口,并且接口描述符中协议码字段是 1,表示设备支持键盘接口,协议码字段是 2,表示支持鼠标接口。接口描述符中协议码字段是 0,表示设备不支持启动协议。
- 在 HID Usage Tables 规范中定义了键盘与鼠标的启动描述符(Boot Descriptor)。BIOS 不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可。在操作系统加载 HlD 驱动程序后会使用Set_Protocol 请求,将设备由启动协议转换成报表协议。
HID设备描述符
最新推荐文章于 2024-08-02 08:06:56 发布