共用方式為


主機控制器驅動程式所使用的UCX物件和句柄

UCX 會擴充 WDF 物件功能,以定義自己的 USB 特定 UCX 物件。 UCX 使用這些物件將請求入列至任何底層主機控制器驅動程式。

總結

  • 主機控制器驅動程式會使用 UCX 物件來處理與控制器、其根中樞和所有端點相關的作業。
  • UCX 物件是由主機控制器驅動程式所建立,而每個物件的存留期都由 UCX 管理。

重要 API

UCX 會擴充 WDF 物件功能,以定義自己的 USB 特定 UCX 物件。 UCX 會使用這些物件將要求排入任何基礎主機控制器的驅動程式佇列。

如需 WDF 對象的詳細資訊,請參閱 Framework 物件簡介

UCXCONTROLLER:主機控制器物件

表示主機控制器驅動程式所建立的主控制器。 驅動程式必須為每個主機控制器實例僅建立一個主機控制器物件。 通常是在 EvtDriverDeviceAdd 回呼內呼叫 UcxControllerCreate 方法來建立。

當主機控制器驅動程式建立物件時,驅動程式會註冊其 UCX 叫用之回呼函式實作。 驅動程式還應該識別主機控制器所連線的匯流排類型,例如 ACPI 或 PCI。 驅動程式也會使用傳遞至 UcxControllerCreate 呼叫的UCX_CONTROLLER_CONFIG結構來提供主機控制器裝置資訊。

若要處理 I/O 要求,主機控制器驅動程式必須註冊GUID_DEVINTERFACE_USB_HOST_CONTROLLER裝置介面。 驅動程式不需要實作此介面中定義的 IOCTL。 相反地,UCX 用戶端會呼叫 UcxIoDeviceControl,將此介面上收到的 IOCTL 要求傳遞至 UCX。

以下是與主機控制器物件相關聯的回呼函式,這些函式是由 UCX 叫用。 這些函式必須由主機控制器驅動程式實作。

* EVT_UCX_CONTROLLER_USBDEVICE_ADD
當中樞驅動程式透過與根中樞和/或外部中樞互動判斷總線上有新裝置時,會被呼叫。

* EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY
由 UCX 呼叫,以收集 USB 主機控制器所支援之各種功能的相關資訊。

* EVT_UCX_CONTROLLER_RESET
由 UCX 呼叫以重設控制器硬體,可能是為了回應偵測到的錯誤。

* EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER
用來從主機控制器擷取目前的畫面號碼,中樞驅動程式會用來排程同步傳輸。

UCXROOTHUB:根中樞物件

取得和控制主機控制器根埠的狀態。 由主機控制器驅動程式所建立,通常是在 EvtDriverDeviceAdd 回呼內建立,方法是在建立主機控制器物件之後呼叫 UcxRootHubCreate 方法。 每個主機控制器執行個體應該只有一個根中樞物件。 在 UcxRootHubCreate 呼叫中,驅動程式會註冊其回呼實作。

EVT_UCX_ROOTHUB_GET_INFO
傳回根集線器的 USB 2.0 和 USB 3.0 埠數目。

EVT_UCX_ROOTHUB_GET_20PORT_INFO
傳回根中樞的 USB 2.0 或 USB 3.0 連接埠 (*EVT_UCX_ROOTHUB_GET_30PORT_INFO) 的相關資訊。

建立並初始化根中樞物件之後,中樞驅動程式會傳送中斷和控制傳輸,與根中樞埠互動。 UCX 會叫用主機控制器驅動程式所實作的這些回呼函式,以協助這些傳輸。

EVT_UCX_ROOTHUB_CONTROL_URB
處理 USB 中樞的功能控制要求。

EVT_UCX_ROOTHUB_INTERRUPT_TX
處理有關已更改埠的資訊請求。

如需詳細資訊,請參閱 主機控制器驅動程式的根中樞回呼函式

UCXUSBDEVICE:USB 裝置物件

表示連接到總線的實體USB裝置。 由主機控制器驅動程式所建立,通常是在呼叫 UcxUsbDeviceCreate 方法,在EVT_UCX_CONTROLLER_USBDEVICE_ADD回呼內建立。

建立物件時,主機控制器驅動程式會使用 UcxUsbDeviceCreate 呼叫註冊其回呼函式的實作。

這些回呼函式旨在讓控制器和驅動程式瞭解 USB 裝置的目前狀態。

EVT_UCX_USBDEVICE_ENABLE
準備控制器以執行傳輸至裝置的預設端點。

EVT_UCX_USBDEVICE_DISABLE
釋放與裝置及其預設端點相關聯的控制器資源。

EVT_UCX_USBDEVICE_ADDRESS
將位址編程到控制器中,並將SET_ADDRESS傳輸傳送到裝置,使其進入定址狀態。

EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE
將非預設端點編程到控制器中,和/或釋放其他非預設端點。

EVT_UCX_USBDEVICE_RESET
裝置已重設的控制器通知,在此情況下,驅動程式會採取任何必要的動作來將控制器與 USB 裝置同步處理。

EVT_UCX_USBDEVICE_UPDATE
通知控制器與裝置相關的各種資訊位元。

EVT_UCX_USBDEVICE_HUB_INFO
當 UCXUSBDEVICE 控制碼適用於中樞裝置時,會收到有關中樞屬性的通知。

EVT_UCX_USBDEVICE_ENDPOINT_ADD
通知驅動程式為裝置建立端點。 EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD 用於預設端點。

當暫停的 USB 3.0 裝置上的介面已發出喚醒訊號時,驅動程式預期會呼叫 UcxUsbDeviceRemoteWakeNotification 來通知 UCX。

建立物件之後,物件的存留期會由 UCX 管理,而且驅動程式不得刪除物件。

UCXENDPOINT:端點物件

表示 USB 裝置物件上的端點。 端點物件是由主機控制器在 EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADDEVT_UCX_USBDEVICE_ENDPOINT_ADD 回呼過程中建立。 建立端點物件時,驅動程式會註冊其回呼函式。

驅動程式也會為每個端點建立架構佇列物件,並呼叫 UcxEndpointSetWdfIoQueue,將該佇列的 WDFQUEUE 傳遞至 UCX。 建立端點之後,物件及其相關聯佇列的存留期會由 UCX 管理,而且驅動程式不得自行刪除這些物件。

端點物件會實作數個回呼函式,讓驅動程式協助 UCX 進行與端點相關的作業。

EVT_UCX_ENDPOINT_ABORT
中止與端點相關聯的佇列。

EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS
通知控制器驅動程式,它可以在端點上完成已取消的傳輸。

EVT_UCX_ENDPOINT_PURGE
完成端點上所有未完成的 I/O 要求。

EVT_UCX_ENDPOINT_START
啟動與端點相關聯的佇列。

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD
建立靜態數據流。

EVT_UCX_ENDPOINT_RESET
通知驅動程式重設控制器的端點程式設計。

當主機控制器驅動程式在端點上收到 USB 3.0 無 Ping 回應錯誤時,驅動程式必須呼叫 UcxEndpointNoPingResponseError。 該呼叫會導致 USB 裝置物件接收 EVT_UCX_USBDEVICE_UPDATE。 如需詳細資訊,請參閱 在主機控制器驅動程式中設定 USB 端點

UCXSTREAMS:串流物件

代表跨單一端點連線到裝置的管道數目。 主機控制器驅動程式透過在EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD回呼中呼叫UcxStaticStreamsCreate來建立串流物件。

UcxStaticStreamsCreate 呼叫期間,主機控制器驅動程式會註冊其回呼函式。 針對特定端點物件,驅動程式可以判斷它是否已建立串流物件,並透過呼叫 UcxEndpointGetStaticStreamsReferenced 來傳回 UCXSTREAMS 控制碼。

創建物件後,驅動程式會為每個資料流創建框架佇列物件,然後透過呼叫 UcxStaticStreamsSetStreamInfo 方法將 WDFQUEUE 控制代碼傳送至 UCX。

資料流程物件會為主機控制器提供數個回呼函式,以協助 UCX 管理靜態資料流程。

EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE
釋放用於端點上所有串流的控制器資源。

EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE
啟用此端點所有串流的控制器硬體。

物件和相關聯佇列的存留期是由 UCX 管理,驅動程式不得刪除物件。