Skip to main content

How to Use WinUSB to Communicate with a USB Device

Updated: March 9, 2010

File name: WinUsb_howto.docx
130 KB
Microsoft Word file
Get Office File Viewers

About This Download

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.”

Included in this white paper:

  • Summary of WinUSB, UMDF, and KMDF Capabilities

  • Guidelines for Providing Access to USB Devices

  • Introduction to WinUSB

  • WinUSB FAQ

  • How to Install WinUsb.sys as a Function Driver

  • How to Use the WinUSB API

  • Future Feature Considerations

Rate: