SetupDiOpenDeviceInfoA 函式 (setupapi.h)

如果裝置資訊集中還沒有裝置資訊集, SetupDiOpenDeviceInfo 函式會將裝置實例的裝置資訊元素新增至裝置資訊集,並擷取資訊,以識別裝置資訊集中裝置實例的裝置資訊元素。

語法

WINSETUPAPI BOOL SetupDiOpenDeviceInfoA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PCSTR            DeviceInstanceId,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            OpenFlags,
  [out, optional] PSP_DEVINFO_DATA DeviceInfoData
);

參數

[in] DeviceInfoSet

如果 DeviceInstanceId 指定的裝置實例尚未存在,則為 SetupDiOpenDeviceInfo 所設定裝置資訊的句柄。

[in] DeviceInstanceId

NULL 終止字串的指標,提供裝置 (的裝置實例標識碼,例如“Root*PNP0500\0000”) 。 如果 DeviceInstanceIdNULL 或參考長度為零的字串, 則 SetupDiOpenDeviceInfo 會在裝置樹狀目錄中的根裝置上新增裝置資訊元素至提供的裝置資訊集。

[in, optional] hwndParent

最上層視窗的句柄,用於與安裝裝置相關的任何使用者介面。

[in] OpenFlags

DWORD 類型的變數,可控制如何開啟裝置信息專案。 此參數的值可以是下列其中一或多個:

DIOD_CANCEL_REMOVE

如果已指定此旗標,且裝置已標示為擱置移除,則操作系統會取消擱置移除。

DIOD_INHERIT_CLASSDRVS

如果指定這個旗標,產生的裝置資訊元素會繼承與裝置資訊集相關聯的類別驅動程序清單。 此外,如果裝置資訊集有選取的驅動程式,則會針對新的裝置資訊元素選取相同的驅動程式。

如果裝置資訊專案已經存在,則會將其類別驅動程式清單取代為繼承的清單。

[out, optional] DeviceInfoData

呼叫端提供的 SP_DEVINFO_DATA 結構的指標,可接收 DeviceInstanceId 所指定之裝置實例之裝置資訊專案的相關信息。 呼叫端必須將 cbSize 設定為 sizeof (SP_DEVINFO_DATA) 。 此參數是選擇性的,可以是 NULL

傳回值

SetupDiOpenDeviceInfo 如果成功,則會傳回 TRUE 。 否則,函式會傳回 FALSE ,而且可以透過呼叫 GetLastError 來擷取記錄的錯誤。

備註

如果將此裝置實例新增至具有相關聯類別的集合,則裝置類別必須相同,否則呼叫將會失敗。 在此情況下, 對 GetLastError 的呼叫會傳回ERROR_CLASS_MISMATCH。

如果成功開啟新的裝置資訊元素,但呼叫端提供的 DeviceInfoData 緩衝區無效,此函式會傳回 FALSE。 在此情況下, 對 GetLastError 的呼叫會傳回ERROR_INVALID_USER_BUFFER。 不過,裝置資訊元素仍然會新增為集合的新成員。

注意

setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiOpenDeviceInfo 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 可在 Microsoft Windows 2000 和更新版本的 Windows 中使用。
目標平台 桌面
標頭 setupapi.h (包括 Setupapi.h)
程式庫 Setupapi.lib

另請參閱

SP_DEVINFO_DATA

SetupDiCreateDeviceInfo

SetupDiDeleteDeviceInfo

SetupDiEnumDeviceInfo