裝置資訊集
在使用者模式中,屬於 裝置安裝類別 或 裝置介面類別別的 裝置是使用 裝置資訊元素 和 裝置資訊集來管理。 裝置資訊集包含屬於某些裝置安裝類別或裝置介面類別別之所有裝置的裝置資訊元素。
每個裝置資訊元素都包含裝置 開發節點的控制碼,以及與該專案所描述之裝置相關聯之所有裝置介面連結清單的指標。 如果裝置資訊集描述安裝類別的成員,專案可能不會指向任何裝置介面,因為安裝類別成員不一定與介面相關聯。
下圖顯示裝置資訊集的內部結構。
建立裝置資訊集
使用 SetupDiCreateDeviceInfoList建立裝置資訊集之後,可以使用 SetupDiCreateDeviceInfo一次建立一個裝置資訊元素並新增至清單。 或者,您可以呼叫 SetupDiGetClassDevs ,以建立由與指定裝置安裝類別或裝置介面類別別相關聯的所有裝置組成的裝置資訊集。
列舉裝置資訊
建立裝置資訊集之後,可以列舉屬於該集合的裝置和裝置介面,但每種列舉類型都需要不同的作業。 SetupDiEnumDeviceInfo 會列舉屬於符合特定準則之資訊集的所有裝置。 每次呼叫 SetupDiEnumDeviceInfo 時,都會擷取大致對應到裝置資訊元素 的SP_DEVINFO_DATA 結構。 SP_DEVINFO_DATA包含裝置所屬類別的 GUID,以及指向裝置開發人員節點的 裝置實例 控制碼。 SP_DEVINFO_DATA結構和完整裝置元素之間的主要差異在於,SP_DEVINFO_DATA 不包含 與裝置相關聯的介面連結清單。 因此, SetupDiEnumDeviceInfo 無法用來列舉裝置資訊集中的介面。
若要列舉裝置資訊集中的裝置介面,請呼叫 SetupDiEnumDeviceInterfaces。 此常式會逐步執行裝置資訊集中的所有裝置資訊元素、擷取每個元素介面清單中的介面,並傳回每個呼叫的一個介面。 如果 SetupDiEnumDeviceInterfaces 在其第二個參數中傳遞SP_DEVINFO_DATA結構做為輸入,則會將列舉限制為只有與SP_DEVINFO_DATA所指示裝置相關聯的介面。
SetupDiEnumDeviceInterfaces 會傳回 SP_DEVICE_INTERFACE_DATA 結構。 SP_DEVICE_INTERFACE_DATA包含介面類別別 GUID 和其他介面的相關資訊,包括具有編碼資訊的保留字段,可用來取得介面的名稱。 若要取得介面名稱,需要進一步的步驟:必須呼叫 SetupDiGetDeviceInterfaceDetail 。 SetupDiGetDeviceInterfaceDetail 會傳回類型 為 SP_DEVICE_INTERFACE_DETAIL_DATA 的結構,其中包含定義 介面的系統物件樹狀結構中的路徑。