?? usbdescriptor.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 + -