SetupDiGetDeviceInterfaceDetailA 関数 (setupapi.h)

SetupDiGetDeviceInterfaceDetail 関数は、デバイス インターフェイスに関する詳細を返します。

構文

WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailA(
  [in]            HDEVINFO                           DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA          DeviceInterfaceData,
  [out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,
  [in]            DWORD                              DeviceInterfaceDetailDataSize,
  [out, optional] PDWORD                             RequiredSize,
  [out, optional] PSP_DEVINFO_DATA                   DeviceInfoData
);

パラメーター

[in] DeviceInfoSet

詳細を取得するインターフェイスを含む デバイス情報セット へのポインター。 このハンドルは通常、 SetupDiGetClassDevs によって返されます。

[in] DeviceInterfaceData

詳細を取得する DeviceInfoSet のインターフェイスを指定するSP_DEVICE_INTERFACE_DATA構造体へのポインター。 この型のポインターは、通常、 SetupDiEnumDeviceInterfaces によって返されます。

[out, optional] DeviceInterfaceDetailData

指定したインターフェイスに関する情報を受け取る SP_DEVICE_INTERFACE_DETAIL_DATA 構造体へのポインター。 このパラメーターは省略可能であり、 NULL にすることができますDeviceInterfaceDetailSize が 0 の場合、このパラメーターは NULL である必要があります。 このパラメーターを指定した場合、呼び出し元は、この関数を呼び出す前に DeviceInterfaceDetailData.cbSizesizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) に設定する必要があります。 cbSize メンバーには、データ構造の固定部分のサイズが常に含まれます。末尾の可変長文字列を反映するサイズではありません。

[in] DeviceInterfaceDetailDataSize

DeviceInterfaceDetailData バッファーのサイズ。 構造体の固定部分を格納するには、少なくともバッファー (offsetof(SP_DEVICE_INTERFACE_DETAIL_DATA、 DevicePath) + sizeof(TCHAR)) バイトを指定し、空のMULTI_SZ文字列を終了するには 1 つの NULL を 指定する必要があります。

DeviceInterfaceDetailDataNULL の場合、このパラメーターは 0 である必要があります。

[out, optional] RequiredSize

DeviceInterfaceDetailData バッファーの必要なサイズを受け取る DWORD 型の変数へのポインター。 このサイズには、構造体の固定部分のサイズと、可変長デバイス パス文字列に必要なバイト数が含まれます。 このパラメーターは省略可能であり、 NULL にすることができます

[out, optional] DeviceInfoData

要求されたインターフェイスをサポートするデバイスに関する情報を受け取るバッファーへのポインター。 呼び出し元は、DeviceInfoData.cbSizesizeof(SP_DEVINFO_DATA) に設定する必要があります。 このパラメーターは省略可能であり、 NULL にすることができます

戻り値

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

解説

この関数を使用してインターフェイスの詳細を取得するには、通常、次の 2 つの手順を実行します。

  1. 必要なバッファー サイズを取得します。 NULLDeviceInterfaceDetailData ポインター、DeviceInterfaceDetailDataSize が 0、有効な RequiredSize 変数を使用して SetupDiGetDeviceInterfaceDetail を呼び出します。 このような呼び出しに応答して、この関数は RequiredSize で必要なバッファー サイズを返し、 GetLastError がERROR_INSUFFICIENT_BUFFERを返して失敗します。
  2. 適切なサイズのバッファーを割り当て、関数をもう一度呼び出してインターフェイスの詳細を取得します。
この関数によって返されるインターフェイスの詳細は、 CreateFile などの Win32 関数に渡すことができるデバイス パスで構成されます。 デバイス パスのシンボリック名の解析を試みないでください。 デバイス パスは、システムの起動時に再利用できます。

SetupDiGetDeviceInterfaceDetail を使用すると、 DeviceInfoData のみを取得できます。 インターフェイスが存在するが DeviceInterfaceDetailDataNULL の場合、この関数は失敗し、 GetLastError はERROR_INSUFFICIENT_BUFFERを返し、 DeviceInfoData 構造体にはインターフェイスを公開するデバイスに関する情報が入力されます。

注意

setupapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetupDiGetDeviceInterfaceDetail を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

関連項目

SetupDiEnumDeviceInterfaces

SetupDiGetClassDevs