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:
- 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
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 |
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
Publicar un comentario
Dime si la información de este blog te sirvio.