USB裝置驅動程式載入流程

2021-06-28 06:05:55 字數 1012 閱讀 2189

使用者插入usb裝置

usb匯流排(或者是pci匯流排,這個不太清楚,反正就是匯流排來著)識別到插入了usb裝置。

匯流排和usb裝置進行通訊,獲取usb的硬體id、產品id,以及bcdversion。根據這些資訊組成裝置硬體id號:vid_***x&pid_***x&rev_***x。

匯流排根據usb裝置的插槽位置,生成乙個例項id,此id只和插槽對映,同一裝置在不同插槽,會生成不同的例項id;同一裝置在同一插槽,例項id不會改動(不同裝置,同一插槽會怎麼樣就不知道了,知道的請告訴下)。

如下圖所示,裝置例項路徑中包含了3部分的內容,每部分用"\"分離,

第一部分是匯流排型別,這裡是usb,就是usb匯流排型別

第二部分是裝置id號:vid_1bcf&pid_0501圖示中省略了rev_***x部分,這個部分可以在「屬性-->硬體id"中看到

第三部分是例項id:6&10354432&0&8。

根據匯流排得到的資訊,系統在登錄檔」hkey_local_machine\system\currentcontrolset\enum「下尋找驅動程式。對於上面的裝置,驅動程式資訊在登錄檔路徑為:「hkey_local_machine\system\currentcontrolset\enum\usb\vid_1bcf&pid_0501\6&10354432&0&8」,如果找不到此路徑,就安裝驅動程式吧。路徑內容如下所示:

根據上面登錄檔的資訊,找到service鍵和class鍵的值。

根據service的鍵值在hkey_local_machine\system\currentcontrolset\services中找到相關子鍵,子鍵中包含了usb裝置驅動程式的路徑,系統載入之。

根據class的鍵值在hkey_local_machine\system\currentcontrolset\control\class中找到相關子鍵,子鍵中可能包含過濾驅動的資訊,有則載入之。

上面就是usb驅動裝置載入的基本流程了,也是pnp裝置載入的基本流程。

對於相容id,多介面裝置的概念和相關驅動載入,這裡就不繼續講述了,有興趣的可以看

USB裝置驅動程式

一.usb載入式流介面驅動要點分析 為了支援不同型別的外圍裝置,wince平台提供了具有定製介面的流介面驅動程式模型。因為大部分usb外圍裝置由於功能性更適合流介面驅動的結構,所以一般都採用載入式流介面驅動程式模型來開發usb裝置驅動程式。1 usb系統結構分析 wince下usb系統軟體由兩層組成...

USB裝置驅動程式導讀

隨著 usb裝置的不斷增加,我們這些開發人員也就多了對 usb裝置進行驅動程式開發的工作。但是對於很多初學者來說,存在以下三個困難 一是對wince 的驅動程式結構了解得太少,沒辦法得心應手的專注於驅動程式的開發工作 二是對wince 自帶的usb 驅動程式的例子沒有弄懂,看到一大堆資料夾結構和源程...

USB裝置驅動程式(二)

首先我們來看usb裝置描述符的結構 在usb匯流排識別裝置階段就將usb描述符傳送給了usb匯流排驅動程式,裝置的資料傳輸物件是端點,端點0是特殊端點,在usb匯流排驅動程式識別階段,本次通過usb滑鼠點選事件編寫乙個input子系統,從上一章主要實現了如何識別到有個usb裝置的驅動程式,本次,主要...