USB 設備第一次連接到主機上時 , 要接收主機的枚舉( Enumeration)和配置( Configuration), 目的就是讓主機知道該設備具有什麼功能、是哪一類的USB設備、需要佔用多少USB的資源、使用了哪些傳輸方式以及傳輸的數據量多大等等。
(1)、描述符
描述符(Descriptor), 是一個完整的數據結構,可以通過C語言等編程實現,並存儲在USB設備中, 用於描述一個USB設備的所有屬性。
描述符類型:
設備描述符(Device Descriptor ) ;
配置描述符( Configuration Descriptor) ;
接口描述符( Interface Descriptor ) ;
端點描述符( Endpoint Descriptor ) ;
字符串描述符( String Descriptor , 可選)。
(2)、描述符之間的關係
設備描述符是最高級的描述符, 而端點描述符是最低級的描述符, 如下圖所示。每一個設備只有一個設備描述符, 但設備描述符可以包含多個配置描述符; 而一個配置描述符又可包含多個接口描 述符; 一個接口使用了幾個端點, 就有幾個端點描述符。字符串描述符是可選的。
每一個描述符都是一系列的字段(Field, 爲了與組成包的域相區別, 這裏叫做字段)所組成的, 每個字段都是一連串二進制數。其中設備描述符的bNumConfigurations 字段可設定配置描述符的個數; 配置描述符的bNumInterface字段用於設定接口描述符的個數; 而接口描述符的 bNumEndpoints 則表示了該接口所用到的端點數量, 也就是端點描述符的數量。
如有錯誤,請及時提出。萬分感謝!