WDM Human Interface Device Class Support

Updated: December 4, 2001

The core of the Microsoft Windows input architecture is based on the Universal Serial Bus (USB) standard Device Class Definition for Human Interface Devices (HID), defined by the USB Implementers Forum, Inc. The USB HID standard defines the configuration and communication protocols for human interface devices - such as keyboards, mice, joysticks, and virtual reality devices - that humans use to enter data directly into a computer.

Although the core of the Windows input architecture is based on the USB HID standard, the architecture is not limited to USB devices. The input architecture also supports serial port devices, i8042 port devices, and proprietary input devices.

HID drivers are either kernel-mode HID clients or HID minidrivers:

HID Client Driver. The most common sort of kernel-mode HID client is the mapper driver, a driver that translates a HID data stream originating from the HID class driver into the data format that a non-HID class driver supports. A keyboard mapper driver, Kbdhid.sys, and a mouse mapper driver, Mouhid.sys, are supplied in Windows 2000 and later.

HID Minidriver. the HID class driver serves as a class driver for all types of HID devices, so that no HID-compliant device should require its own class driver. However, even non-HID input devices can make use of the HID class driver, thus saving driver development time. This can be done provided the non-HID device has a minidriver that can abstract the details of the bus that the device uses from the HID class driver.

By making a non-USB device appear to be a HID device, a properly designed HID minidriver can make connection details completely transparent to applications accessing the device. For example, consider a camera that can be controlled by a computer and that comes with either a USB connector or a serial connector for use with older computers without USB ports. With the appropriate HID minidriver that makes the serial camera controls look like HID features, a single application can control the camera through either the serial or USB connectors using Microsoft DirectInput APIs, without special code to handle the connection differences. HID minidrivers provide a simple mechanism for supporting devices that can be connected by way of non-USB ports, while at the same time taking advantage of the newer USB capabilities.

A minidriver for non-USB gameports, Hidgame.sys, is supplied with Windows 2000 and later.

For more information, see these topics in the current Windows DDK:

For HID components, see "Components for HID Devices" and "Types of HID Clients."

For the non-HID components, see "Drivers for Non-HID Input Devices."

For the user-mode components, see "User-Mode Components that Support Input Devices."

For an example of a HID device stack, see "Microsoft Windows HID Device Stacks."


Top of pageTop of page