USB Audio 2.0 Drivers - Windows drivers
Driver on

Overview of developing Windows drivers for USB host controllers – Windows drivers


This part describes help within the Home windows working system, for creating a Common Serial Bus (USB) host controller driver that communicates with the Microsoft-provided USB host controller extension (UCX).

In case you are creating an xHCI host controller that’s not compliant with the specification or creating a customized non-xHCI {hardware} (equivalent to a digital host controller), you possibly can write a number controller driver that communicates with UCX. For instance, take into account a wi-fi dock that helps USB units. The PC communicates with USB units by means of the wi-fi dock through the use of USB over TCP as a transport.

USB host controller extension (UCX)

The USB host controller extension is a system-supplied driver (Ucx01000.sys). This driver is carried out as a framework class extension through the use of the Home windows Driver Framework programming interfaces. The host controller driver serves because the shopper driver to that class extension. Whereas a number controller driver handles {hardware} operations and occasions, energy administration, and PnP occasions, UCX serves as an abstracted interface that queues requests to the host controller driver, and performs different duties.

UCX is among the USB host-side drivers in Home windows. It’s loaded because the FDO within the host controller system stack.

USB host controller driver

UCX is extensible and is designed to help varied host controller drivers. Home windows supplies an xHCI driver (Usbxhci.sys) that targets USB xHCI host controllers.

The host controller driver is a shopper of UCX, written as Kernel-Mode Driver Framework (KMDF) driver.

Microsoft-provided binaries

To write down a number controller driver, you want UCX (Ucx01000.sys) and the stub library (Ucx01000.lib). The stub library is within the Home windows Driver Equipment (WDK). The library performs two fundamental capabilities.

  • Translate calls made by the host controller driver and go them as much as UCX.
  • Gives help for versioning. A bunch controller driver will work with UCX, provided that UCX has the identical Main model quantity because the host controller driver, and the identical or greater Minor model quantity because the host controller driver.

Improvement instruments

The WDK comprises assets which might be required for driver improvement, equivalent to headers, libraries, instruments, and samples.

Obtain kits and instruments for Home windows

Get began…

Learn the official specification that describes the anticipated habits of various parts (system, host controller, and hub) of the structure.

xHCI for Common Serial Bus: Specification
Official Common Serial Bus Paperwork

Perceive the structure of UCX

Familiarize your self with the Microsoft-provided USB driver stack:

USB host-side drivers in Home windows
Structure: USB host controller extension (UCX)

Familiarize your self with UCX objects and handles

UCX extends the WDF object performance to outline its personal USB-specific UCX objects. For extra particulars on WDF objects, see Introduction to Framework Objects.

For queuing requests to any underlying host controller driver, UCX makes use of these objects. For extra data, see UCX objects and handles utilized by a number controller driver.

Host controller object (UCXCONTROLLER)

Represents the host controller that’s created by the host controller driver. The driving force should create just one host controller object per host controller occasion. Usually created throughout the EVT_WDF_DRIVER_DEVICE_ADDcallback by calling the UcxControllerCreate](/previous-versions/home windows/{hardware}/drivers/mt188033(v=vs.85))” data-linktype=”absolute-path”>UcxControllerCreate methodology.

Root hub object (UCXROOTHUB)

Will get and controls the standing of the foundation ports of the host controller. Created by the host controller driver sometimes throughout the EVT_WDF_DRIVER_DEVICE_ADD callback by calling the UcxRootHubCreate](/previous-versions/home windows/{hardware}/drivers/mt188048(v=vs.85))” data-linktype=”absolute-path”>UcxRootHubCreate methodology.

USB system object (UCXUSBDEVICE)

Represents a bodily USB system related to the bus. Created by the host controller driver sometimes throughout the EVT_UCX_CONTROLLER_USBDEVICE_ADD](/windows-hardware/drivers/ddi/ucxcontroller/nc-ucxcontroller-evt_ucx_controller_usbdevice_add)” data-linktype=”absolute-path”>EVT_UCX_CONTROLLER_USBDEVICE_ADD callback by calling the UcxUsbDeviceCreate](/windows-hardware/drivers/ddi/ucxusbdevice/nf-ucxusbdevice-ucxusbdevicecreate)” data-linktype=”absolute-path”>UcxUsbDeviceCreate methodology.

Endpoint object (UCXENDPOINT)

Represents an endpoint on a USB system object. Created by the host controller driver sometimes throughout the EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD](/windows-hardware/drivers/ddi/ucxusbdevice/nc-ucxusbdevice-evt_ucx_usbdevice_default_endpoint_add)” data-linktype=”absolute-path”>EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD or EVT_UCX_USBDEVICE_ENDPOINT_ADD](/windows-hardware/drivers/ddi/ucxusbdevice/nc-ucxusbdevice-evt_ucx_usbdevice_endpoint_add)” data-linktype=”absolute-path”>EVT_UCX_USBDEVICE_ENDPOINT_ADD callback by calling the UcxEndpointCreate](/windows-hardware/drivers/ddi/ucxendpoint/nf-ucxendpoint-ucxendpointcreate)” data-linktype=”absolute-path”>UcxEndpointCreate methodology.

Stream object (UCXSTREAMS)

Represents quite a lot of pipes to the system throughout a single bulk endpoint. Created by the host controller driver sometimes throughout the EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD](/windows-hardware/drivers/ddi/ucxendpoint/nc-ucxendpoint-evt_ucx_endpoint_static_streams_add)” data-linktype=”absolute-path”>EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD callback by calling the UcxStaticStreamsCreate](/windows-hardware/drivers/ddi/ucxsstreams/nf-ucxsstreams-ucxstaticstreamscreate)” data-linktype=”absolute-path”>UcxStaticStreamsCreate methodology.

Documentation sections

Root hub callback capabilities of a number controller driver

UCX handles most operations associated to the foundation hub. This enables the USB hub driver to work together with the foundation hub in the identical means that it interacts with a daily hub. The host controller driver can register its callback capabilities.

Deal with I/O requests in a USB host controller driver

UCX triages incoming USB request blocks (URBs), after which forwards them to the right endpoint queue.

Configure USB endpoints in a number controller driver

The host controller driver performs a task in UCX’s administration of the queues which might be related to its endpoints, and within the programming of endpoints into controller {hardware}.

USB host controller extension (UCX) reference

Offers specs for I/O requests, help routines, buildings, and interfaces utilized by the shopper driver. These routines and associated information buildings are outlined within the WDK headers.

UCX is known as the framework class extension.

The host controller driver is known as the shopper driver.

Leave a Reply

Your email address will not be published. Required fields are marked *