USB host controller driver programming reference
The USB host controller extension is a system-supplied extension to the Kernel-Mode Driver Framework (KMDF). Within the Microsoft USB Driver Stack Architecture, UCX provides functionality to assist a host controller client driver in managing a USB host controller device. The client driver handles hardware operations and events, power management, and PnP events. UCX serves as an abstracted interface to the rest of the Microsoft USB 3.0 stack, queues requests to the client driver, and performs other tasks.
UCX client driver support routines
These driver support methods that are implemented by UCX. Your client driver calls these methods to communicate with UCX.
| Method | Description |
|---|---|
Initializes device initialization operations when the Plug and Play (PnP) manager reports the existence of a device. |
|
Allows USB host controller extension (UCX) to handle an I/O control code (IOCTL) request from user mode. |
|
Creates a host controller object. |
|
Initiates a non-Plug and Play (PnP) controller reset operation by queuing an event into the controller reset state machine. |
|
Informs USB Host Controller Extension (UCX) that the reset operation has competed. |
|
Informs USB Host Controller Extension (UCX) that the controller has encountered a critical failure. |
|
Creates a root hub object for the specified host controller. |
|
Notifies UCX about a new port change event on the host controller. |
|
Initializes a UCXUSBDEVICE_INIT structure with client driver's event callback functions. |
|
Creates a USB device object on the specified controller. |
|
Notifies UCX that a remote wake signal from the device is received. |
|
Initializes a UCXENDPOINT_INIT structure with client driver's event callback functions related to endpoints on the device. |
|
Initializes a UCXENDPOINT_INIT structure with client driver's event callback functions related to the default endpoint. |
|
Sets a framework queue on the specified endpoint object. |
|
Creates an endpoint on the specified USB device object. |
|
Returns a referenced static streams object for the specified endpoint. |
|
Notifies UCX that a purge operation has been completed on the specified endpoint object. |
|
Notifies UCX that a transfer abort operation has been completed on the specified endpoint object. |
|
Notifies UCX about a "No Ping Response" error for a transfer on the specified endpoint object |
|
The client driver calls this method before it cancels transfers on the wire. |
|
Sets stream information for each stream enabled by the client driver. |
|
Creates a static streams object. |
Event callback functions
These event callback functions that are defined by the UCX and implemented by your client driver.
| Function | Description |
|---|---|
The client driver's implementation that UCX calls to retrieve the current 32-bit frame number. |
|
UCX invokes this callback to retrieves the system query performance counter (QPC) value synchronized with the frame and microframe. |
|
UCX invokes this callback to retrieve the host controller characteristics. |
|
The client driver's implementation to determine if the controller supports a specific capability. |
|
The client driver's implementation that UCX calls to reset the controller. |
|
EVT_UCX_CONTROLLER_SET_TRANSPORT_CHARACTERISTICS_CHANGE_NOTIFICATION |
UCX invokes this callback function to specify its preference in transport characteristics for which the client driver must send notifications when changes occur. |
UCX invokes this callback function to the start time tracking functionality in the controller. |
|
UCX invokes this callback function to the stop time tracking functionality in the controller. |
|
The client driver's implementation that UCX calls when a new USB device is detected. |
|
The client driver's implementation that UCX calls with information about the default endpoint. |
|
The client driver's implementation that UCX calls to abort the queue associated with the endpoint. |
|
UCX invokes this callback function to get information about transfer path delays for an isochronous endpoint. |
|
The client driver's implementation that UCX calls to notify the controller driver that it can complete cancelled transfers on the endpoint. |
|
The client driver's implementation that completes all outstanding I/O requests on the endpoint. |
|
The client driver's implementation that UCX calls to reset the controller’s programming for an endpoint. |
|
The client driver's implementation that UCX calls to start the queue associated with the endpoint. |
|
UCX invokes this callback function to set the priority on an endpoint. |
|
The client driver's implementation that UCX calls to create static streams. |
|
The client driver's implementation that UCX calls to release controller resources for all streams for an endpoint. |
|
The client driver's implementation that UCX calls to enable the static streams. |
|
The client driver uses this callback type to implement handlers that UCX calls when it receives feature control requests on the USB hub. |
|
The client driver's implementation that UCX calls when it receives a request for information about USB 2.0 ports on the root hub. |
|
The client driver's implementation that UCX calls when it receives a request for information about USB 3.0 ports on the root hub. |
|
The client driver's implementation that UCX calls when it receives a request for information about the root hub. |
|
The client driver's implementation that UCX calls when it receives a request for information about changed ports. |
|
The client driver's implementation that UCX calls to address the USB device. |
|
The client driver's implementation that UCX calls to add a new default endpoint for a USB device. |
|
The client driver's implementation that UCX calls to release controller resources associated with the device and its default endpoint. |
|
The client driver's implementation that UCX calls to program information about the device and its default control endpoint into the controller. |
|
The client driver's implementation that UCX calls to add a new endpoint for a USB device. |
|
The client driver's implementation that UCX calls to configure endpoints in the controller. |
|
UCX invokes this callback to retrieve the device characteristics. |
|
The client driver's implementation that UCX calls to retrieve hub properties. |
|
The client driver's implementation that UCX calls when the port to which the device is attached is reset. |
|
UCX invokes this callback function to resume a device from suspend state. |
|
UCX invokes this callback function to send a device suspend state. |
|
The client driver's implementation that UCX calls to update device properties. |
Related topics
Developing Windows drivers for USB host controllers