次の方法で共有


SetupDiGetClassDevsExA 関数 (setupapi.h)

SetupDiGetClassDevsEx 関数は、ローカル コンピューターまたはリモート コンピューターの要求されたデバイス情報要素を含む デバイス情報セット へのハンドルを返します。

構文

WINSETUPAPI HDEVINFO SetupDiGetClassDevsExA(
  [in, optional] const GUID *ClassGuid,
  [in, optional] PCSTR      Enumerator,
  [in, optional] HWND       hwndParent,
  [in]           DWORD      Flags,
  [in, optional] HDEVINFO   DeviceInfoSet,
  [in, optional] PCSTR      MachineName,
                 PVOID      Reserved
);

パラメーター

[in, optional] ClassGuid

デバイス セットアップ クラスの GUID または デバイス インターフェイス クラスへのポインター。 このポインターは省略可能であり、NULLできます。 GUID 値を使用してデバイスを選択しない場合は、ClassGuid NULLを に設定します。 ClassGuid使用する方法の詳細については、次の「解説」セクションを参照してください。

[in, optional] Enumerator

次を指定する NULL で終わる文字列へのポインター。

  • プラグ アンド プレイ (PnP) 列挙子の識別子 (ID)。 この ID には、列挙子のグローバル一意識別子 (GUID) またはシンボリック名を指定できます。 たとえば、"PCI" を使用して PCI PnP 列挙子を指定できます。 PnP 列挙子のシンボリック名の他の例には、"USB"、"PCMCIA"、および "SCSI" があります。
  • PnP デバイス インスタンス ID。 PnP デバイス インスタンス ID を指定する場合は、flags パラメーターでDIGCF_DEVICEINTERFACEを設定する必要があります。
このポインターは省略可能であり、NULLできます。 列挙子 値を使用してデバイスを選択しない場合は、列挙子 NULL を に設定します。

列挙子の 値を設定する方法の詳細については、次の 解説 セクションを参照してください。

[in, optional] hwndParent

デバイス情報セットへのデバイス インスタンスのインストールに関連付けられているユーザー インターフェイスに使用する最上位ウィンドウへのハンドル。 このハンドルは省略可能であり、NULLできます。

[in] Flags

デバイス情報セットに追加されるデバイス情報要素をフィルター処理する制御オプションを指定する DWORD 型の変数。 このパラメーターには、次のフラグの 1 つ以上のビットごとの OR を指定できます。 これらのコントロール オプションの組み合わせの詳細については、次の「解説」セクションを参照してください。

DIGCF_ALLCLASSES

指定したデバイス セットアップ クラスまたはデバイス インターフェイス クラスにインストールされているデバイスの一覧を返します。

DIGCF_DEVICEINTERFACE

指定したデバイス インターフェイス クラスのデバイス インターフェイスをサポートするデバイスを返します。 このフラグは、列挙子 パラメーターがデバイス インスタンス ID を指定する場合は、Flags パラメーターで設定する必要があります。

DIGCF_DEFAULT

指定されたデバイス インターフェイス クラスに対して、システムの既定のデバイス インターフェイスに関連付けられているデバイスのみを返します (設定されている場合)。

DIGCF_PRESENT

現在存在するデバイスのみを返します。

DIGCF_PROFILE

現在のハードウェア プロファイルの一部であるデバイスのみを返します。

[in, optional] DeviceInfoSet

SetupDiGetClassDevsEx 要求されたデバイス情報要素を追加する、既存の デバイス情報セットへのハンドル。 このパラメーターは省略可能であり、NULL設定できます。 このパラメーターの使用方法の詳細については、次の 解説 セクションを参照してください。

[in, optional] MachineName

デバイスが存在するリモート コンピューターの名前を含む定数文字列へのポインター。 MachineName の null 値は、デバイスがローカル コンピューターにインストールされていることを指定します。

注意

この機能は削除されたため、この機能を使用してリモート コンピューターにアクセスすることは、Windows 8 および Windows Server 2012 以降ではサポートされていません。

Reserved

内部使用のために予約されています。 このパラメーターは、NULL設定する必要があります。

戻り値

操作が成功した場合、SetupDiGetClassDevsEx は、指定されたパラメーターと一致するすべてのインストール済みデバイスを含む デバイス情報セット へのハンドルを返します。 操作が失敗した場合、関数はINVALID_HANDLE_VALUEを返します。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

SetupDiGetClassDevsEx の呼び出し元は、SetupDiDestroyDeviceInfoList呼び出して、不要になったときに返されたデバイス情報セットを削除する必要があります。

DeviceInfoSet が NULL場合、SetupDiGetClassDevsEx は、取得したデバイス情報要素を含む新しいデバイス情報セットを作成し、新しいデバイス情報セットへのハンドルを返します。 呼び出し元が、ClassGuid パラメーターによって指定されたデバイス セットアップ クラスのデバイスを関数が取得するように要求した場合、関数は、指定されたクラス GUID に設定された新しいデバイス情報のデバイス セットアップ クラスを設定します。

DeviceInfoSet が NULL設定されていない場合、関数は取得したデバイス情報要素を、指定されたハンドルに関連付けられているデバイス情報セットに追加し、指定されたハンドルを返します。 ClassGuid デバイス セットアップ クラスを提供する場合は、指定されたデバイス情報セットのデバイス セットアップ クラスを、指定されたクラス GUID に設定する必要があります。

デバイス セットアップ クラスコントロールオプション

次のフィルター オプションを使用して、SetupDiGetClassDevsEx
がすべてのデバイス セットアップ クラスのデバイスを返すか、指定したデバイス セットアップ クラスに対してのみデバイスを返すかを制御します。
  • すべてのデバイス セットアップ クラスのデバイスを返すには、DIGCF_ALLCLASSES フラグを設定し、ClassGuid パラメーターを NULL設定します。
  • 特定のデバイス セットアップ クラスに対してのみデバイスを返すには、DIGCF_ALLCLASSESを設定せず、ClassGuid を使用してデバイス セットアップ クラスの GUID を指定します。
さらに、次のフィルターオプションを使用して、返されるデバイスをさらに制限できます。
  • システムに存在するデバイスのみを返すには、DIGCF_PRESENT フラグを設定します。
  • 現在のハードウェア プロファイルの一部であるデバイスのみを返すには、DIGCF_PROFILE フラグを設定します。
  • 特定の PnP 列挙子 のデバイスのみを返すには、列挙子 パラメーターを使用して、列挙子の GUID またはシンボリック名を指定します。列挙子 が NULL場合 、SetupDiGetClassDevsEx は、すべての PnP 列挙子のデバイスを返します。

デバイス インターフェイス クラスコントロールオプション

次のフィルター オプションを使用して、SetupDiGetClassDevsEx
、任意のデバイス インターフェイス クラスをサポートするデバイスを返すか、指定したデバイス インターフェイス クラスをサポートするデバイスのみを返すかを制御します。
  • 任意のクラスのデバイス インターフェイスをサポートするデバイスを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_ALLCLASSES フラグを設定し、ClassGuid NULL設定します。 この関数は、デバイス情報セットに、このようなデバイスを表すデバイス情報要素を追加し、デバイス情報要素に、デバイスがサポートするすべてのデバイス インターフェイスを含むデバイス インターフェイス リストを追加します。
  • 指定したクラスのデバイス インターフェイスをサポートするデバイスのみを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、ClassGuid パラメーターを使用して、デバイス インターフェイス クラスのクラス GUID を指定します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、指定したクラスのデバイス インターフェイスを、そのデバイス情報要素のデバイス インターフェイス リストに追加します。
さらに、次のフィルター オプションを使用して、SetupDiGetClassDevsEx
がデバイス インターフェイス クラスのシステムの既定のインターフェイスをサポートするデバイスのみを返す かどうかを制御できます。
  • システムの既定のインターフェイスをサポートするデバイスのみを返すには、設定されている場合は、指定したデバイス インターフェイス クラスに対してDIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_DEFAULT フラグを設定し、ClassGuid を使用してデバイス インターフェイス クラスのクラス GUID を指定します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、そのデバイス情報要素のデバイス インターフェイス リストにシステムの既定のインターフェイスを追加します。
  • 指定されていないデバイス インターフェイス クラスのシステムの既定のインターフェイスをサポートするデバイスを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_ALLCLASSES フラグを設定し、DIGCF_DEFAULT フラグを設定して、ClassGuid NULLを します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、そのデバイス情報要素のデバイス インターフェイス リストにシステムの既定のインターフェイスを追加します。
次のオプションを他のオプションと組み合わせて使用して、返されるデバイスをさらに制限することもできます。
  • システムに存在するデバイスのみを返すには、DIGCF_PRESENT フラグを設定します。
  • 現在のハードウェア プロファイルの一部であるデバイスのみを返すには、DIGCF_PROFILE フラグを設定します。
  • 特定のデバイスのみを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、Enumerator パラメーターを使用して、デバイスデバイス インスタンス ID を指定します。可能なすべてのデバイスを含めるには、列挙子 NULLを に設定します。

デバイス インターフェイス クラスをサポートするデバイス セットアップ クラスのデバイスの取得

インストーラー SetupDiGetClassDevsEx を使用して、指定したデバイス インターフェイス クラスのデバイス インターフェイスをサポートする特定のデバイス セットアップ クラスのデバイスの一覧を取得できます。 たとえば、"マウントされたデバイス" インターフェイス クラスのデバイス インターフェイスをサポートし、"ボリューム" デバイス セットアップ クラスのメンバーであるローカル コンピューター上のすべてのデバイスの一覧を取得するには、インストーラーで次の操作を実行する必要があります。
  1. SetupDiCreateDeviceInfoList 呼び出して、"ボリューム" デバイス セットアップ クラスの空のデバイス情報セットを作成します。 ClassGuid "Volume" デバイス セットアップ クラスのクラス GUID へのポインターに設定し、必要に応じて hwndParent 設定します。 このような呼び出しに応答して、この関数は HDEVINFO 型のハンドルをデバイス情報セットに返します。
  2. 次の設定 SetupDiGetClassDevsEx を呼び出します。
    • ClassGuid を、"マウントされたデバイス" デバイス インターフェイス クラスのクラス GUID へのポインターに設定します。
    • フラグ をDIGCF_DEVICEINTERFACEに設定します。
    • DeviceInfoSet 手順 (1) で取得した HDEVINFO ハンドルに設定します。
    • hwndParent 必要に応じて設定し、残りのパラメーターを NULLします。
この種類の操作では、SetupDiGetClassDevsEx は、デバイスのデバイス セットアップ クラスが指定されたデバイス情報セットと同じであり、そのクラスが指定されたデバイス インターフェイス クラスと同じデバイス インターフェイスをサポートしている場合に、デバイスを返します。

手記

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

必要条件

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

関連項目

デバイス情報セットの

デバイス インスタンス ID

SetupDiCreateDeviceInfoListEx の

SetupDiDestroyDeviceInfoList の

SetupDiEnumDeviceInterfaces の

SetupDiGetClassDevs の