在USB中USB HOST 是通過各種描述符來識別設備的,有 設備描述符,接口描述符,端點描述符,字符描述符,報告描述符等
設備描述符:一個設備只有一個設備描述符
typedef struct _USB_DEVICE_DESCRIPTOR_
{
BYTE bLength,
BYTE bDescriptorType,
WORD bcdUSB,
BYTE bDeviceClass,
BTYE bDeviceSubClass,
BYTE bDeviceProtol,
BYTE bMaxPacketSize0,
WORD idVenderI,
WORD idProduct,
WORD bcdDevice,
BYTE iManufacturer,
BYTE iProduct,
BYTE iSerialNumber,
BYTE iNumConfiguations
}USB_DEVICE_DESCRIPTOR;
bLength : 描述符大小.固定為0x12.
bDescriptorType : 設備描述符類型.固定為0x01.
bcdUSB : USB 規范發布號.表示了本設備能適用於那種協議,如2.0=0200,1.1=0110等.
idVendor : 供應商ID(由USB分配).
bcdDevice : 設備出產編碼.由廠家自行設置.
iSerialNumber : 設備序列號字符串索引.同上.
{
BYTE bLength,
BYTE bDescriptorType,
WORD wTotalLength,
BYTE bNumInterfaces,
BYTE bConfigurationValue,
BYTE iConfiguration,
BYTE bmAttributes,
BYTE MaxPower
}USB_CONFIGURATION_DESCRIPTOR;
bLength : 描述符大小.固定為0x09.
bDescriptorType : 配置描述符類型.固定為0x02.
wTotalLength : 返回整個數據的長度.指此配置返回的配置描述符,接口描述符以及端點描述符的全部大小.
bNumInterfaces : 配置所支持的接口數.指該配置配備的接口數量,也表示該配置下接口描述符數量.
bConfigurationValue : 作為Set Configuration的一個參數選擇配置值.
iConfiguration : 用於描述該配置字符串描述符的索引.
bmAttributes : 供電模式選擇.Bit4-0保留,D7:總線供電,D6:自供電,D5:遠程喚醒.
MaxPower : 總線供電的USB設備的最大消耗電流.以2mA為單位.
{
BYTE bLength,
BYTE bDescriptorType,
BYTE bInterfaceNumber,
BYTE bAlternateSetting,
BYTE bNumEndpoint,
BYTE bInterfaceClass,
BYTE bInterfaceSubClass,
BYTE bInterfaceProtocol,
BYTE iInterface
}USB_INTERFACE_DESCRIPTOR;
bLength : 描述符大小.固定為0x09.
bDescriptorType : 接口描述符類型.固定為0x04.
bInterfaceNumber: 該接口的編號.
bAlternateSetting : 用於為上一個字段選擇可供替換的位置.即備用的接口描述符標號.
bNumEndpoint : 使用的端點數目.端點0除外.
bInterfaceClass : 類型代碼(由USB分配).
bInterfaceSubClass : 子類型代碼(由USB分配).
bInterfaceProtocol : 協議代碼(由USB分配).
iInterface : 字符串描述符的索引
{
BYTE bLength,
BYTE bDescriptorType,
BYTE bEndpointAddress,
BYTE bmAttributes,
WORD wMaxPacketSize,
BYTE bInterval
}USB_ENDPOINT_DESCRIPTOR;
bLength : 描述符大小.固定為0x07.
bDescriptorType : 接口描述符類型.固定為0x05.
bEndpointType : USB設備的端點地址.Bit7,方向,對於控制端點可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端點號.
bmAttributes : 端點屬性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中斷.
wMaxPacketSize : 本端點接收或發送的最大信息包大小.
bInterval : 輪訓數據傳送端點的時間間隔.對於批量傳送和控制傳送的端點忽略.對於同步傳送的端點,必須為1,對於中斷傳送的端點,范圍為1-255.
{
BYTE bLength,
BYTE bDescriptionType,
BYTE bString[1];
}USB_STRING_DESCRIPTION;
bLength : 描述符大小.由整個字符串的長度加上bLength和bDescriptorType的長度決定.
bDescriptorType : 接口描述符類型.固定為0x03.
bString[1] : Unicode編碼字符串.
