Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em Windows Vista e versões posteriores do Windows, o modelo de propriedade do dispositivo unificado dá suporte a uma propriedade de dispositivo que representa o identificador da instância do dispositivo. O modelo de propriedade do dispositivo unificado usa a DEVPKEY_Device_InstanceIdchave de propriedade para representar essa propriedade.
Windows Server 2003, Windows XP e Windows 2000 também dão suporte a essa propriedade. No entanto, essas versões de Windows anteriores não dão suporte à chave de propriedade do modelo de propriedade do dispositivo unificado. Em vez disso, você pode recuperar um identificador de instância de dispositivo nessas versões anteriores do Windows chamando CM_Get_Device_ID ou SetupDiGetDeviceInstanceId. Para manter a compatibilidade com essas versões anteriores do Windows, Windows Vista e versões posteriores também dão suporte a CM_Get_Device_ID e SetupDiGetDeviceInstanceId. No entanto, você deve usar a chave de propriedade correspondente para acessar essa propriedade em Windows Vista e posteriores.
Para obter informações sobre como usar chaves de propriedade para acessar as propriedades do driver de dispositivo em Windows Vista e versões posteriores, consulte Acessando propriedades da instância do dispositivo (Windows Vista e posteriores).
Para recuperar um identificador de instância de dispositivo no Windows Server 2003, Windows XP e Windows 2000, consulte os exemplos a seguir.
As cadeias de caracteres do identificador da instância do dispositivo devem ter menos de MAX_DEVICE_ID_LEN caracteres (incluindo NULL), o que é definido em cfgmgr32.h. Você pode usar esse pressuposto para consultar o identificador da instância do dispositivo com código como:
WCHAR DeviceInstancePath[MAX_DEVICE_ID_LEN];
cr = CM_Get_Device_ID(DevInst,
DeviceInstancePath,
sizeof(DeviceInstancePath)/sizeof(DeviceInstancePath[0]),
0);
if (cr != CR_SUCCESS) {
printf("Error 0x%08x retrieving device instance path.\n", cr);
} else {
printf("Device instance path is %ws.\n", DeviceInstancePath);
}
ou, como alternativa, se você quiser que o buffer seja dimensionado dinamicamente:
ULONG DeviceInstancePathLength = 0;
PWSTR DeviceInstancePath = NULL;
cr = CM_Get_Device_ID_Size(&DeviceInstancePathLength,
DevInst,
0);
if (cr != CR_SUCCESS) {
printf("Error 0x%08x retrieving device instance path size.\n", cr);
} else {
DeviceInstancePath = (PWSTR)malloc(DeviceInstancePathLength * sizeof(WCHAR));
if (DeviceInstancePath != NULL) {
cr = CM_Get_Device_ID(DevInst,
DeviceInstancePath,
DeviceInstancePathLength,
0);
if (cr != CR_SUCCESS) {
printf("Error 0x%08x retrieving device instance path.\n", cr);
} else {
printf("Device instance path is %ws.\n", DeviceInstancePath);
}
}
}