新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > USB總線驅(qū)動(dòng)中的標(biāo)識(shí)串

        USB總線驅(qū)動(dòng)中的標(biāo)識(shí)串

        作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

        在驅(qū)動(dòng)設(shè)備的枚舉和加載過(guò)程中,設(shè)備的起著很重要的作用。設(shè)備一般分為硬件、兼容類標(biāo)識(shí)串和設(shè)備標(biāo)識(shí)串這幾種。這些標(biāo)識(shí)串其實(shí)是由上一級(jí)的驅(qū)動(dòng)程序(一般是)產(chǎn)生的,Windows系統(tǒng)用它來(lái)尋找和加載相應(yīng)的驅(qū)動(dòng)程序。

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

        舉一個(gè)簡(jiǎn)單的例子,當(dāng)你插入一個(gè)U盤(pán)時(shí),USB總線就會(huì)檢測(cè)到這個(gè)U盤(pán)設(shè)備被插入了,然后,它就會(huì)創(chuàng)建這個(gè)U盤(pán)設(shè)備的PDO,同時(shí)呢,會(huì)給這個(gè)PDO產(chǎn)生標(biāo)識(shí)串,就象你在設(shè)備管理器中設(shè)備屬性對(duì)話框的詳細(xì)信息中看到的那樣:

        設(shè)備范例Id:

        USBVID_123APID_567B1234567890ABCDEF

        硬件Id:

        USBVid_123APid567BRev_0001

        USBVid_123APid567B

        兼容Id:

        USBClass_08SubClass_06Pro_50

        USBClass_08SubClass_06

        USBClass_08

        每種設(shè)備產(chǎn)生的標(biāo)識(shí)串都是不一樣的,特別的,對(duì)于USB設(shè)備,這些標(biāo)識(shí)串的產(chǎn)生是有一定的規(guī)范的。

        USB設(shè)備分為單功能設(shè)備和多功能設(shè)備。單功能設(shè)備最常見(jiàn),如U盤(pán)、鼠標(biāo)等,而多功能設(shè)備是指設(shè)備描述符里具備多個(gè)接口描述符的設(shè)備,如USB手柄,包含按鍵和聽(tīng)筒及受話器,按鍵部分定義的是HID接口,聽(tīng)筒及受話器部分定義的是Audio接口。

        多功能設(shè)備的枚舉比單功能設(shè)備要復(fù)雜一些,USB總線要先加載usbccgp.sys驅(qū)動(dòng)。然后,這個(gè)驅(qū)動(dòng)按每個(gè)功能接口繼續(xù)枚舉設(shè)備。

        硬件標(biāo)識(shí)串

        它是由多個(gè)子字符串組成的,以來(lái)分隔,以結(jié)尾。

        對(duì)于普通的單功能設(shè)備來(lái)說(shuō),一般是2個(gè)子字符串,第一個(gè)字符串是 VID_xxxxPID_xxxxREV_xxxx,每個(gè)xxxx都是4位的16進(jìn)制字符數(shù)字,分別表示Vendor ID, Product ID, Revision ID。一般而言,這三項(xiàng)能精確確定某一款具體的設(shè)備。但一般情況下,Revision ID不是很重要,在設(shè)備驅(qū)動(dòng)安裝時(shí)可以不指定,所以就有了第二個(gè)字符串USBVID_xxxxPID_xxxx。

        對(duì)于多功能設(shè)備來(lái)說(shuō),一般包含一個(gè)子字符串USBVID_xxxxPID_xxxxMI_xx,前面的xxxx分別表示是 Vendor ID和Product ID,后面的xx則是表示接口的數(shù)目,與設(shè)備的接口描述符的bInterfaceNumber項(xiàng)一致。

        兼容標(biāo)識(shí)串

        它也是由多個(gè)子字符串組成的,以來(lái)分隔,以結(jié)尾。

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

        對(duì)于多功能設(shè)備來(lái)說(shuō),一般是4個(gè)子字符串,前三個(gè)子字符串是差不多 的:USBDEVCLASS_xxSUBCLASS_xxPROT_xx,USB DEVCLASS_xxSUBCLASS_xx,USBDEVCLASS_xx,第四個(gè)子字符串則是 USBCOMPOSITE。



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 玉溪市| 松溪县| 濮阳市| 丹阳市| 许昌县| 吉木乃县| 甘泉县| 定襄县| 镇巴县| 五家渠市| 盐城市| 青阳县| 通江县| 新田县| 韩城市| 玛多县| 独山县| 枝江市| 绥芬河市| 蒙城县| 双鸭山市| 玛多县| 沙洋县| 涞水县| 富民县| 凤阳县| 湟源县| 怀远县| 淳化县| 铜陵市| 岑溪市| 开原市| 盐源县| 南皮县| 镇江市| 邓州市| 渝中区| 东丰县| 平湖市| 诸暨市| 梅河口市|