- USB device class drivers included in Windows
- USB Device classes
- Device setup classes
- Microsoft-provided USB device class drivers
- Overview of Microsoft-provided USB drivers
- Microsoft-provided USB drivers for controllers and hubs
- Other Microsoft-provided USB drivers
- Microsoft-provided USB device class drivers
USB device class drivers included in Windows
This topic is for programmers. If you are a customer experiencing USB problems, see Troubleshoot common USB problems
This topic lists the Microsoft-provided drivers for the supported USB device classes.
- Microsoft-provided drivers for USB-IF approved device classes.
- For composite devices, use USB Generic Parent Driver (Usbccgp.sys) that creates physical device objects (PDOs) for each function.
- For non-composite devices or a function of a composite device, use WinUSB (Winusb.sys).
If you are installing USB drivers: You do not need to download USB device class drivers. They are installed automatically. These drivers and their installation files are included in Windows. They are available in the \Windows\System32\DriverStore\FileRepository folder. The drivers are updated through Windows Update.
If you are writing a custom driver: Before writing a driver for your USB device, determine whether a Microsoft-provided driver meets the device requirements. If a Microsoft-provided driver is not available for the USB device class to which your device belongs, then consider using generic drivers, Winusb.sys or Usbccgp.sys. Write a driver only when necessary. More guidelines are included in Choosing a driver model for developing a USB client driver.
USB Device classes
USB Device classes are categories of devices with similar characteristics and that perform common functions. Those classes and their specifications are defined by the USB-IF. Each device class is identified by USB-IF approved class, subclass, and protocol codes, all of which are provided by the IHV in device descriptors in the firmware. Microsoft provides in-box drivers for several of those device classes, called USB device class drivers. If a device that belongs to a supported device class is connected to a system, Windows automatically loads the class driver, and the device functions with no additional driver required.
Hardware vendors should not write drivers for the supported device classes. Windows class drivers might not support all of the features that are described in a class specification. If some of the device’s capabilities are not implemented by the class driver, vendors should provide supplementary drivers that work in conjunction with the class driver to support the entire range of functionality provided by the device.
For general information about USB-IF approved device classes see the USB Common Class Specification
The current list of USB class specifications and class codes is documented in the USB-IF Defined Class Code List.
Device setup classes
Windows categorizes devices by device setup classes, which indicate the functionality of the device.
Microsoft defines setup classes for most devices. IHVs and OEMs can define new device setup classes, but only if none of the existing classes apply. For more information, see System-Defined Device Setup Classes.
Two important device setup classes for USB devices are as follows:
USBDevice <88bae032-5a81-49f0-bc3d-a4ff138216d6>: IHVs must use this class for custom devices that do not belong to another class. This class is not used for USB host controllers and hubs.
USB <36fc9e60-c465-11cf-8056-444553540000>: IHVs must not use this class for their custom devices. This is reserved for USB host controllers and USB hubs.
The device setup classes are different from USB device classes discussed earlier. For example, an audio device has a USB device class code of 01h in its descriptor. When connected to a system, Windows loads the Microsoft-provided class driver, Usbaudio.sys. In Device Manager, the device is shown under is Sound, video and game controllers, which indicates that the device setup class is Media.
Microsoft-provided USB device class drivers
USB-IF class code | Device setup class | Microsoft-provided driver and INF | Windows support | Description |
---|---|---|---|---|
Audio (01h) | Media | Usbaudio.sys |
Note Supports Subclass 02h (ACM)
Starting with Windows Vista, you can enable CDC and Wireless Mobile CDC (WMCDC) support by setting a registry value, as described in Support for the Wireless Mobile Communication Device Class.
When CDC support is enabled, the USB Common Class Generic Parent Driver enumerates interface collections that correspond to CDC and WMCDC Control Models, and assigns physical device objects (PDO) to these collections.
NoteВ В Usbprint.sys enumerates printer devices under the device set up class: Printer
<4d36e979-e325-11ce-bfc1-08002be10318>.
- Loading a UASP Storage Driver as a Class Driver on xHCI
- USB Attached SCSI (UAS) Best Practices for Windows 8
The driver is loaded when a SuperSpeed hub is attached to an xHCI controller. See USB host-side drivers in Windows.
Note that for Windows Server 2003, Windows XP, and Windows 2000, special instructions are required for loading this driver because it might have been released later than the operating system.
Note Usbccid.sys driver has been replaced by UMDF driver, WUDFUsbccidDriver.dll.
Usbvideo.inf
WindowsВ Vista
Note that for Windows XP, special instructions are required for loading this driver because it might have been released later than the operating system.
Note В В Supports Subclass 01h and Protocol 01h
Bth.inf
NoteВ В Supports SubClass 04h and Protocol 01h
Note Microsoft recommends that hardware vendors build USB NCM compatible devices instead. USB NCM is a public USB-IF protocol that offers better throughput performance.
Overview of Microsoft-provided USB drivers
This topics in this section describe the class drivers, generic client driver, and the parent composite driver that are provided by Microsoft.
Microsoft-provided USB drivers for controllers and hubs
Microsoft provides these set of drivers:
- For USB host controllers and hubs. For more information, see USB host-side drivers in Windows. You can develop a custom host controller driver that communicates with the USB host controller extension (UCX) driver. For more information, see Developing Windows drivers for USB host controllers.
- For handling common function logic for USB devices. For more information, see USB device-side drivers in Windows.
- For supporting Type-C connectors. For more information, see USB connector manager class extension (UcmCx).
Other Microsoft-provided USB drivers
Device setup class | Microsoft-provided driver and INF | Windows support | Description |
---|---|---|---|
USB | Usbccgp.sys is a parent driver for composite devices that supports multiple functions. For more information, see USB Generic Parent Driver (Usbccgp.sys). | ||
Biometric | |||
Media Transfer Protocol Devices | Wpdusb.sys (Obsolete) | Winusb.sys can be used as the USB device’s function driver instead of implementing a driver. See WinUSB. |
Microsoft-provided USB device class drivers
Microsoft provides drivers for several USB device classes approved by USB-IF. These drivers and their installation files are included in Windows. They are available in the \Windows\System32\DriverStore\FileRepository folder.