设备描述符
bLength ——是设备描述符的总长度,以字节为单位。
bcdUSB ——则显示了设备支持的 USB 版本,通常是最新版本。这是一个二进制代码形式的十进制数 据,采用 0xAABC 的形式,其中 A 是主版本号, B 是次版本号, C 是子次版本号。例如, USB 2.0 设备拥有 0x0200 值, USB 1.1 设备拥有0x0110 值。通常,主机将使用 bcdUSB 以确定需要加载的 USB 驱动器。
bDeviceClass、 bDeviceSubClass 、 bDeviceProtocol ——均由操作系统使用,以便在枚举过程中识别 USB 设备的驱动器。将代码填充设备描述符中的这些字段内可以防止各种不同的接口独立运行,如一个复合设备。大部分 USB 设备都在接口描述符中定义了它的类别,并将这些字段保持为 00h。
bMaxPacketSize ——报告由端点 0 支持的数据包的最大字节数量。根据设备,数据包的大小可以为 8 个字节、 16 个字节、 32 个字节和 64 个字节。
iManufacturer、 iProduct 、 iSerialNumber ——字符串描述符索引。 字符串描述符包括有关制造商、产品和序列号等信息。如果存在字符串描述符,这些变量应该指向其索引位置。如果没有任何字符串,那么应该将零值填充到各个字段内。
bNumConfigurations ——定义了设备可支持的配置总数。多个配置使设备能够根据特定条件按照特定条件进行不同的配置,如由总线供电或自供电。
配置描述符
wTotalLength ——本配置的整个层次的长度。该值报告了本配置的字节总数以及一个配置所需的接口和端点描述符。
bNumInterfaces ——定义了在该指定配置中接口总数。最小为 1 个接口。
bConfigurationValue ——选择该配置时,传递给SET_CONFIGURATION的参数。
bmAttributes ——定义了 USB 设备的参数。 如果设备由总线供电, 那么位 6 将被设置为 0, 如果设备自供电, 那么位 6 将被设置为 1。如果 USB 设备支持远程唤醒,则位 5 将被设置为 1。如果不支持远程唤醒,则位 5 将被设置为 0。
bMaxPower ——定义了设备全速运行时通过总线消耗的最大功耗,以 2 mA 为单位。如果拔出自供电设备的外部电源,那么它的功耗不会超过该字段中所显示的值。
接口描述符
bLength ——该描述符包含的字节数目。
bDescriptorType ——接口描述符的类型常数。
bInterfaceNumber ——该接口的序号:在该配置所支持的众多接口中的序号(一般从0开始)。
bAlternateSetting ——用来选择该接口的某个setting。
bNumEndpoints ——该接口支持多少个非0的EP。
bInterfaceClass ——接口所属的类值: 零值为将来的标准保留。如果此域的值设为FFH,则此接口类由厂商说明。 所有其它的值由USB 说明保留。
bInterfaceSubClass ——子类码 ,这些值的定义视bInterfaceClass域而定。 如果bInterfaceClass域的值为零则此域的值必须为零。bInterfaceClass域不为FFH则所有值由USB 所保留。
bInterfaceProtocol ——协议码:bInterfaceClass 和bInterfaceSubClass 域的值而定.如果一个接口支持设备类相关的请求此域的值指出了设备类说明中所定义的协议。
iInterface ——描述此接口的字串描述表的索引值。
常用bInterfaceClass分配:AUDIO=1;COMMUNICATION=2;HID=3;MSC=8