Specifying Hardware IDs for a Computer

Devices and Printers recognizes the computer as a device container. As a result, the computer can be identified within a device metadata package by using a HardwareID XML element that specifies a unique hardware ID value. This hardware ID value for the computer (sometimes referred to as a computer hardware ID, or CHID) can specify a combination of the System Management BIOS (SMBIOS) field data.

Unlike hardware IDs for other device containers, the hardware ID for the computer is generated by Windows every time the system boots. The hardware IDs for a computer can be generated by running the ComputerHardwareIds tool (ComputerHardwareIDs.exe), which is included in the Windows Driver Kit (WDK) for Windows 7, Windows 8 and Windows 8.1. Beginning with Windows 10, the ComputerHardwareIds tool is included in the Software Development Kit (SDK).

The ComputerHardwareIds tool generates a set of hardware IDs for the computer that is based on information from the fields in the system's System Management BIOS (SMBIOS). The following table describes these SMBIOS fields.

Field name Structure name and type SMBIOS specification version Offset Length Value Description
Manufacturer System Information (Type 1) 2.0+ 04h BYTE STRING The index of a null-terminated string within the dmiStrucBuffer array. This string specifies the name of the computer manufacturer.
Family System Information (Type 1) 2.4+ 1Ah BYTE STRING The index of a null-terminated string within the dmiStrucBuffer array. This string specifies the family to which a particular computer belongs. A family refers to a set of computers that are similar but not identical from a hardware or software point of view. Typically a family is composed of different computer models, which have different configurations and pricing points. Computers in the same family often have similar branding and cosmetic features.
Product Name System Information (Type 1) 2.0+ 05h BYTE STRING The index of a null-terminated string within the dmiStrucBuffer array. This string specifies the product name of the computer.
Vendor BIOS Information (Type 0) 2.0+ 04h BYTE STRING The index of a null-terminated string within the dmiStrucBuffer array. This string specifies the name of the BIOS vendor.
BIOS Version BIOS Information (Type 0) 2.+0 05h BYTE STRING The index of a null-terminated string within the dmiStrucBuffer array. This string can contain information about the processor core and OEM version.
System BIOS Major Release BIOS Information (Type 0) 2.4+ 14h BYTE Varies. The major release of the system BIOS.
System BIOS Minor Release BIOS Information (Type 0) 2.4+ 15h BYTE Varies The minor release of the system BIOS.
Enclosure type System Enclosure (Type 3) 2.0+ 05h BYTE Varies The system enclosure or chassis types.
SKU Number SKU Number (Type 1) 2.4+ 19h BYTE STRING The identification of a particular computer configuration for sale.
Baseboard Manufacturer Manufacturer (Type 2) 04h BYTE STRING Number of null-terminated string. This string identifies the Manufacturer of the Baseboard, where the Baseboard – Board Type is 0Ah (Motherboard).
Baseboard Product Product (Type 2) 05h BYTE STRING Number of null-terminated string. This string identifies the Product name of the Baseboard, where the Baseboard – Board Type is 0Ah (Motherboard).

For more information about the dmiStrucBuffer array and the SMBIOS fields, see the System Management BIOS (SMBIOS) specification on the Distributed Management Task Force (DMTF) website.

When the ComputerHardwareIds tool runs, it creates unique hardware IDs from the SMBIOS information. Each hardware ID is a GUID and is created by concatenating the values from the SMBIOS fields.

The following tables show the SMBIOS fields used to form each hardware ID in Windows 7, Windows 8, Windows 8.1, and Windows 10.

Important   Each Computer HardwareID is only generated if each individual SMBIOS field used to generate the HardwareID is populated in the SMBIOS data for the system.

HWID Windows 7
HardwareID-0 Manufacturer + Family + Product Name + Vendor + BIOS Version + System BIOS Major Release + System BIOS Minor Release
HardwareID-1 Manufacturer + Product Name + BIOS Vendor + BIOS Version + System BIOS Major Release + System BIOS Minor Release
HardwareID-2 Manufacturer + Family + ProductName
HardwareID-3 Manufacturer + ProductName
HardwareID-4 Manufacturer + Family
HardwareID-5 Manufacturer + Enclosure Type
HardwareID-6 Manufacturer
HWID Windows 8, Windows 8.1
HardwareID-0 Manufacturer + Family + Product Name + SKU Number + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-1 Manufacturer + Family + Product Name + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-2 Manufacturer + Product Name + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-3 Manufacturer + Family + ProductName + SKU Number
HardwareID-4 Manufacturer + Family + ProductName
HardwareID-5 Manufacturer + SKU Number
HardwareID-6 Manufacturer + ProductName
HardwareID-7 Manufacturer + Family
HardwareID-8 Manufacturer + Enclosure Type
HardwareID-9 Manufacturer
HWID Windows 10
HardwareID-0 Manufacturer + Family + Product Name + SKU Number + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-1 Manufacturer + Family + Product Name + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-2 Manufacturer + Product Name + BIOS Vendor + BIOS Version + BIOS Major Release + BIOS Minor Release
HardwareID-3 Manufacturer + Family + Product Name + SKU Number + Baseboard Manufacturer + Baseboard Product
HardwareID-4 Manufacturer + Family + Product Name + SKU Number
HardwareID-5 Manufacturer + Family + Product Name
HardwareID-6 Manufacturer + SKU Number + Baseboard Manufacturer + Baseboard Product
HardwareID-7 Manufacturer + SKU Number
HardwareID-8 Manufacturer + Product Name + Baseboard Manufacturer + Baseboard Product
HardwareID-9 Manufacturer + Product Name
HardwareID-10 Manufacturer + Family + Baseboard Manufacturer + Baseboard Product
HardwareID-11 Manufacturer + Family
HardwareID-12 Manufacturer + Enclosure Type
HardwareID-13 Manufacturer + Baseboard Manufacturer + Baseboard Product
HardwareID-14 Manufacturer

Each hardware ID string is converted into a GUID by using the SHA-1 hashing algorithm.

Using Computer HardwareIDs with PC Device Metadata packages

For Windows 7 systems, we highly recommend that vendors do the following when selecting a hardware ID value to use as the HardwareID XML element value for the computer.

  • Use HardwareID-3 or HardwareID-4 as the first choice if the device metadata package matches a computer that has a specific make, family, and model. This allows a metadata package to match the specified computer, which provides the most precise metadata for the computer.

  • Use HardwareID-5, as the second choice if the device metadata package covers the entire family of computers. In this case, the computer family is unique and is not branded with more than one product line.

  • Use HardwareID-6 or HardwareID-7 as the third choice if the device metadata package covers all of your computers or those computers with a specific enclosure type.

Note  For Windows 7 PC Device Metadata, do not use HardwareID-1 or HardwareID-2 for the computer's hardware ID. Hardware ID-1 or HardwareID-2 is reserved for future use.

Note  For Windows 8 PC Device Metadata, we strongly recommend that vendors not use HardwareID-1, HardwareID-2, HardwareID-3 for the computer’s hardware ID. HardwareID-1, HardwareID-2, HardwareID-3 are reserved for future use. Instead, vendors can use HardwareID-4, HardwareID-5, HardwareID-6, HardwareID-7, HardwareID-8, HardwareID-9, and HardwareID-10.

To specify that the hardware ID is for a computer device container, use the following rules:

  • Delimit the hardware ID string with '{' and '}' characters.

  • Add the prefix 'ComputerMetadata\' in front of the hardware ID string.

The following is an example of a HardwareID XML element for the computer:

DOID:ComputerMetadata\{c20d5449-511e-4cb5-902a-a541239322aa}

For more information about the format requirements of the HardwareID XML element, see HardwareID.

Windows 10 Driver Publishing Workflow