如设备标识字符串中所述,下面是新总线驱动程序应用于即插即用 (PnP) 硬件 ID 和兼容 ID 的通用格式。
enumerator\enumerator-specific-device-ID
其中:
枚举器 (总线驱动程序) 标识 枚举器 ,该驱动程序) 检测总线上的子设备并将其报告给 PnP 管理器。
enumerator-specific-device-ID 是特定于总线驱动程序的设备标识符。
如果总线的配置或操作与其他总线明显不同,则总线的总线驱动程序应使用唯一的枚举器名称,以确保总线的子设备不会无意中与这些其他总线的总线驱动程序枚举的子设备进行不适当的分组。 总线驱动程序应使用以下格式向 PnP 管理器报告设备标识字符串:
bus-type-guid\vendor-specific-id
其中:
bus-type-guid 是标识总线的唯一 GUID,应与用于标识总线的 GUID 相同。 如 安装总线驱动程序中所述,总线驱动程序标识设备的总线类型,以响应设备的 IRP_MN_QUERY_BUS_INFORMATION 请求。
vendor-specific-id 是供应商定义的格式,通常标识供应商、设备、子系统、修订号以及可能的其他设备信息。 例如,格式可能采用 供应商&设备&子系统&修订版的形式, 其中和号字符 (“&”) 分隔子字段,每个子字段的格式特定于供应商。 有关实际设备标识字符串的示例,请参阅 设备标识字符串。
PnP 管理器将 IRP_MN_QUERY_ID 请求发送到总线驱动程序,以获取设备的设备标识字符串。 设备标识字符串包括设备 ID、设备实例 ID、硬件 ID 列表和兼容 ID 列表。 以下虚构示例包括设备 ID、硬件 ID 列表和兼容 ID 列表。 在这些示例中,枚举器由 bus-type-guid 子字段指定,该子字段是 GUID“{xxxxxxxx-yyyy-zzzz-xxxx-yyy}”。 供应商特定 id 字段的格式为“供应商&设备&子系统&修订版”,其中“供应商”子字段为“ven_1”,“设备”子字段为“dev_2”,子系统子字段为“subsys_3”,Revision 子字段为“rev_4”。
设备 ID 是设备最具体描述的硬件 ID。 在以下示例中,设备 ID 指定供应商、设备、子系统和修订版。
{xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy}\ven_1&dev_2&subsys_3&rev_4
硬件 ID 列表按顺序指定 ID,从最具体到最不具体。 在以下列表中,如果设备标识字符串至少指定供应商、设备和子系统,则会将其报告为硬件 ID。 首先列出包含最多信息的硬件 ID。
{xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy}\ven_1&dev_2&subsys_3&rev_4
{xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy}\ven_1&dev_2&subsys_3
在以下列表中,如果设备标识字符串至少指定供应商和设备 (位置 1 和 2) ,但未指定子系统 (位置 3) ,则会报告为兼容 ID。 首先列出包含最多信息的兼容 ID。
{xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy}\ven_1&dev_2&rev_4
{xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy}\ven_1&dev_2
如果驱动程序使用硬件 ID 进行安装,则意味着匹配设备的完整功能。 如果驱动程序使用兼容 ID 进行安装,则至少意味着用于匹配设备的基本功能。驱动程序可能会使用兼容的 ID,以便泛型驱动程序可以在大量设备上工作。 例如,许多 Windows 系统提供的驱动程序与兼容的 ID 匹配。 与硬件 ID 匹配的驱动程序通常面向一小部分设备,但提供完整功能。