您现在的位置是:主页 > USB2.0规范 >

USB 设备描述符

发布时间:2022-11-13 04:32:10所属栏目:USB2.0规范 已帮助编辑作者:【USB接口百科】

设备描述符是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 bDeviceProtocol;   //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.

操作系统使用bDeviceClass、bDeviceSubClass和bDeviceProtocol来查找设备的类驱动程序。通常只有 bDeviceClass 设置在设备级别。大多数类规范选择在接口级别标识自己,因此将 bDeviceClass 设置为 0x00。这允许一个设备支持多个类,即USB复合设备。

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鼠标设备描述符

     以上就是USB接口百科为您提供USB 设备描述符的解读,本文章链接: http://www.usb-hub.cn/usb20gf/42283.html 欢迎分享转载,更多婚礼相关资讯请前往USB2.0规范