Introduction to WinUSB for developers
Important
This topic is for programmers. If you are a customer experiencing USB problems, see Troubleshoot common USB problems
WinUSB is a generic driver for USB devices that is included with all versions of Windows since Windows Vista.
WinUSB includes:
- A kernel-mode driver (Winusb.sys)
- A user-mode dynamic link library (Winusb.dll) that exposes WinUSB functions described in winusb.h. You can use these functions to manage USB devices with user-mode software.
By default, Winusb.sys is installed in the device's kernel-mode stack as an upper filter driver, and apps communicate with the device's UMDF function driver to issue read, write, or device I/O control requests. In this configuration, Winusb.sys serves as the device stack's Plug and Play and power owner.
Alternatively, you can install Winusb.sys as the function driver for a USB device.
This section includes info on:
- Selecting the correct driver for a device
- Using WinUSB to communicate with USB devices
- Installing Winusb.sys as the function driver for a USB device
You'll also find detailed code examples that show how apps and USB devices communicate.
Note
Windows 7 supports WinUSB on x86-based, x64-based, and Itanium-based systems. More recent versions of Windows support WinUSB on x86-based and x64-based systems.
WinUSB supports isochronous transfers starting in Windows 8.
Related topics
Feedback
Submit and view feedback for