Идентификатор экземпляра

Идентификатор экземпляра — это строка, сообщаемая перечислителем устройства (драйвером шины) и отличает устройство от других устройств того же типа на компьютере. Идентификатор экземпляра содержит сведения о серийном номере, если он поддерживается базовой шиной или какой-либо информации о расположении. Строка не может содержать символы "\" или любой другой символ, запрещенный в ответе на запрос IRP_MN_QUERY_ID ; в противном случае универсальный формат строки зависит от шины. Число символов идентификатора экземпляра, за исключением признака конца NULL, должно быть меньше MAX_DEVICE_ID_LEN. Кроме того, идентификатор экземпляра — это еще один вход в создание идентификатора экземпляра устройства, а также идентификатор устройства, а также максимальная длина идентификатора MAX_DEVICE_ID_LENэкземпляра устройства. Для этого требуется, чтобы длина идентификатора экземпляра была достаточно меньше, чем MAX_DEVICE_ID_LEN идентификатор экземпляра устройства, можно создать в виде строки с меньшей длиной MAX_DEVICE_ID_LEN.

Член UniqueID структуры DEVICE_CAPABILITIES для устройства указывает, является ли предоставленный шиной идентификатор экземпляра уникальным в системе следующим образом:

  • Если значение UniqueID равно FALSE, предоставленный шиной идентификатор экземпляра для устройства является уникальным только для шины устройства. Диспетчер Plug and Play (PnP) изменяет предоставленный шиной идентификатор экземпляра и объединяет его с соответствующим идентификатором устройства, чтобы создать идентификатор экземпляра устройства, уникальный в системе.

  • Если значение UniqueID равно TRUE, идентификатор экземпляра устройства, сформированный из предоставленного шиной идентификатора устройства и идентификатора экземпляра, однозначно идентифицирует устройство в системе.

Идентификатор экземпляра сохраняется во время перезагрузки системы.

Диспетчер PnP запрашивает эту строку от драйвера шины устройства, используя запрос IRP_MN_QUERY_ID с полем Parameters.QueryId.IdType , равным BusQueryInstanceID.