Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Windows Vista und höheren Versionen von Windows unterstützt das einheitliche Geräteeigenschaftsmodell eine Geräteeigenschaft, die den Geräteinstanzbezeichner darstellt. Das einheitliche Geräteeigenschaftenmodell verwendet den DEVPKEY_Device_InstanceIdEigenschaftenschlüssel , um diese Eigenschaft darzustellen.
Windows Server 2003, Windows XP und Windows 2000 unterstützen diese Eigenschaft ebenfalls. Diese früheren Windows Versionen unterstützen jedoch nicht den Eigenschaftsschlüssel des einheitlichen Geräteeigenschaftenmodells. Stattdessen können Sie einen Geräteinstanzbezeichner für diese früheren Versionen von Windows abrufen, indem Sie CM_Get_Device_ID oder SetupDiGetDeviceInstanceId aufrufen. Um die Kompatibilität mit diesen früheren Versionen von Windows aufrechtzuerhalten, unterstützen Windows Vista und höhere Versionen auch CM_Get_Device_ID und SetupDiGetDeviceInstanceId. Sie sollten jedoch den entsprechenden Eigenschaftsschlüssel verwenden, um auf diese Eigenschaft auf Windows Vista und höher zuzugreifen.
Informationen zum Verwenden von Eigenschaftenschlüsseln für den Zugriff auf Gerätetreibereigenschaften in Windows Vista und höheren Versionen finden Sie unter "Zugreifen auf Geräteinstanzeigenschaften" (Windows Vista und höher).
Wie Sie einen Geräteinstanzbezeichner unter Windows Server 2003, Windows XP und Windows 2000 abrufen, zeigen die folgenden Beispiele.
Geräteinstanzbezeichnerzeichenfolgen dürfen nicht mehr als MAX_DEVICE_ID_LEN Zeichen lang sein (einschließlich NULL), wie in cfgmgr32.h definiert. Sie können diese Annahme verwenden, um den Geräteinstanzbezeichner mit folgendem Code abzufragen:
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);
}
oder wenn der Puffer dynamisch angepasst werden soll:
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);
}
}
}