本節將介紹主機驅動程序開發的高階概念和工作。 如果您要撰寫與Microsoft提供的 USB 主機控制器擴充驅動程序通訊的新主機控制器驅動程式(Ucx01000.sys),本節會套用至您。
以下是 Windows 中 USB 主機端驅動程式中顯示的已修改圖表版本。 此版本會隱藏 USB 用戶端驅動程式層的詳細數據,這與主機控制器驅動程式開發無關。
在上圖中,
- USB 中樞驅動程式 (Usbhub3.sys) 是 KMDF 驅動程式。 中樞驅動程式負責管理 USB 中樞及其埠、列舉和建立 USB 裝置和其他可能連結至其下游埠的實體裝置物件(PDO)。
- USB 主機控制器擴充功能(Ucx01000.sys) 是位於堆疊中樞驅動程式之上的抽象層,提供一種將要求排入至底層主機控制器驅動程式佇列的通用機制。
- USB 主機控制器驅動程式 會管理硬體。 Usbxhci.sys 是Microsoft提供的這類驅動程式,特別是以 xHCI 規格相容 USB 控制器硬體為目標。 獨立硬體開發人員可能需要撰寫自己的主機控制器驅動程式,而不是使用收件匣 Usbxhci.sys。 例如,對於不完全符合規格的 XHCI 硬體,因而無法使用 Usbxhci.sys 或對於其他非 XHCI 硬體,例如透過 TCP 連線的 USB。
UCX 與主機控制器驅動程式之間的雙向通訊會使用 USB主機控制器擴充功能 (UCX) 程式設計介面進行。 編譯驅動程式時,每個驅動程式會以靜態方式連結至Microsoft提供的存根連結庫 (Ucx01000.lib) 中的進入點。
以下是為主機控制器驅動程式載入的裝置堆疊: