列舉已安裝的裝置
您不應該直接使用登錄機碼來列舉裝置。 登錄機碼不包含列舉系統上已安裝裝置的必要資訊。 這項資訊,例如裝置實際存在,或是未插入) 的虛設裝置 (裝置,會由 隨插即用 (PnP) 管理員保留。 PnP 管理員也會執行登錄資訊的其他篩選。
若要安全地列舉已安裝的裝置,請遵循下列步驟。
使用 Configuration Manager 函式:
使用 CM_Get_Device_ID_List 擷取唯一 裝置實例標識碼清單, (標識符) 字串。 若只要擷取系統中存在的裝置資訊,請在 ulFlags 參數中設定CM_GETIDLIST_FILTER_PRESENT。
您可以使用唯一的裝置實例標識碼搭配 CM_Locate_DevNode 來擷取 DEVINST ,代表要與其他 Configuration Manager API 搭配使用的裝置。
使用 SetupAPI 函式:
使用 SetupDiGetClassDevs 來擷取一組裝置的資訊。 若只要擷取系統中存在的裝置資訊,請在 Flags 參數中設定DIGCF_PRESENT。
使用 SetupDiEnumDeviceInfo 列舉集合中的裝置。
您可以使用 SetupDiEnumDeviceInfo 傳回的SP_DEVINFO_DATA與其他 SetupApi API,或使用 SetupDiGetDeviceInstanceId 擷取裝置的唯一裝置實例標識碼 (標識符) 。