SetupDiOpenDeviceInfoW 函式 (setupapi.h)
SetupDiOpenDeviceInfo 函式會將裝置實例的裝置資訊元素新增至裝置資訊集,如果裝置資訊集中還沒有裝置資訊集,則會擷取資訊,以識別裝置資訊集中裝置實例的裝置資訊元素。
語法
WINSETUPAPI BOOL SetupDiOpenDeviceInfoW(
[in] HDEVINFO DeviceInfoSet,
[in] PCWSTR DeviceInstanceId,
[in, optional] HWND hwndParent,
[in] DWORD OpenFlags,
[out, optional] PSP_DEVINFO_DATA DeviceInfoData
);
參數
[in] DeviceInfoSet
裝置資訊集 句柄,SetupDiOpenDeviceInfo 針對 deviceInstanceId 所指定的裝置實例,新增裝置資訊元素。
[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
傳回值
SetupDiOpenDeviceInfo 如果成功,則會傳 回 TRUE。 否則,函式會傳回 FALSE,而且可以使用呼叫 getLastError 來擷取記錄的錯誤。
言論
如果此裝置實例已新增至具有相關聯類別的集合,裝置類別必須相同,否則呼叫將會失敗。 在此情況下,GetLastError 的呼叫會傳回ERROR_CLASS_MISMATCH。
如果已成功開啟新的裝置資訊元素,但呼叫端提供的
注意
setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiOpenDeviceInfo 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Microsoft Windows 2000 和更新版本的 Windows 中提供。 |
目標平臺 | 桌面 |
標頭 | setupapi.h (包括 Setupapi.h) |
連結庫 | Setupapi.lib |
API 集 | ext-ms-win-setupapi-classinstallers-l1-1-1 (在 Windows 8.1 中引進) |