共用方式為


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。 如果函式以錯誤完成,它會傳回 FALSE,而且呼叫 getLastError即可擷 取失敗的錯誤碼。

言論

如果介面的裝置介面元素已存在於 deviceInfoSet中,SetupDiOpenDeviceInterface 更新旗標。 因此,此函式可用來更新裝置介面的旗標。 例如,介面在第一次開啟時可能處於非使用中狀態,但隨後會變成作用中。 如果基礎裝置的裝置資訊元素尚未存在於 deviceInfoSet中,則此函式會建立一個 ,並將它新增至 deviceInfoSet

如果函式成功開啟新的裝置介面,但呼叫端未在 deviceInterfaceData 參數中提供有效的結構,則函式會傳回 FALSE,且 後續呼叫 getLastError 會傳回ERROR_INVALID_USER_BUFFER。 不過,在此情況下,SetupDiOpenDeviceInterface 會將要求的介面新增至裝置資訊集。

如果成功開啟新的裝置介面,但呼叫端提供的 DeviceInterfaceData 緩衝區無效,則此函式會傳回 FALSEGetLastError 傳回ERROR_INVALID_USER_BUFFER。 呼叫端的緩衝區錯誤不會防止介面開啟。

如果為 OpenFlags 參數指定DIODI_NO_ADD旗標,而且基礎裝置的裝置資訊元素尚未存在於指定的 裝置資訊集中,則此函式會傳回 FALSEGetLastError 傳回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

另請參閱

SetupDiDeleteDeviceInterfaceData

SetupDiEnumDeviceInterfaces