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 で終わる文字列へのポインター。 この名前は、通常、PnP 通知構造体で受信されるか、 SetupDiEnumDeviceInterfaces とその関連関数の以前の呼び出しによって取得される Win32 デバイス パスです。

[in] OpenFlags

デバイス インターフェイス要素を開く方法を決定するフラグ。 有効なフラグは次のとおりです。

DIODI_NO_ADD

指定したデバイス情報セットにその要素がまだ存在しない場合、基になる デバイスのデバイス情報要素が作成されないことを指定します。 詳細については、次の 「解説 」セクションを参照してください。

[out, optional] DeviceInterfaceData

要求されたインターフェイス データを受信する呼び出し元初期化 SP_DEVICE_INTERFACE_DATA 構造体へのポインター。 このポインターは省略可能であり、 NULL にすることができます。 バッファーが指定されている場合、呼び出し元は、SetupDiOpenDeviceInterface を呼び出す前に、構造体の cbSize メンバーを sizeof(SP_DEVICE_INTERFACE_DATA) に設定する必要があります。 詳細については、次の 「解説 」セクションを参照してください。

戻り値

関数がエラーなしで完了した場合、SetupDiOpenDeviceInterfaceTRUE を返します。 関数がエラーで完了した場合は FALSE 返され、 GetLastError を呼び出すことでエラーのエラー コードを取得できます。

注釈

インターフェイスのデバイス インターフェイス要素が 既に DeviceInfoSet に存在する場合は、 SetupDiOpenDeviceInterface によってフラグが更新されます。 したがって、この関数を使用して、デバイス インターフェイスのフラグを更新できます。 たとえば、インターフェイスが最初に開かれたときに非アクティブであったが、その後アクティブになった可能性があります。 基になるデバイスのデバイス情報要素が DeviceInfoSet にまだ存在しない場合、この関数はそれを作成して 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 プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetupDiOpenDeviceInterface を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Microsoft Windows 2000 以降のバージョンの Windows で使用できます。
対象プラットフォーム デスクトップ
Header setupapi.h (Setupapi.h を含む)
Library Setupapi.lib

こちらもご覧ください

SetupDiDeleteDeviceInterfaceData

SetupDiEnumDeviceInterfaces