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:
- Number of functions supported by the underlying transport
- 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:
- Number of functions supported by the underlying transport = 1 &&
- 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:
- Number of functions supported by the underlying transport = 1 &&
- 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:
- Number of functions supported by the underlying transport > 1 &&
- 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:
- Number of functions supported by the underlying transport > 1 &&
- 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 |