HID 描述符(通用)
2020-10-31
6694
0
HID设备一般与其它设备组合成USB复合设备.在Windows下USB通用驱动程序USBCCGP.SYS根据接口进行枚举。
设备描述符
HID的设备描述与通用USB驱动程序数据结构定义一致。
不过其bDeviceClass,bDeviceSubClass,bDeviceSubClass必须置为0,其端点0可支持的最大字节数可为8,16,32或64.
struct _DEVICE_DESCRIPTOR_STRUCT
{
BYTE bLength; //设备描述符的字节数大小,为0x12
BYTE bDescriptorType; //描述符类型编号,为0x01
WORD bcdUSB; //USB版本号
BYTE bDeviceClass; //USB分配的设备类代码,HID必须为0
BYTE bDeviceSubClass; //usb分配的子类代码,HID必须为0
BYTE bDeviceProtocl; //USB分配的设备协议代码,HID必须为0
BYTE bMaxPacketSize0; //端点0的最大包的大小
WORD idVendor; //厂商编号
WORD idProduct; //产品编号
WORD bcdDevice; //设备出厂编号
BYTE iManufacturer; //描述厂商字符串的索引
BYTE iProduct; //描述产品字符串的索引
BYTE iSerialNumber; //描述设备序列号字符串的索引
BYTE bNumConfiguration; //可能的配置数量
}DEVICE_DESCRIPTOR_STRUCT
USB设备描述符各字段的详细定义见 USB设备描述符一节。
配置描述符
HID配置描述符在HID规范中并无特殊定义,关于配置描述符各字段的详细定义,详见USB配置描述符一节。
接口描述符
HID的接口描述符需要将bInterfaceClass设为3,以表示是HID设备;子类为00或01;协议代码可以为00,01或02。
struct _INTERFACE_DESCRIPTOR_STRUCT
{
BYTE bLength; //设备描述符的字节数大小,为0x09
BYTE bDescriptorType; //描述符类型编号,为0x04
BYTE bInterfaceNunber; //接口的编号
BYTE bAlternateSetting;//备用的接口描述符编号
BYTE bNumEndpoints; //该接口使用端点数,不包括端点0
BYTE bInterfaceClass; //接口类型 ,必须为03.
BYTE bInterfaceSubClass;//接口子类型 ,为00或为01
BYTE bInterfaceProtocol;//接口所遵循的协议 ,可为00,01,02
BYTE iInterface; //描述该接口的字符串索引值
}INTERFACE_DESCRIPTOR_STRUCT
关于接口描述符各字段的详细定义,详见USB接口描述符一节。
端点描述符
HID端点描述符一般将端点设为中断方式。
HID端点描述符在HID规范中并无特殊定义,关于端点描述符各字段的详细定义,详见USB端点描述符一节。
字符串描述符
HID字符串描述符在HID规范中并无特殊定义,关于字符串描述符各字段的详细定义,详见USB字符串描述符一节。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936