⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbdescriptor.txt

📁 USBdescript
💻 TXT
字号:
                            描述符
表11-3. 描述符表

描述符类型   描述 
设备         描述整个设备 
配置         描述设备的一个配置 
接口         描述配置中的一个接口 
端点         描述接口中的一个端点 
串           一个Unicode串,该串用自然语言描述设备、配置、接口,或端点 
电源配置     描述电源管理能力 
接口电源     描述function的电源管理能力 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            设备描述符
typedef struct _USB_DEVICE_DESCRIPTOR {
    UCHAR bLength;                  //bLength域应等于18
    UCHAR bDescriptorType;          // bDescriptorType域应等于1以指出该结构是一个设备描述符
    USHORT bcdUSB;                 //包含该描述符遵循的USB规范的版本号(以BCD编码)。
    UCHAR bDeviceClass; 
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;         //默认控制端点(端点0)上的数据包容量的最大值.
    USHORT idVendor;               //指定厂商代码
    USHORT idProduct;              //厂商专用的产品标识
    USHORT bcdDevice;              //指出设备的发行版本号(0x0100对应版本1.0)。
    UCHAR iManufacturer;           //述设备生产厂商
    UCHAR iProduct;                //产品
    UCHAR iSerialNumber;           //序列号
    UCHAR bNumConfigurations;      //指出该设备能实现多少种配置
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;

USB设备类代码

符号名 类代码 描述 
USB_DEVICE_CLASS_RESERVED           0 指出类代码存在于接口描述符中 
USB_DEVICE_CLASS_AUDIO              1 操作模拟或数字音频、语音、和其它与声音相关的数字设备 
USB_DEVICE_CLASS_COMMUNICATIONS     2 电讯设备,如调制解调器、电话、应答机,等等 
USB_DEVICE_CLASS_HUMAN_INTERFACE    3 人类接口设备,如键盘、鼠标、麦克风,等等 
USB_DEVICE_CLASS_MONITOR            4 显示器 
USB_DEVICE_CLASS_PHYSICAL_INTERFACE 5 含有实时物理反馈的人类接口设备,如力反馈游戏杆 
USB_DEVICE_CLASS_POWER              6 执行电源管理的人类接口设备,如电池、充电器,等等 
USB_DEVICE_CLASS_PRINTER            7 打印机 
USB_DEVICE_CLASS_STORAGE            8 大容量存储设备,如磁盘和CD-ROM 
USB_DEVICE_CLASS_HUB                9 USB hubs 
USB_DEVICE_CLASS_VENDOR_SPECIFIC    255 厂商定义的设备类 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                    配置描述符
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
    UCHAR bLength;                 //值为9
    UCHAR bDescriptorType;         //值为2
    USHORT wTotalLength;         //该配置描述符长度加上该配置内所有接口和端点描述符长度的总和
    UCHAR bNumInterfaces;         //该配置有多少个接口
    UCHAR bConfigurationValue;    //该配置的索引值,第一个配置描述符的索引为1
    UCHAR iConfiguration;//一个可选的串描述符索引,此值为0表明该配置没有串描述符。

    UCHAR bmAttributes;   //含描述该配置中设备电源和其它特性的的位掩码
    UCHAR MaxPower;          //指出要从USB总线上获取的最大电流量
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            接口描述符
typedef struct _USB_INTERFACE_DESCRIPTOR {
    UCHAR bLength;             //值为9
    UCHAR bDescriptorType;     //值为4
    UCHAR bInterfaceNumber;    //索引值,用在SET_INTERFACE控制事务中以指定要激活的接口
    UCHAR bAlternateSetting;  //索引值,用在SET_INTERFACE控制事务中以指定要激活的接口
    UCHAR bNumEndpoints;      //指出该接口有多少个端点
    UCHAR bInterfaceClass;   //接口提供的功能
    UCHAR bInterfaceSubClass; //接口提供的功能
    UCHAR bInterfaceProtocol;//接口提供的功能
    UCHAR iInterface;         //iInterface是一个串描述符的索引,0表示该接口无描述串。
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                               端点描述符
typedef struct _USB_ENDPOINT_DESCRIPTOR {
    UCHAR bLength;           //值为7
    UCHAR bDescriptorType;   //值为5
    UCHAR bEndpointAddress;  //域编码端点的方向性和端点号
    UCHAR bmAttributes;      //低两位指出端点的类型
    USHORT wMaxPacketSize;   //值指出该端点在一个事务中能传输的最大数据量
    UCHAR bInterval;         //用于指定循检间隔时间的bInterval域,时间单位为毫秒
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                 串描述符
设备、配置、端点描述符都可以包含一个指向人类可读串的指针。串本身以USB串描述符的形式保存在设
备中,串字符使用Unicode编码。
typedef struct _USB_STRING_DESCRIPTOR {
    UCHAR bLength;          //根据串数据长度可变
    UCHAR bDescriptorType; //值应为3
    WCHAR bString[1];      //包含串数据本身
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -