USB設備驅動加載過程

  1. 用戶插入USB設備
  2. USB總線(或者是PCI總線,這個不太清楚,反正就是總線來着)識別到插入了USB設備。
  3. 總線和USB設備進行通訊,獲取USB的硬件ID、產品ID,以及bcdversion。根據這些信息組成設備硬件ID號:vid_xxxx&PID_xxxx&rev_xxxx。
  4. 總線根據USB設備的插槽位置,生成一個實例ID,此ID只和插槽映射,同一設備在不同插槽,會生成不同的實例ID;同一設備在同一插槽,實例ID不會改動(不同設備,同一插槽會怎麼樣就不知道了,知道的請告訴下)。
  5. 如下圖所示,設備實例路徑中包含了3部分的內容,每部分用"\"分離,
    • 第一部分是總線類型,這裏是USB,就是USB總線類型
    • 第二部分是設備ID號:vid_1BCF&PID_0501圖示中省略了rev_xxxx部分,這個部分可以在“屬性-->硬件ID"中看到
    • 第三部分是實例ID:6&10354432&0&8。

  6. 根據總線得到的信息,系統在註冊表”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum“下尋找驅動程序。對於上面的設備,驅動程序信息在註冊表路徑爲:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_1BCF&PID_0501\6&10354432&0&8”,如果找不到此路徑,就安裝驅動程序吧。路徑內容如下所示:

  7. 根據上面註冊表的信息,找到service鍵和class鍵的值。
    • 根據service的鍵值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中找到相關子鍵,子鍵中包含了USB設備驅動程序的路徑,系統加載之。
    • 根據class的鍵值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class中找到相關子鍵,子鍵中可能包含過濾驅動的信息,有則加載之。

  8. 上面就是USB驅動設備加載的基本流程了,也是PNP設備加載的基本流程。
  9. 對於兼容ID,多接口設備的概念和相關驅動加載,這裏就不繼續講述了,有興趣的可以看http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487473.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章