SetupDiOpenDeviceInterfaceW 函式 (setupapi.h)
SetupDiOpenDeviceInterface 函式會擷取裝置介面的相關信息,並將介面新增至本機系統或遠端系統所設定的指定裝置資訊。
語法
WINSETUPAPI BOOL SetupDiOpenDeviceInterfaceW(
[in] HDEVINFO DeviceInfoSet,
[in] PCWSTR DevicePath,
[in] DWORD OpenFlags,
[out, optional] PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData
);
參數
[in] DeviceInfoSet
裝置資訊集 指標,其中包含或將包含的裝置信息元素,表示支援開啟介面的裝置。
[in] DevicePath
NULL 終止字串的指標,提供要開啟之裝置介面的名稱。 此名稱是 Win32 裝置路徑,通常是在 PnP 通知結構中接收,或由先前呼叫 SetupDiEnumDeviceInterfaces 及其相關功能取得。
[in] OpenFlags
旗標,決定如何開啟裝置介面專案。 唯一有效的旗標如下:
DIODI_NO_ADD
指定如果指定的 裝置資訊集中尚未存在該專案,將不會建立基礎裝置的裝置資訊元素。 如需詳細資訊,請參閱下列
[out, optional] DeviceInterfaceData
呼叫端初始化 SP_DEVICE_INTERFACE_DATA 結構的指標,這個結構會接收要求的介面數據。 此指標是選擇性的,而且可以 NULL。 如果提供緩衝區,呼叫端必須先將 結構的 cbSize 成員設定為 sizeof(SP_DEVICE_INTERFACE_DATA),再呼叫 SetupDiOpenDeviceInterface。 如需詳細資訊,請參閱下列
傳回值
SetupDiOpenDeviceInterface 會在函式未發生錯誤的情況下傳回 true true。 如果函式以錯誤完成,它會傳回
言論
如果介面的裝置介面元素已存在於 deviceInfoSet
如果函式成功開啟新的裝置介面,但呼叫端未在 deviceInterfaceData 參數中提供有效的結構,則函式會傳回 FALSE,且 後續呼叫 getLastError 會傳回ERROR_INVALID_USER_BUFFER。 不過,在此情況下,SetupDiOpenDeviceInterface 會將要求的介面新增至裝置資訊集。
如果成功開啟新的裝置介面,但呼叫端提供的 DeviceInterfaceData 緩衝區無效,則此函式會傳回 FALSE,GetLastError 傳回ERROR_INVALID_USER_BUFFER。 呼叫端的緩衝區錯誤不會防止介面開啟。
如果為 OpenFlags 參數指定DIODI_NO_ADD旗標,而且基礎裝置的裝置資訊元素尚未存在於指定的 裝置資訊集中,則此函式會傳回 FALSE,GetLastError 傳回ERROR_NO_SUCH_DEVICE_INTERFACE。
當應用程式使用 SetupDiOpenDeviceInterface撷取的資訊完成時, 應用程式必須呼叫 SetupDiDeleteDeviceInterfaceData。
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK 屬性可以當做 SetupDiOpenDeviceInterface 函式的 DevicePath 自變數值傳入。
注意
setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiOpenDeviceInterface 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Microsoft Windows 2000 和更新版本的 Windows 中提供。 |
目標平臺 | 桌面 |
標頭 | setupapi.h (包括 Setupapi.h) |
連結庫 | Setupapi.lib |