USB设备的描述符

 基本上分4层,最高是设备描述符,其次是配置描述符,再是接口描述符,最后是端点描述符。

结构定义如下:

 

1、设备描述符

 

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; //可能的配置数量

 

 

 

}

 

 

 

 

 

2、配置描述符

 

struct _CONFIGURATION_DEscriptOR_STRUCT

 

{

 

 BYTE bLength;          //设备描述符的字节数大小,为0x12

 

 BYTE bDescriptorType;  //描述符类型编号,为0x01

 

 WORD wTotalLength;     //配置所返回的所有数量的大小

 

 BYTE bNumInterface;    //此配置所支持的接口数量

 

 BYTE bConfigurationVale;   //Set_Configuration命令需要的参数值

 

 BYTE iConfiguration;       //描述该配置的字符串的索引值

 

 BYTE bmAttribute;          //供电模式的选择

 

 BYTE MaxPower;             //设备从总线提取的最大电流

 

}

 

 

 

3、字符描述符

 

struct _STRING_DEscriptOR_STRUCT

 

{

 

 BYTE bLength;          //设备描述符的字节数大小,为0x12

 

 BYTE bDescriptorType;  //描述符类型编号,为0x01

 

 BYTE SomeDescriptor[36];          //UNICODE编码的字符串

 

}

 

 

 

4、接口描述符

 

struct _INTERFACE_DEscriptOR_STRUCT

 

{

 

 BYTE bLength;          //设备描述符的字节数大小,为0x12

 

 BYTE bDescriptorType;  //描述符类型编号,为0x01

 

 BYTE bInterfaceNunber; //接口的编号

 

 BYTE bAlternateSetting;//备用的接口描述符编号

 

 BYTE bNumEndpoints;    //该接口使用端点数,不包括端点0

 

 BYTE bInterfaceClass;  //接口类型

 

 BYTE bInterfaceSubClass;//接口子类型

 

 BYTE bInterfaceProtocol;//接口所遵循的协议

 

 BYTE iInterface;        //描述该接口的字符串索引值

 

}

 

5、端点描述符

 

struct _ENDPOIN_DEscriptOR_STRUCT

 

{

 

 BYTE bLength;          //设备描述符的字节数大小,为0x12

 

 BYTE bDescriptorType;  //描述符类型编号,为0x01

 

 BYTE bEndpointAddress; //端点地址及输入输出属性

 

 BYTE bmAttribute;      //端点的传输类型属性

 

 WORD wMaxPacketSize;   //端点收、发的最大包的大小

 

 BYTE bInterval;        //主机查询端点的时间间隔

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值