Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8636589
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T10:15:56+00:00 2026-06-12T10:15:56+00:00

in windows if you go DeviceManager -> Select Device(Like a a keyboard) -> Go

  • 0

in windows if you go
DeviceManager -> Select Device(Like a a keyboard) -> Go to details -> List of properties:

Device description
Hardware Ids
Compatible Ids
Device class
Device class guid
Driver key
ConfigFlags
... etc

Where can I find what each of these properties mean?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T10:15:57+00:00Added an answer on June 12, 2026 at 10:15 am

    From MSDN documentation, you will find description for Device Instance IDs, and link to other descriptions. This link briefly describes some of them, which are listed as following:

    Device IDs

    A device ID is a vendor-defined identification string that is the most
    specific ID that Setup uses to match a device to an INF file. A device
    has only one device ID. A device ID has the same format as a hardware
    ID. If an enumerator reports a list of hardware IDs for a device, the
    device ID should be the first hardware ID in the list.

    The PnP Manager uses the device ID to create a subkey for a device
    under the registry key for the device’s enumerator.

    To obtain a device ID, use an IRP_MN_QUERY_ID request and set the
    Parameters.QueryId.IdType field to BusQueryDeviceID.

    Hardware IDs

    A hardware ID is a vendor-defined identification string that Setup
    uses to match a device to an INF file. In most cases, a device has
    associated with it a list of hardware IDs. (However, there are
    exceptions – see Identifiers for 1394 Devices). The first hardware ID
    in the list should be the device ID, and the remaining IDs should be
    listed in order of decreasing suitability.

    A hardware ID has one of the following generic formats:

    <enumerator>\<enumerator-specific-device-ID> This is the most common
    format for individual PnP devices reported to the PnP Manager by a
    single enumerator. New enumerators should use this format or the
    following format.
    *<enumerator-specific-ID> The asterisk indicates that the device is supported by more than one enumerator, such as ISAPNP and the BIOS.
    <device-class-specific-ID> An existing device class that has
    established its own naming convention might use a custom format. For
    information on their hardware ID formats, see the hardware
    specification for such buses. New enumerators should not use this
    format. The number of characters of a hardware ID, excluding a
    NULL-terminator, must be less than MAX_LENGTH_LEN. This constraint
    applies to the sum of the lengths of all the fields and any “\” field
    separators in a hardware ID. In addition, when an instance ID is
    concatenated to a hardware ID to create a device instance ID, the
    lengths of the hardware ID and the instance ID are further constrained
    by the maximum possible length of a device instance ID.

    To obtain the list of hardware IDs for a device, call
    IoGetDeviceProperty with the DeviceProperty parameter set to
    DevicePropertyHardwareID. The list of hardware IDs that this routine
    retrieves is a REG_MULTI_SZ value. The maximum number of characters in
    a hardware list, including a NULL terminator after each hardware ID
    and a final NULL terminator, is REGSTR_VAL_MAX_HCID_LEN. The maximum
    possible number of IDs in a list of hardware IDs is MAX_HCID_COUNT.

    Examples of Hardware IDs

    In the following, the first example is a generic identifier for a PnP
    device, and the second example is an identifier for a PCI device:

    root*PNP0F08

    PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02

    Compatible IDs

    A compatible ID is a vendor-defined identification string that Setup
    uses to match a device to an INF file. A device can have associated
    with it a list of compatible IDs. The compatible IDs should be listed
    in order of decreasing suitability. If Setup cannot locate an INF file
    that matches one of a device’s hardware IDs, it uses compatible IDs to
    locate an INF file. Compatible IDs have the same format as hardware
    IDs; however, compatible IDs are typically more generic than hardware
    IDs.

    If a vendor ships an INF file that specifies a compatible ID for a
    driver node, the vendor should ensure that their INF file can support
    all the hardware that matches the compatible ID. Because a match with
    a compatible ID is not as strong as a match to a hardware ID, the PnP
    Manager prompts the user for confirmation before processing the INF
    file.

    To obtain a list of compatible IDs for a device, call
    IoGetDeviceProperty with the DeviceProperty parameter set to
    DevicePropertyCompatibleID. The list of compatible IDs that this
    routine retrieves is a REG_MULTI_SZ value. The maximum number of
    characters in a compatible ID list, including a NULL terminator after
    each compatible ID and a final NULL terminator, is
    REGSTR_VAL_MAX_HCID_LEN. The maximum possible number of IDs in a list
    of compatible IDs is MAX_HCID_COUNT.

    Instance IDs

    An instance ID is a device identification string that distinguishes a
    device from other devices of the same type on a machine. An instance
    ID contains serial number information, if supported by the underlying
    bus, or some kind of location information. The string cannot contain
    any “\” characters; otherwise, the generic format of the string is
    bus-specific.

    The number of characters of an instance ID, excluding a
    NULL-terminator, must be less than MAX_LENGTH_LEN. In addition, when
    an instance ID is concatenated to a device ID to create a device
    instance ID, the lengths of the device ID and the instance ID are
    further constrained by the maximum possible length of a device
    instance ID.

    The UniqueID member of the DEVICE_CAPABILITIES structure for a device
    indicates if a bus-supplied instance ID is unique across the system,
    as follows:

    If UniqueID is FALSE, the bus-supplied instance ID for a device is
    unique only to the device’s bus. The PnP Manager modifies the
    bus-supplied instance ID, and combines it with the corresponding
    device ID, to create a device instance ID that is unique in the
    system. If UniqueID is TRUE, the device instance ID, formed from the
    bus-supplied device ID and instance ID, uniquely identifies a device
    in the system. An instance ID is persistent across system boots.

    To obtain the bus-supplied instance ID for a device, use an
    IRP_MN_QUERY_ID request and set the Parameters.QueryId.IdType member
    to BusQueryInstanceID.

    Device Instance IDs

    A device instance ID is a system-supplied device identification string
    that uniquely identifies a device in the system. The PnP Manager
    assigns a device instance ID to each device node in a system’s device
    tree.

    The format of this string consists of an instance ID concatenated to a
    device ID, as follows:

    \ The number of characters of a
    device instance ID, excluding a NULL-terminator, must be less than
    MAX_LENGTH_LEN. This constraint applies to the sum of the lengths of
    all the fields and “\” field separator between the device ID and
    instance-specific-ID fields. A device instance ID is persistent across
    system boots.

    The following is an example of an instance ID (“1&08”) concatenated to
    a device ID for a PCI device:

    PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02\1&08

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm curious how the windows device manager obtains the hardware IDs for a device,
I have a windows mobile device which is running windows CE 5.0. I want
Windows Phone 7.5 app. I am thinking to restructure my app like creating separate
For MSI (Message Signaled Interrupts), the IRQ value in the Windows Device Manager is
Windows Mobile devices have different behaviour for suspending when the device is on battery
I'm on a Windows 7 device (Archos 101 Internet tab/Prestigio 7100c). It's connected with
In the Windows Device Manager, I can look up the VID and PID of
I'm working on a hardware device that exposes itself as a Mass Storage device
Windows form application(.Net 3.5) I have a textbox and a button on the form.
windows.h is included, code: #include <windows.h> int main() { HANDLE hToken; DWORD dwSize; TOKEN_ELEVATION_TYPE

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.