HIDClass Hardware IDs for Top-Level Collections

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
Single TLCMultiple TLC
Single-FunctionCase 1Case 2
Multi-FunctionCase 3Case 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 TypeUsage PageUsageHardware 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:
FieldContainsHexadecimal ValueMeaning
v(4)four hex digits0x0000-0xFFFFVendor ID
d(4)four hex digits0x0000-0xFFFFProduct ID
r(4)four hex digits0x0000-0xFFFFRevision Number
z(2)two hex digits0x00-0xFFInterface number (only used with composite USB devices.)
b(2)two hex digits0x00-0xFFCollection number (only used with multiple-TLC devices.)
p(4)four hex digits0x0000-0xFFFFUsage Page Number for TLC
u(4)four hex digits0x0000-0xFFFFUsage Number of TLC

Compatible IDs


Hardware IDs

Hardware IDs come in almost any form. They can be *DeviceID, where DeviceID is a three-letter company ID followed by a 4 hex digit device ID. Many Windows Hardware IDs use pnp as the company ID (e.g., *pnp0700 is a standard floppy disk controller).
Other Hardware IDs are in a form specific to the enumerator and often start with an enumerator code and a backslash. Here are typical Hardware IDs.
PCI\VEN_1011&DEV_0021 ; DEC 21052 PCI to PCI bridge
USB\VID_045E&PID_000B ; Microsoft USB Keyboard
USB\VID_046A&PID_0001 ; Cherry USB Keyboard
HID\VID_046A&PID_0001 ; Cherry USB Keyboard
Gameport\SideWinder3dPro ; Microsoft Sidewinder 3D Pro
PCMCIA\ACCT0N-EN2212-C817 ; Accton EN2212 Ethernet PCMCIA Adapter
ISAPNP\ICI1995 ; CoreLogic NetViper-100 ISDN Adapter
These Hardware IDs often include the vendor code and a device or product ID. These Hardware IDs can come in versions that are more specific. For example, USB devices can have REV_ revision numbers, MC_ multi-configuration IDs or MI_ multi-interface numbers added to the basic Hardware ID. Complicated rules apply if a USB device has more than one configuration or interface[27]. In a simple case, if you produce a new driver for your version two USB device, use REV_ in the Hardware ID to specify the latest driver. Make sure that the most desirable Hardware ID appears first in the Models list.
[models]
%USBDevice_V2%=V2Install,USB\VID_ABCD&PID_EF01&REV_0002
%USBDevice_V1%=V1Install,USB\VID_ABCD&PID_EF01


Comentarios

Entradas populares de este blog

Guía de herramientas básicas para estudiantes: 31 apps y webs imprescindibles para ayudarte con los estudios

Comando FOR para archivos BAT

How to Setup and Configure Your Own GitLab Server on Ubuntu 20.04