Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V systému Windows Vista a novějších verzích systému Windows podporuje jednotný model vlastností zařízení vlastnost zařízení, která představuje identifikátor instance zařízení. Model vlastností sjednoceného zařízení používá k reprezentaci této vlastnosti klíč vlastnostiDEVPKEY_Device_InstanceId.
Tuto vlastnost podporují také systémy Windows Server 2003, Windows XP a Windows 2000. Tyto starší verze Windows však nepodporují klíč vlastnosti modelu sjednocených vlastností zařízení. Místo toho můžete načíst identifikátor instance zařízení v těchto starších verzích Windows voláním CM_Get_Device_ID nebo SetupDiGetDeviceInstanceId. Kvůli zachování kompatibility s těmito staršími verzemi systému Windows podporují systém Windows Vista a novější verze také CM_Get_Device_ID a SetupDiGetDeviceInstanceId. Pro přístup k této vlastnosti v systému Windows Vista a novější byste však měli použít odpovídající klíč vlastnosti.
Informace o použití klíčů vlastností pro přístup k vlastnostem ovladače zařízení v systému Windows Vista a novějších verzích naleznete v tématu Přístup k vlastnostem instance zařízení (Windows Vista a novější).
Pokud chcete načíst identifikátor instance zařízení v systémech Windows Server 2003, Windows XP a Windows 2000, přečtěte si následující příklady.
Řetězce identifikátoru instance zařízení musí být menší než MAX_DEVICE_ID_LEN znaky (včetně null), které jsou definovány v cfgmgr32.h. Tento předpoklad můžete použít k dotazování identifikátoru instance zařízení s kódem, jako je:
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);
}
nebo případně pokud chcete, aby vaše vyrovnávací paměť byla dynamicky velká:
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);
}
}
}