次の方法で共有


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.cbSize を sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) 設定する必要があります。 cbSize メンバーには、データ構造の固定部分のサイズが常に含まれます。末尾の可変長文字列を反映するサイズは含まれません。

[in] DeviceInterfaceDetailDataSize

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

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

[out, optional] RequiredSize

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

[out, optional] DeviceInfoData

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

戻り値

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

備考

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

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Microsoft Windows 2000 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム の デスクトップ
ヘッダー setupapi.h (Setupapi.h を含む)
ライブラリ Setupapi.lib

関連項目

SetupDiEnumDeviceInterfaces の

SetupDiGetClassDevs の