Independent hardware vendors (IHVs) who manufacture USB devices must often provide a way for applications to access the device's features. Historically, this has meant using the Windows Driver Model (WDM) to implement a function driver for the device and installing the driver in the device stack above system-supplied protocol drivers. The Windows Driver Foundation (WDF) is now the preferred model for USB drivers. It provides IHVs with three options for providing access to a USB device:
Implementing a user-mode driver by using the WDF user-mode driver framework (UMDF).
Implementing a kernel-mode driver by using the WDF kernel-mode driver framework (KMDF).
Installing WinUsb.sys as the device's function driver and providing an application that accesses the device by using the WinUSB API.
This information applies for the following operating systems: Windows 7 Windows Server 2008 Windows Vista Microsoft Windows XP
What's New:
Added new information for communicating with endpoints
Added a section on DFU to the WinUSB FAQ
Removed the note from Table 1 indicating that WinUSB does not support WinUSB selective suspend on Windows XP
(March 2010): Updated the INF sample in the section "How to Install WinUsb.sys as a Function Driver.”