+ -

HID 描述符(通用)

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字符串描述符一节。

  • USB基础
  • USB摄像头UVC
  • USB人机交互HID
  • USB音频UAC
  • Windows基础
  • 磁盘与文件系统
  • Windows编程
  • Windows驱动
  • 开发模块
  • Windows运维
  • Linux相关
  • C语言学习
  • 高级语言
  • 前端开发
  • 服务器开发
  • 数据库
  • 字节流笔记
  • 字节流
  • 微信公众号
    字节流公众号  字节流QQ群:952873936
    取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    Powered by bytekits.com,汇天下文字,成非凡梦想!!!