Table of contents
TOC
Collapse the table of content
Expand the table of content

Specifying Hardware IDs for a Computer

Last Updated: 7/30/2016

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. For the computer, this hardware ID value can specifies 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 nameStructure name and typeSMBIOS specification versionOffsetLengthValueDescription

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.

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

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

© 2016 Microsoft