Overview of developing Windows drivers for USB function controllers
This section describes support in the Windows operating system, for developing a Universal Serial Bus (USB) function controller driver that communicates with the Microsoft-provided USB function controller extension (UFX).
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.
Windows provides inbox USB function controller drivers such as UfxSynopsys.sys for the controller hardware of Synopsys IP. They generally require platform level changes and validation that are typically performed by hardware partners or OEMs when bringing up a platform. This bring-up process may include integration with ACPI to notify system drivers of USB attach/detach events, and performing additional validation using Microsoft-provided HLK tests. To write your own controller driver, you need:
To send requests from user mode, you need:
To send requests from your USB class driver, you need:
Architecture of UFX
Familiarize yourself with the Microsoft-provided USB driver stack:USB device-side drivers in Windows
Familiarize yourself with UFX objects and handles
UFX extends the WDF object functionality to define its own USB-specific UCX objects. For more details on WDF objects, see Introduction to Framework Objects.
For queuing requests, UFX uses USB-specific objects. For more information, UFX objects and handles used by a USB function client driver.
Writing a function controller client driver
Understand the behavior of UFX, how it interacts with the client driver, and the features that the client driver is expected to implement.
Programming reference sections