開發適用於USB主機控制器的Windows驅動程式概觀
本文說明 Windows 作業系統的支援,可開發通用序列總線 (USB) 主機控制器驅動程式,以與 Microsoft 提供的 USB 主機控制器擴充功能通訊, (UCX) 。
如果您要開發不符合規格的 xHCI 主機控制器,或開發自定義非 xHCI 硬體 (,例如虛擬主機控制器) ,您可以撰寫與 UCX 通訊的主機控制器驅動程式。 例如,請考慮支援USB裝置的無線擴充座。 計算機會使用 USB over TCP 作為傳輸,透過無線擴充座與 USB 裝置通訊。
(UCX) USB 主機控制器擴充功能
USB 主機控制器擴充功能是系統提供的驅動程式 (Ucx01000.sys) 。 此驅動程式是使用 Windows 驅動程式架構 程式設計介面實作為架構類別延伸模組。 主機控制器驅動程式可作為該類別延伸模組的用戶端驅動程式。 雖然主機控制器驅動程式會處理硬體作業和事件、電源管理和 PnP 事件,但 UCX 可作為抽象介面,可將要求排入主機控制器驅動程式的佇列,並執行其他工作。
UCX 是 Windows 中的其中一個 USB 主機端驅動程式。 它會載入為主機控制器裝置堆疊中的 FDO。
USB 主機控制器驅動程式
UCX 是可延伸的,其設計目的是支持各種主機控制器驅動程式。 Windows 提供以 USB xHCI 主機控制器為目標的 xHCI 驅動程式 (Usbxhci.sys) 。
主機控制器驅動程式是UCX的用戶端,寫入為 內核模式驅動程式 Framework (KMDF) 驅動程式。
Microsoft 提供的二進位檔
若要撰寫主機控制器驅動程式,您需要 UCX (Ucx01000.sys) 和存根連結庫 (Ucx01000.lib) 。 存根連結庫位於 Windows 驅動程式套件 (WDK) 中。 連結庫會執行兩個主要函式。
- 轉譯主機控制器驅動程式所做的呼叫,並將其傳遞至UCX。
- 提供版本控制的支援。 只有在 UCX 與主機控制器驅動程式具有相同的主要版本號碼,以及與主機控制器驅動程式相同的或更高次要版本號碼時,主機控制器驅動程式才能使用主機控制器驅動程式。
開發工具
WDK 包含驅動程式開發所需的資源,例如標頭、連結庫、工具和範例。
開始使用
閱讀官方規格,描述架構 (裝置、主機控制器和中樞) 之不同元件的預期行為。
瞭解UCX的架構
熟悉 Microsoft 提供的 USB 驅動程序堆疊:
熟悉UCX物件和句柄
UCX 會擴充 WDF 物件功能,以定義自己的 USB 特定 UCX 物件。 如需 WDF 對象的詳細資訊,請參閱 Framework 物件簡介。
若要將要求佇列至任何基礎主機控制器驅動程式,UCX 會使用這些物件。 如需詳細資訊,請參閱 主機控制器驅動程式所使用的UCX物件和句柄。
UCX 物件 | Description |
---|---|
主機控制器物件 (UCXCONTROLLER) | 表示主機控制器驅動程式所建立的主控制器。 驅動程式每個主機控制器實例只能建立一個主機控制器物件。 通常透過呼叫 UcxControllerCreate 方法,在EVT_WDF_DRIVER_DEVICE_ADD回呼內建立。 |
根中樞物件 (UCXROOTHUB) | 取得並控制主控制器根埠的狀態。 主機控制器驅動程式通常透過呼叫UcxRootHubCreate方法,在EVT_WDF_DRIVER_DEVICE_ADD回呼內建立。 |
UCXUSBDEVICE) UCXUSBDEVICE (USB 裝置物件 | 代表連線到總線的實體USB裝置。 主機控制器驅動程式通常會透過呼叫 **UcxUsbDeviceCreate 方法,在EVT_UCX_CONTROLLER_USBDEVICE_ADD回呼內建立。 |
端點物件 (UCXENDPOINT) | 表示 USB 裝置物件上的端點。 主機控制器驅動程式通常會透過呼叫 **UcxEndpointCreate 方法,在EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD或EVT_UCX_USBDEVICE_ENDPOINT_ADD回呼內建立。 |
(UCXSTREAMS) Stream 物件 | 代表透過單一大量端點傳送到裝置的數個管道。 主機控制器驅動程式通常透過呼叫UcxStaticStreamsCreate方法,在EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD回呼內建立。 |
檔區段
UCX 會處理與根中樞相關的大部分作業。 這可讓 USB 中樞驅動程式與根中樞互動的方式與一般中樞互動。 主機控制器驅動程式可以註冊其回呼函式。
UCX 會將傳入的 USB 要求區塊分類 (URL) ,然後將它們轉送至正確的端點佇列。
主機控制器驅動程式在UCX管理與其端點相關聯的佇列,以及在將端點程序設計成控制器硬體時扮演角色。
提供客戶端驅動程式所使用的 I/O 要求、支援例程、結構和介面的規格。 這些例程和相關數據結構定義於WDK標頭中。
UCX 稱為 架構類別延伸模組。
主機控制器驅動程式稱為 客戶端驅動程式。