

For example, that property can be retrieved with APIs such as IoGetDevicePropertyData, SetupDiGetDeviceProperty, or CM_Get_DevNode_Property. The list of compatible IDs can be obtained programmatically by retrieving the DEVPKEY_Device_CompatibleIds property on a device. If a vendor ships a driver package that specifies a compatible ID for a driver node, the vendor should make sure that their driver package can support all the hardware that exposes that compatible ID. To find compatible IDs for a given device, select the device in Device Manager, choose Properties, then the Details tab, then use the Properties drop-down. Where the actual compatible IDs would represent those concepts using strings that follow the format requirements of a compatible ID. For example, the list of conceptual compatible IDs for a device might look like the following: If Windows cannot locate a driver package that matches one of a device's hardware IDs, it uses compatible IDs to locate a driver package. The compatible IDs should be listed in order of decreasing suitability. A device can have associated with it a list of compatible IDs. Compatible IDs have the same format as hardware IDs but tend to be a more generic description of a device than a hardware ID.

A compatible ID identifies what a device is to some level of specificity and is indicating that any driver package that declares it can work with a device that has that ID can work with this device for some degree of functionality. A compatible ID is a vendor-defined identification string that Windows uses to match a device to a driver package.
