一 USB设备参数结构体的定义
USB_DEVICE_INFO类的定义在
D:/WINCE420/PUBLIC/COMMON/OAK/DRIVERS/USB/HCD/COMMON/globals.hpp
typedef struct _USB_DEVICE_INFO {
DWORD dwCount;
USB_DEVICE_DESCRIPTOR Descriptor;
LPNON_CONST_USB_CONFIGURATION lpConfigs;
LPNON_CONST_USB_CONFIGURATION lpActiveConfig;
} USB_DEVICE_INFO, * LPUSB_DEVICE_INFO;
1 成员USB_DEVICE_DESCRIPTOR Descriptor在globals.hpp中没有定义,但在USB协议中有定义.
2 成员LPNON_CONST_USB_CONFIGURATION lpConfigs,lpActiveConfig的定义
typedef struct _NON_CONST_USB_CONFIGURATION {
DWORD dwCount;
USB_CONFIGURATION_DESCRIPTOR Descriptor;
LPBYTE lpbExtended;
// Total number of interfaces (including alternates)
DWORD dwNumInterfaces;
LPNON_CONST_USB_INTERFACE lpInterfaces;
} NON_CONST_USB_CONFIGURATION,LPNON_CONST_USB_CONFIGURATI;
二 UKEY开发中涉及的几个描述符
UKEY驱动开发的过程中,主要在attachdevice函数中读取设备的参数,有时读取的参数可能是错的,这是就必须对参数进行强行赋值,然后传到pdatabuffer里.主要涉及的参数有以下几个:
(1) deviceInfo. Descriptor//设备描述表, 在attachdevice的第6/7步读取.
(2) deviceInfo. lpConfigs. Descriptor//配置描述表,在attachdevice的第9步读取.
(3) deviceInfo. lpConfigs. lpInterfaces. Descriptor//接口描述表第10步读取
(4) deviceInfo. lpConfigs. lpEndpoints. Descriptor//接口描述表第10步读取
1设备
设备描述表给出了USB设备的一般信息。这包括对设备及所有设备配置起全程作用的信息。一个USB设备只能有一个设备描述表。
设备描述表(USB_DEVICE_DESCRIPTOR Descriptor)
偏移量 |
域 |
大小 |
值 |
描述 |
0 |
bLength |
1 |
数字 |
此描述表的字节数 |
1 |
bDecriptorType |
1 |
常量 |
描述表种类为设备 |
2 |
bcdUSB |
2 |
BCD码 |
此设备与描述表兼容的USB设备说明版本号(BCD 码) |
4 |
bDeviceClass |
1 |
类 |
设备类码 如果此域的值为0则一个设置下每个接口指出它自己的类,并个接口各自独立工作。 如果此域的值处于1~FEH之间,则设备在不同的接口上支持不同的类。并这些接口可能不能独立工作。此值指出了,这些接口集体的类定义。 如果此域设为FFH,则此设备的类由厂商定义。 |
5 |
bDeviceSubClass |
1 |
子类 |
子类码 这些码值的具体含义根据bDeviceClass 域来看。 如bDeviceClass 域为零,此域也须为零 如bDeviceClass 域为 |