ID da Instância

Um ID de instância é uma cadeia de caracteres informada pelo enumerador de um dispositivo (seu driver de barramento) e distingue um dispositivo de outros dispositivos do mesmo tipo em um computador. Um ID de instância contém informações de número de série, se suportado pelo barramento subjacente, ou algum tipo de informação de localização. A string não pode conter caracteres "\" nem qualquer outro caractere não permitido em uma resposta a uma solicitação IRP_MN_QUERY_ID; caso contrário, o formato genérico da string é específico do barramento. O número de caracteres de uma ID de instância, excluindo um terminador NULL, deve ser menor que MAX_DEVICE_ID_LEN. Além disso, a ID da instância é outra entrada na criação da ID da instância do dispositivo, junto com uma ID do dispositivo, e o comprimento máximo possível de uma ID da instância do dispositivo é MAX_DEVICE_ID_LEN. Isso requer que o comprimento da ID da instância seja suficientemente menor do MAX_DEVICE_ID_LEN que a ID da instância do dispositivo pode ser criada como uma cadeia de caracteres com comprimento menor que MAX_DEVICE_ID_LEN.

O membro UniqueID da estrutura DEVICE_CAPABILITIES de um dispositivo indica se um ID de instância fornecido pelo barramento é exclusivo em todo o sistema, da seguinte forma:

  • Se UniqueID for FALSE, o ID de instância fornecido pelo barramento para um dispositivo será exclusivo apenas para o barramento do dispositivo. O gerenciador Plug and Play (PnP) modifica o ID de instância fornecido pelo barramento e o combina com o ID de dispositivo correspondente para criar um ID de instância de dispositivo que seja exclusivo no sistema.

  • Se UniqueID for TRUE, o ID de instância do dispositivo, formado pelo ID do dispositivo fornecido pelo barramento e pelo ID de instância, identifica de forma única um dispositivo no sistema.

Uma ID de instância é persistente durante as reinicializações do sistema.

O gerenciador PnP solicita essa string ao driver de barramento do dispositivo usando uma solicitação IRP_MN_QUERY_ID com o campo Parameters.QueryId.IdType definido como BusQueryInstanceID.