Поделиться через


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

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