- 用戶插入USB設備
- USB總線(或者是PCI總線,這個不太清楚,反正就是總線來着)識別到插入了USB設備。
- 總線和USB設備進行通訊,獲取USB的硬件ID、產品ID,以及bcdversion。根據這些信息組成設備硬件ID號:vid_xxxx&PID_xxxx&rev_xxxx。
- 總線根據USB設備的插槽位置,生成一個實例ID,此ID只和插槽映射,同一設備在不同插槽,會生成不同的實例ID;同一設備在同一插槽,實例ID不會改動(不同設備,同一插槽會怎麼樣就不知道了,知道的請告訴下)。
- 如下圖所示,設備實例路徑中包含了3部分的內容,每部分用"\"分離,
- 第一部分是總線類型,這裏是USB,就是USB總線類型
- 第二部分是設備ID號:vid_1BCF&PID_0501圖示中省略了rev_xxxx部分,這個部分可以在“屬性-->硬件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,多接口設備的概念和相關驅動加載,這裏就不繼續講述了,有興趣的可以看http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487473.aspx
USB設備驅動加載過程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.