而报告描述符,是描述一个报告以及报告里面的数据是用来干什么的.通过它,USB Host可以解析出报告里面的数据所表示的含义.它通过控制输入断点0返回,Host使用获取报告描述符命令来获取报告描述符,注意这个请求是发送到Interface,而不是设备.一个报告描述符可以描述多个报告,不同的报告通过Report ID来区分,Reort ID在报告...
keyboard_hid_descriptor = { 0x09,//bLength长度9个,不可变 0x21,//bDescriptorTypeHID描述符 0x0110,//bcdHIDHID专属版本号 0x00,//bCountryCode国家代码 0x01,//bNumDescriptors附属类描述字的数目1个 0x22,//bDescriptorType描述字类型:报告 HID_KEYBOARD_REPORT_DESCRIPTOR_SIZE// 键盘HID报告描述字总...
//输入用,常量,值,绝对值 0x81 0x03//INPUT (CnstVarAbs) //上面这8个bit是常量,设备必须返回0 //这样的数据段个数为5 0x95 0x05//REPORT_COUNT (5) //每个段大小为1bit 0x75 0x01//REPORT_SIZE (1) //用途是LED,即用来控制键盘上的LED用的,因此下面会说明它是输出用 0x05 0x08//USAGE_PAGE...
再接下来处理设备的描述符和interface相关的信息,最后调用了函数HidMdd_Attach()将report descriptor信息传递给MDD层。 MDD层的HidMdd_Attach()函数这里就不仔细研究,只关注这里调用了一个函数LoadHidClients(),该函数也位于MDD层的Hidmdd.cpp文件中。接下来会用到另一部分关于HID设备的注册表信息,如下: [HKEY_LOCAL...
USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道。 USB描述符的内容 标准的USB设备总共包括五种USB描述符:设备描述符,配置描述符,接口描...
HID(Human Interface Device)报告描述符是USB设备描述符的一种,用于定义人机接口设备(如键盘、鼠标、游戏手柄等)与主机之间的通信方式和数据格式。Report Descriptor包含了设备的所有输入、输出和特征报告的详细信息。 基础概念 Report ID:报告ID是一个字节值,用于区分不同的报告。每个报告可以有一个唯一的Report ID,这...
USB设备数据的读写操作由总线驱动现在,我们可以直接使用总线读取到的数据,然后解析这些数据的含义、再进行相关的操作就可以了(这里需要注意的一点是USB总线驱动只提供USB设备的读写操作函数,这函数是通用的,即里面的数据的含义总线驱动并不知道)。 USB设备驱动的框架图下,具体的代码可以参考内核中的/drivers/hid/usb...
HID描述符是HID类特有的描述符,保证设备正确识别,遵循规定的格式。 偏移量 域 大小/字节 说明 0 bLength 1 该描述符的长度(0x09字节) 1 bDescriptorType 1 描述符类型(0x21 HID描述符) 2 bcdHID 2 HID规范版本 4 bCountryCode 1 国家代码 5
iInterface0HID Device Descriptor:bLength9bDescriptorType33bcdHID1.11bCountryCode0Not supported bNumDescriptors1bDescriptorType34Report wDescriptorLength31Report Descriptors:**UNAVAILABLE**Endpoint Descriptor:bLength7bDescriptorType5bEndpointAddress0x81EP1IN ...