
All I/O requests initiated by upper drivers reach the host controller extension driver before the xHCI driver. The USB host controller extension serves as a common abstracted interface to the hub driver, provides a generic mechanism for queuing requests to the host controller driver, and overrides certain selected functions. The new driver is extensible and is designed to support other types of host controller drivers that are expected to be developed in the future. The USB host controller extension driver (an extension to KMDF) is the new extension to the underlying class-specific host controller driver, such as the xHCI driver.

USB host controller extension (Ucx01000.sys) Windows loads the xHCI driver as the function device object (FDO) in the device stack for the host controller. It also controls the xHCI controller device slots and endpoint contexts. After completing a transfer, the driver handles transfer completion events from the hardware and propagates the events up the driver stack. The responsibilities of the xHCI driver include initializing MMIO registers and host memory-based data structures for xHCI controller hardware, mapping transfer requests from upper layer drivers to Transfer Request Blocks, and submitting the requests to the hardware. The xHCI driver is the USB 3.0 host controller driver. USB 3.0 host controller driver (Usbxhci.sys) The KMDF driver model reduces complexity and improves stability.

Microsoft created the USB 3.0 drivers by using Kernel Mode Driver Framework (KMDF) interfaces. The USB 2.0 driver stack ships in Windows XP with Service Pack 1 (SP1) and later versions of the Windows operating system. Windows loads the USB 2.0 driver stack for devices that are attached to eHCI, oHCI, or uHCI controllers. Windows loads the USB 3.0 driver stack when a device is attached to an xHCI controller. The diagram shows separate USB driver stacks for USB 2.0 and USB 3.0.

The following figure shows the architectural block diagram of the USB driver stack for Windows. This article provides an overview of the Universal Serial Bus (USB) driver stack architecture.
