Headers and libraries required by a USB client driver
This article lists the headers and libraries required for writing a Windows Driver Model (WDM) USB client driver.
To find the header and library for a specific device driver interface (DDI), consult the reference pages in the USB Reference.
Headers
Header file | Path | Includes | Description |
---|---|---|---|
hubbusif.h | Include\km | Defines services that are exported by the USB port driver and are available for use by a USB hub driver. | |
usb.h | Include\shared | Defines URB structures for USB Request Blocks (URBs) required by a client driver to send requests to the USB driver stack. | |
usb100.h | Include\shared | Defines USB descriptors, as per the official USB 1.0 specification. | |
usb200.h | Include\shared | usb100.h | Defines USB descriptors, as per the official USB 2.0 specification. |
usbbusif.h | Include\km | Defines bus interfaces that are defined for a USB client driver (FDO) that wants to link directly to the port driver instead of linking directly to Usbd.sys. | |
usbdi.h | Include\shared | usb.h usbioctl.h |
Defines helper macros for formatting URBs for specific types of requests. |
usbdlib.h | Include\km | Defines DDIs that are used by a USB client driver to send requests to the USB driver stack. | |
usbdrivr.h | Include\km | usb.h usbdlib.h usbioctl.h usbbusif.h |
Defines USB_KERNEL_IOCTL. |
usbioctl.h | Include\shared | usbiodef.h usb200.h |
Defines IOCTL codes supported by the USB driver stack. Includes kernel-mode IOCTL codes for client drivers; user-mode IOCTL codes for applications. |
usbiodef.h | Include\shared | Defines interface and WMI GUIDs. | |
usbkern.h | Include\km | usbioctl.h | Deprecated. |
usbrpmif.h | Include\um | usb100.h windef.h winapifamily.h |
Defines functions for an application to register itself in order to perform driver redirection operations for a USB device. |
usbspec.h | Include\shared | Defines device driver interfaces, as per the official USB specifications. | |
usbuser.h | Include\um | Defines user-mode IOCTL codes that are supported by the USB port driver. | |
winusb.h | Include\um | winapifamily.h winusbio.h |
Defines WinUSB functions exposed by Winusb.dll, which are used by applications that want to send requests to Winusb.sys that is installed as the function driver for a USB device. |
winusbio.h | Include\shared | winapifamily.h usb.h |
Defines flags for WinUSB functions. |
Libraries
Library | Path | Description |
---|---|---|
usbd.lib | \Lib\win8\km \Lib\win7\km \Lib\winv6.3\km |
Provides helper routines for getting information from the USB driver stack and formatting URBs for requests. |
usbrpm.lib | \Lib\win8\km \Lib\win7\km \Lib\winv6.3\km |
Provides functions for an application to perform operations for replacing a Microsoft-provided driver with a third-party RPM driver. |
usbdex.lib | \Lib\win8\km \Lib\win7\km \Lib\winv6.3\km |
Provides helper routines for client drivers to send requests to the underlying USB driver stack. The library gets loaded and statically linked to the client driver module when it is built. A client driver that calls these routines can run on Windows Vista and later versions of Windows. |
winusb.lib | \Lib\win8\km \Lib\win8\um \Lib\win7\km \Lib\win7\um \Lib\winv6.3\km \Lib\winv6.3\um |
Provides functions for a user-mode client driver or an application to communicate with a USB device that has Winusb.sys loaded as its function driver. |
Header Changes in Windows 8
Starting in Windows Driver Kit (WDK) for Windows 8, header file usbspec.h replaces USBProtocolDefs.h.
The new header file, usbspec.h, provides protocol definitions for the DDIs that are defined, as per the official USB specifications. The header file includes DDIs for the USB 3.0 specification.