+ -

USB 设备描述符

欢迎加入字节流官方QQ群:952873936或联系站长进行技术交流。

设备描述符是USB设备的第一个描述符,每个USB设备都得具有设备描述符,且只能拥有一个。

设描述符符的定义:

windows系统中设描描述符的结构体定义如下:

struct _DEVICE_DESCRIPTOR_STRUCT 
{ 
    BYTE bLength;           //设备描述符的字节数大小,为0x12 
    BYTE bDescriptorType;   //描述符类型编号,为0x01 
    WORD bcdUSB;           //USB版本号 
    BYTE bDeviceClass;   //USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型 
                           //0x00不是在设备描述符中定义的,如HID 
     BYTE bDeviceSubClass;   //usb分配的子类代码,同上,值由USB规定和分配的 
     BYTE bDeviceProtocl;     //USB分配的设备协议代码,同上 
     BYTE bMaxPacketSize0;   //端点0的最大包的大小 
     WORD idVendor;           //厂商编号 
     WORD idProduct;         //产品编号 
     WORD bcdDevice;         //设备出厂编号 
     BYTE iManufacturer;     //描述厂商字符串的索引 
     BYTE iProduct;           //描述产品字符串的索引 
     BYTE iSerialNumber;     //描述设备序列号字符串的索引 
     BYTE bNumConfiguration; //可能的配置数量 
}

设备描述符的含义:

  • bLength : 描述符大小.固定为0x12.
  • bDescriptorType : 设备描述符类型.固定为0x01.
  • bcdUSB : USB 规范发布号.表示了本设备能适用于那种协议,如2.0=0200,1.1=0110等.
  • bDeviceClass : 类型代码(由USB指定)。当它的值是0时,表示所有接口在配置描述符里,并且所有接口是独立的。当它的值是1到FEH时,表示不同的接口关联的。当它的值是FFH时,它是厂商自己定义的.
  • bDeviceSubClass : 子类型代码(由USB分配).如果bDeviceClass值是0,一定要设置为0.其它情况就跟据USB-IF组织定义的编码.
  • bDeviceProtocol : 协议代码(由USB分配).如果使用USB-IF组织定义的协议,就需要设置这里的值,否则直接设置为0。如果厂商自己定义的可以设置为FFH.
  • bMaxPacketSize0 : 端点0最大分组大小(只有8,16,32,64有效).
  • idVendor : 供应商ID(由USB分配).
  • idProduct : 产品ID(由厂商分配).由供应商ID和产品ID,就可以让操作系统加载不同的驱动程序.
  • bcdDevice : 设备出产编码.由厂家自行设置.
  • iManufacturer : 厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有.
  • iProduct : :产品描述符字符串索引.同上.
  • iSerialNumber : 设备序列号字符串索引.同上.
  • bNumConfigurations : 可能的配置数.指配置字符串的个数

设备描述符示例

通过windbg查看设描述符
0: kd> dt _USB_DEVICE_DESCRIPTOR 0xffffbe09`51e0be20
xxx!_USB_DEVICE_DESCRIPTOR
 +0x000 bLength          : 0x12 ''
 +0x001 bDescriptorType  : 0x1 ''
 +0x002 bcdUSB           : 0x200
 +0x004 bDeviceClass     : 0 ''
 +0x005 bDeviceSubClass  : 0 ''
 +0x006 bDeviceProtocol  : 0 ''
 +0x007 bMaxPacketSize0  : 0x40 '@'
 +0x008 idVendor         : 0x1234
 +0x00a idProduct        : 0x5678
 +0x00c bcdDevice        : 0
 +0x00e iManufacturer    : 0x19 ''
 +0x00f iProduct         : 0x2a '*'
 +0x010 iSerialNumber    : 0x65 'e'
 +0x011 bNumConfigurations : 0x1 ''   配置数量

使用UsbView获取Logitech鼠标设备描述符

Logitech鼠标设备描述符

微信公众号
字节流公众号  字节流QQ群:952873936
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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