设备描述符通常在插入后最先被主机读取,每个设备都有且只有一个设备描述符
struct _DEVICE_DESCRIPTOR_STRUCT
{
BYTE bLength;
BYTE bDescriptorType;
WORD bcdUSB;
BYTE bDeviceClass;
BYTE bDeviceSubClass;
BYTE bDeviceProtocol;
BYTE bMaxPacketSize0;
WORD idVendor;
WORD idProduct;
WORD bcdDevice;
BYTE iManufacturer;
BYTE iProduct;
BYTE iSerialNumber;
BYTE bNumConfiguration;
}
上面是关于设备描述符的相关结构体,下面来挨个介绍下它的含义。
bLength : 用来确定描述符的大小.固定值为0x12.也就是整个结构体占18个字节。
bDescriptorType : 设备描述符类型.固定为0x01.
bcdUSB : 这个就相当于usb的版本号.前面的bcd前缀代表使用的是BCD码表示。
bDeviceClass :bDeviceSubClass : bDeviceProtocol :
这三个分别代表设备类型,子类型,设备使用的协议,包含图像类、无线类、人机交互类、音频类等等,子类比如的音频控制、音频流等等,协议比如鼠标、键盘等
bMaxPacketSize0 : 端点0最大分组大小(只有8,16,32,64有效).
idVendor : 供应商ID.由USB协议分配,厂商需要缴纳一定费用才能申请
idProduct : 产品ID。
bcdDevice : 设备出产编码.由厂家自行设置.
iManufacturer : 厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有.
iProduct : :产品描述符字符串索引.同上.
iSerialNumber : 设备序列号字符串索引.同上.
bNumConfigurations : 可能的配置数.定义设备以当前速度支持的配置数量
|