• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > USB總線驅動中的標識串

    USB總線驅動中的標識串

    作者: 時間:2016-09-12 來源:網絡 收藏

    在驅動設備的枚舉和加載過程中,設備的起著很重要的作用。設備一般分為硬件、兼容類標識串和設備標識串這幾種。這些標識串其實是由上一級的驅動程序(一般是)產生的,Windows系統用它來尋找和加載相應的驅動程序。

    本文引用地址:http://www.czjhyjcfj.com/article/201609/303490.htm

    舉一個簡單的例子,當你插入一個U盤時,USB總線就會檢測到這個U盤設備被插入了,然后,它就會創建這個U盤設備的PDO,同時呢,會給這個PDO產生標識串,就象你在設備管理器中設備屬性對話框的詳細信息中看到的那樣:

    設備范例Id:

    USBVID_123APID_567B1234567890ABCDEF

    硬件Id:

    USBVid_123APid567BRev_0001

    USBVid_123APid567B

    兼容Id:

    USBClass_08SubClass_06Pro_50

    USBClass_08SubClass_06

    USBClass_08

    每種設備產生的標識串都是不一樣的,特別的,對于USB設備,這些標識串的產生是有一定的規范的。

    USB設備分為單功能設備和多功能設備。單功能設備最常見,如U盤、鼠標等,而多功能設備是指設備描述符里具備多個接口描述符的設備,如USB手柄,包含按鍵和聽筒及受話器,按鍵部分定義的是HID接口,聽筒及受話器部分定義的是Audio接口。

    多功能設備的枚舉比單功能設備要復雜一些,USB總線要先加載usbccgp.sys驅動。然后,這個驅動按每個功能接口繼續枚舉設備。

    硬件標識串

    它是由多個子字符串組成的,以來分隔,以結尾。

    對于普通的單功能設備來說,一般是2個子字符串,第一個字符串是 VID_xxxxPID_xxxxREV_xxxx,每個xxxx都是4位的16進制字符數字,分別表示Vendor ID, Product ID, Revision ID。一般而言,這三項能精確確定某一款具體的設備。但一般情況下,Revision ID不是很重要,在設備驅動安裝時可以不指定,所以就有了第二個字符串USBVID_xxxxPID_xxxx。

    對于多功能設備來說,一般包含一個子字符串USBVID_xxxxPID_xxxxMI_xx,前面的xxxx分別表示是 Vendor ID和Product ID,后面的xx則是表示接口的數目,與設備的接口描述符的bInterfaceNumber項一致。

    兼容標識串

    它也是由多個子字符串組成的,以來分隔,以結尾。

    對于普通的單功能設備來說,一般是3個子字符串,第一個字符串是 CLASS_xxSUBCLASS_xxPROT_xx,每個xx都是2位的16進制字符數字,分別表示Class ID, SubClass ID, Protocol ID。一般而言,這三項能精確確定該設備是屬于哪一類設備用的是什么協議。其中Class ID最重要,其它兩項則有可能會被忽略,所以就有了第二、第三個子字串:USBCLASS_xxSUBCLASS_xx,CLASS_xx。

    對于多功能設備來說,一般是4個子字符串,前三個子字符串是差不多 的:USBDEVCLASS_xxSUBCLASS_xxPROT_xx,USB DEVCLASS_xxSUBCLASS_xx,USBDEVCLASS_xx,第四個子字符串則是 USBCOMPOSITE。



    關鍵詞: USB 總線驅動 標識串

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 阳原县| 济源市| 锦屏县| 连南| 姚安县| 常山县| 休宁县| 敦煌市| 永仁县| 新建县| 云南省| 玛多县| 郑州市| 淮安市| 临沂市| 阿尔山市| 古丈县| 铁力市| 龙门县| 罗平县| 阿巴嘎旗| 翁牛特旗| 南皮县| 清水县| 镇康县| 米泉市| 黄山市| 新邵县| 六安市| 横山县| 蓬安县| 翁牛特旗| 五指山市| 长治县| 丹江口市| 板桥市| 二连浩特市| 鄱阳县| 宜阳县| 无为县| 德安县|