Overview of developing Windows drivers for emulated USB devices (UDE)

This article describes USB emulated device (UDE) support in the Windows operating system, for developing an emulated Universal Serial Bus (USB) host controller driver and a connected virtual USB device. Both components are combined into a single KMDF driver that communicates with the Microsoft-provided USB device emulation class extension (UdeCx).

Development tools and Microsoft-provided binaries

The Windows Driver Kit (WDK) contains resources that are required for driver development, such as headers, libraries, tools, and samples.

Download kits and tools for Windows

To write a function controller driver, you need:

  • UdeCx: (udecx.sys) a WDF extension used by the function driver. This extension is included in Windows.
  • Link to the stub library (Udecxstub.lib). The stub library is in the WDK.
  • Include Udecx.h provided in the WDK.

Architecture of UDE

Architecture: USB Device Emulation (UDE)

USB host-side drivers in Windows

Writing drivers for emulated host controller and devices

Familiarize yourself with UDE objects and handles. For details on WDF objects, see Introduction to Framework Objects.

Understand the behavior of UDE, how it interacts with the client driver, and the features that the client driver is expected to implement.

Write a UDE client driver

Programming reference sections

Emulated USB host controller driver programming reference

WDF Reference