实例 ID 是由设备的枚举器(其总线驱动程序)报告的字符串,并将设备与计算机上的相同类型的其他设备区分开来。
实例 ID 包含序列号信息(如果基础总线支持)或某种位置信息。 字符串不能包含对 IRP_MN_QUERY_ID 请求的响应中不允许的任何“\”字符或任何其他字符;否则,字符串的泛型格式是特定于总线的。
实例 ID(不包括 NULL 终止符)的字符数必须小于 MAX_DEVICE_ID_LEN。 此外,实例 ID也是创建设备实例 ID和设备 ID的另一个输入,设备实例 ID 的最大可能长度是MAX_DEVICE_ID_LEN。 这要求 实例 ID 的长度明显小于 MAX_DEVICE_ID_LEN,从而使设备实例 ID 可以创建为长度小于 MAX_DEVICE_ID_LEN 的字符串。
设备的 DEVICE_CAPABILITIES 结构的 UniqueID 成员指示总线提供的实例 ID 是否在整个系统中是唯一的,如下所示:
如果UniqueID为FALSE,那么由总线分配的设备实例 ID仅在该设备的总线上是唯一的。 即插即用(PnP)管理器修改总线提供的 实例 ID,并将其与相应的设备 ID 组合在一起,以创建在系统中唯一的设备实例 ID。
如果 UniqueID 为 TRUE,则设备实例 ID(由总线提供的设备 ID 和 实例 ID 构成)唯一标识系统中的设备。
实例 ID 在系统重启时持久存在。
PnP 管理器通过向设备的总线驱动程序发送一个 IRP_MN_QUERY_ID 请求,并将 Parameters.QueryId.IdType 字段设置为 BusQueryInstanceID,以查询此字符串。