共用方式為


開發USB主機控制器的Windows驅動程式概觀

本文說明在 Windows作系統中支持開發通用序列總線 (USB) 主機控制器驅動程式,該驅動程式會與Microsoft提供的 USB 主機控制器擴充功能 (UCX) 通訊。

如果您要開發不符合規格的 xHCI 主機控制器,或開發自定義的非 xHCI 硬體(例如虛擬主機控制器),您可以撰寫與 UCX 通訊的主機控制器驅動程式。 例如,請考慮支援USB裝置的無線擴充座。 電腦透過無線擴充座,使用基於TCP的USB協議與USB裝置通訊。

USB 主機控制器擴充功能 (UCX)

USB 主機控制器擴充功能是系統提供的驅動程式(Ucx01000.sys)。 此驅動程式是使用 Windows Driver Framework 程式設計介面實作為架構類別延伸模組。 主機控制器驅動程式可作為該類別延伸模組的用戶端驅動程式。 雖然主機控制器驅動程式會處理硬體作業和事件、電源管理和 PnP 事件,但 UCX 會做為抽象介面,將要求排入主機控制器驅動程式的佇列,並執行其他工作。

UCX 是 Windows 中的其中一個 USB 主機端驅動程式。 它在主機控制器設備堆疊中被載入為 FDO。

USB 主機控制器驅動程式

UCX 是可延伸的,其設計目的是支持各種主機控制器驅動程式。 Windows 提供以 USB xHCI 主機控制器為目標的 xHCI 驅動程式(Usbxhci.sys)。

主機控制器驅動程式是UCX的用戶端,其撰寫為 Kernel-Mode Driver Framework (KMDF) 驅動程式。

Microsoft提供的二進位檔

若要撰寫主機控制器驅動程式,您需要 UCX (Ucx01000.sys) 和存根連結庫 (Ucx01000.lib)。 存根程式庫位於 Windows 驅動程式開發套件 WDK 中。 圖書館有兩個主要功能。

  • 轉譯主機控制器驅動程式所進行的呼叫,並傳遞至UCX。
  • 提供版本控制的支援。 只有當 UCX 與主機控制器驅動程式具有相同的主要版本號碼,並且次要版本號碼相同或更高時,主機控制器驅動程式才能與 UCX 一起運作。

開發工具

WDK 包含驅動程式開發所需的資源,例如標頭、連結庫、工具和範例。

下載適用於 Windows 的套件和工具

開始

閱讀官方規格,以描述架構的不同元件(裝置、主機控制器和中樞)的預期行為。

適用於通用序列總線的 xHCI:規格

官方通用序列總線檔

瞭解UCX的架構

熟悉 Microsoft 提供的 USB 驅動程式堆疊:

Windows 中的 USB 主機端驅動程式

架構:USB 主機控制器擴充功能 (UCX)

熟悉UCX物件和控制代碼

UCX 會擴充 WDF 物件功能,以定義自己的 USB 特定 UCX 物件。 如需 WDF 對象的詳細資訊,請參閱 Framework 物件簡介

若要將要求佇列至任何基礎主機控制器驅動程式,UCX 會使用這些物件。 如需詳細資訊,請參閱 主機控制器驅動程式所使用的UCX物件和句柄

UCX 物件 說明
主機控制器物件 (UCXCONTROLLER) 表示主機控制器驅動程式所建立的主控制器。 驅動程式必須為每個主機控制器實例僅建立一個主機控制器物件。 通常藉由呼叫 UcxControllerCreate 方法,在EVT_WDF_DRIVER_DEVICE_ADD回呼內建立。
根中樞物件 (UCXROOTHUB) 取得和控制主機控制器根埠的狀態。 主機控制器驅動程式通常透過呼叫UcxRootHubCreate方法,在EVT_WDF_DRIVER_DEVICE_ADD回呼內建立。
USB 裝置物件 (UCXUSBDEVICE) 表示連接到總線的實體USB裝置。 主機控制器驅動程式通常透過在EVT_UCX_CONTROLLER_USBDEVICE_ADD回呼中呼叫 **UcxUsbDeviceCreate 方法來建立 USB 裝置。
端點物件 (UCXENDPOINT) 表示 USB 裝置物件上的端點。 主機控制器驅動程式通常在EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADDEVT_UCX_USBDEVICE_ENDPOINT_ADD回呼中,透過呼叫 **UcxEndpointCreate 方法來建立。
Stream 物件(UCXSTREAMS) 代表通過單一大量端點連接裝置的多條管線。 主機控制器驅動程式通常透過呼叫 UcxStaticStreamsCreate 方法,在EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD回呼內建立。

文件章節

主機控制器驅動程式的根中樞回呼函式

UCX 會處理與根中樞相關的大部分作業。 這可讓 USB 中樞驅動程式以與一般中樞互動的方式與根中樞互動。 主機控制器驅動程式可以註冊其回呼函式。

處理USB主機控制器驅動程式中的I/O要求

UCX 會將傳入的 USB 要求區塊 (URB) 分級,然後將它們轉送至正確的端點佇列。

在主機控制器驅動程式中設定USB端點

主機控制器驅動程式在UCX管理與其端點相關聯的佇列,以及在將端點程序設計成控制器硬體時扮演角色。

USB 主機控制器擴充功能 (UCX) 參考資料

提供 I/O 要求的規格、支援用戶端驅動程式所使用的例程、結構和介面。 這些例程和相關數據結構定義於WDK標頭中。

UCX 稱為 架構類別延伸模組

主機控制器驅動程式稱為 客戶端驅動程式