HIDClass hardware IDs for top-level collections

This section specifies the hardware IDs that the HID class driver generates for top-level collections.

Vendors must use the formats that are designated as vendor hardware ID formats to identify top-level collections. All other device ID formats are reserved for internal use only.

The hardware IDs that the HID class driver generates for a devnode depends on the following:

  1. Number of functions supported by the underlying transport
  2. Number of Top Level Collections in the Report Descriptor

Based on these factors, there are 4 categories of hardware IDs

Type Single TLC Multiple TLC
Single-Function Case 1 Case 2
Multi-Function Case 3 Case 4

Case 1: Single-function device with single TLC

Condition under which this Hardware ID format is used:

  1. Number of functions supported by the underlying transport = 1 &&
  2. Number of TLC = 1

Hardware ID Format:

  • HID\Vid_v(4)&Pid_d(4)&Rev_r(4)
  • HID\Vid_v(4)&Pid_d(4)
  • HID_DEVICE_UP:p(4)_U:u(4)
  • HID_DEVICE

Case 2: Single-function device with multiple TLC

Condition under which this Hardware ID format is used:

  1. Number of functions supported by the underlying transport = 1 &&
  2. Number of TLC > 1

Hardware ID Format:

  • HID\Vid_v(4)&Pid_d(4)&Rev_r(4)&Colb(2)
  • HID\Vid_v(4)&Pid_d(4)&Colb(2)
  • HID_DEVICE_UP:p(4)_U:u(4) [RESERVED FOR WINDOWS INFs ONLY]
  • HID_DEVICE [RESERVED FOR WINDOWS INFs ONLY]

Case 3: Multi-function device with single TLC

Condition under which this Hardware ID format is used:

  1. Number of functions supported by the underlying transport > 1 &&
  2. Number of TLC = 1

Hardware ID Format:

  • HID\Vid_v(4)&Pid_d(4)&Rev_r(4)&MI_z(2)
  • HID\Vid_v(4)&Pid_d(4)&MI_z(2)
  • HID_DEVICE_UP:p(4)_U:u(4) [RESERVED FOR WINDOWS INFs ONLY]
  • HID_DEVICE [RESERVED FOR WINDOWS INFs ONLY]

Case 4: Multi-function device with multiple TLC

Condition under which this Hardware ID format is used:

  1. Number of functions supported by the underlying transport > 1 &&
  2. Number of TLC > 1

Hardware ID Format:

  • HID\Vid_v(4)&Pid_d(4)&Rev_r(4)&MI_z(2)&Colb(2)
  • HID\Vid_v(4)&Pid_d(4)&MI_z(2)&Colb(2)
  • HID_DEVICE_UP:p(4)_U:u(4) [RESERVED FOR WINDOWS INFs ONLY]
  • HID_DEVICE [RESERVED FOR WINDOWS INFs ONLY]

Special purpose hardware ID

The following are hardware IDs (for internal use only) that Windows uses to provide default system functionality.

Device Type Usage Page Usage Hardware ID
Pointer 0x01 0x01 HID_DEVICE_SYSTEM_MOUSE
Mouse 0x01 0x02 HID_DEVICE_SYSTEM_MOUSE
Joystick 0x01 0x04 HID_DEVICE_SYSTEM_GAME
Game pad 0x01 0x05 HID_DEVICE_SYSTEM_GAME
Keyboard 0x01 0x06 HID_DEVICE_SYSTEM_KEYBOARD
Keypad 0x01 0x07 HID_DEVICE_SYSTEM_KEYBOARD
System control 0x01 0x80 HID_DEVICE_SYSTEM_CONTROL
Consumer audio control 0x0C 0x01 HID_DEVICE_SYSTEM_CONSUMER

Important notes:

  • There are no compatible IDs generated by HIDClass
  • Vendor 3rd party INFs must only match against the hardware IDs
  • Hardware IDs that contain HID_DEVICE_SYSTEM_* are "special" devices that the operating system opens for its use. Vendor provided INF must not match on these special hardware IDs.
  • Vendor provided 3rd party HID transport minidrivers must provided the fields listed below to ensure that HIDClass can generate the appropriate hardware IDs.

Legend:

Field Contains Hexadecimal Value Meaning
v(4) four hex digits 0x0000-0xFFFF Vendor ID
d(4) four hex digits 0x0000-0xFFFF Product ID
r(4) four hex digits 0x0000-0xFFFF Revision Number
z(2) two hex digits 0x00-0xFF Interface number (only used with composite USB devices.)
b(2) two hex digits 0x00-0xFF Collection number (only used with multiple-TLC devices.)
p(4) four hex digits 0x0000-0xFFFF Usage Page Number for TLC
u(4) four hex digits 0x0000-0xFFFF Usage Number of TLC