SetupDiOpenDeviceInterfaceA 関数 (setupapi.h)

SetupDiOpenDeviceInterface 関数は、デバイス インターフェイスに関する情報を取得し、ローカル システムまたはリモート システムの指定されたデバイス情報セットにインターフェイスを追加します。

構文

WINSETUPAPI BOOL SetupDiOpenDeviceInterfaceA(
  [in]            HDEVINFO                  DeviceInfoSet,
  [in]            PCSTR                     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 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください

SetupDiDeleteDeviceInterfaceData

SetupDiEnumDeviceInterfaces