兼容的 ID 是 Windows 用来将设备与 驱动程序包匹配的供应商定义的标识字符串。 兼容 ID 在一定程度上识别设备的特性,并表明任何声明适用于具有该 ID 的设备的驱动程序包都能实现该设备的一定功能。 兼容的 ID 的格式与 硬件 ID 相同, 但往往比硬件 ID 更通用地描述设备。 设备可能会有一个与其关联的兼容 ID 列表。 应按降低适用性的顺序列出兼容的 ID。 如果 Windows 找不到与某个设备硬件 ID 匹配的驱动程序包,它将使用兼容的 ID 来查找驱动程序包。 例如,设备的概念兼容 ID 列表可能如下所示:
<Product X made by company Y>
<Device of type W made by company Y>
<Device of type W>
其中,实际兼容的 ID 将使用符合兼容 ID 格式要求的字符串来表示这些概念。
若要查找给定设备的兼容 ID,请在设备管理器中选择设备,选择 “属性”,然后选择“ 详细信息 ”选项卡,然后使用“属性”下拉列表。
如果供应商附带了指定驱动程序节点兼容 ID 的驱动程序包,供应商应确保其驱动程序包可以支持公开该兼容 ID 的所有硬件。
可以通过检索设备上的 DEVPKEY_Device_CompatibleIds 属性,以编程方式获取兼容的 ID 列表。 例如,可以使用 IoGetDevicePropertyData、SetupDiGetDeviceProperty或 CM_Get_DevNode_Property等 API 检索该属性。
此例程检索的兼容 ID 列表是一个 REG_MULTI_SZ 值。 兼容 ID 列表中的最大字符数,包括在每个兼容 ID 之后的 NULL 终止符和一个最终的 NULL 终止符,共计为 REGSTR_VAL_MAX_HCID_LEN。 兼容 ID 列表中可能的最大 ID 数为 64。