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