Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
I Windows Vista och senare versioner av Windows stöder den enhetliga enhetsegenskapsmodellen en enhetsegenskap som representerar enhetsinstansidentifieraren. Den enhetliga enhetsegenskapsmodellen använder DEVPKEY_Device_InstanceIdegenskapsnyckel för att representera den här egenskapen.
Windows Server 2003, Windows XP och Windows 2000 stöder också den här egenskapen. Dessa tidigare Windows-versioner stöder dock inte egenskapsnyckeln för den enhetliga enhetsegenskapsmodellen. I stället kan du hämta en enhetsinstansidentifierare i dessa tidigare versioner av Windows genom att anropa CM_Get_Device_ID eller SetupDiGetDeviceInstanceId. För att upprätthålla kompatibiliteten med dessa tidigare versioner av Windows stöder Windows Vista och senare versioner även CM_Get_Device_ID och SetupDiGetDeviceInstanceId. Du bör dock använda motsvarande egenskapsnyckel för att komma åt den här egenskapen i Windows Vista och senare.
Information om hur du använder egenskapsnycklar för att komma åt egenskaper för enhetsdrivrutiner i Windows Vista och senare versioner finns i #B0 Åtkomst till egenskaper för enhetsinstanser (Windows Vista och senare) #A1 .
Information om hur du hämtar en enhetsinstansidentifierare på Windows Server 2003, Windows XP och Windows 2000 finns i följande exempel.
Enhetsinstansidentifierarsträngar måste vara mindre än MAX_DEVICE_ID_LEN tecken (inklusive NULL) som definieras i cfgmgr32.h. Du kan använda det antagandet för att fråga enhetsinstansidentifieraren med kod som:
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);
}
eller om du vill att bufferten ska vara dynamiskt storleksanpassad:
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);
}
}
}