HID driver development

Human interface devices (or HID) include: alphanumeric displays, barcode readers, volume controls on speakers/headsets, auxiliary displays, and sensors. In addition, many hardware vendors use HID for their proprietary devices.

Examples of interactive input devices include:

  • Keyboards and pointing devices such as standard mouse devices, trackballs, and joysticks.
  • Front-panel controls such as knobs, switches, buttons, and sliders.
  • Controls found on devices such as telephones and other consumer electronics.
  • Controls, games, and simulation devices such as data gloves, throttles, steering wheels, and rudder pedals.
  • Sensory data such as accelerometers, gyroscope data.

HID Class Driver

The architecture of the HID driver stack in Windows is built on the Microsoft-provided class driver named hidclass.sys. Clients and transport minidrivers access the class driver from user-mode or kernel-mode. For details, see:

HID Architecture

HID Transports

HID started over USB but was designed in a bus agnostic fashion from the very beginning. It was originally designed for low latency, low bandwidth devices but is flexible, and the rate is specified by the underlying transport. The specification for HID over USB was ratified in the late 1990s, and support over additional transports started soon after that. Today, HID has a standard protocol over multiple transports, and the following transports are supported natively in Windows 8 for HID:

  • USB
  • Bluetooth
  • Bluetooth LE
  • I²C

Vendor specific transports are also allowed via 3rd party vendor-specific transport drivers. For more details, see

HID Transports

HID Transports Supported in Windows

HID Clients

The HID Clients are drivers, services or applications that communicate using the HID API and often represent a specific type of device (for example: a sensor, a keyboard, or a mouse). They identify the device via a hardware ID or a specific HID Collection and communicate with the HID Collection via HID API. For more details, see

HID Clients

HID Transports Supported in Windows

Documentation sections

Design Guide for writing HID drivers


Industry-Wide Documentation

The following specifications and whitepapers are applicable to any HID device.

Microsoft-Specific Documentation

The following specifications and whitepapers are applicable to HID devices that are compatible with Windows.




Send comments about this topic to Microsoft