SetupDiGetClassDevsW 関数 (setupapi.h)
構文
WINSETUPAPI HDEVINFO SetupDiGetClassDevsW(
[in, optional] const GUID *ClassGuid,
[in, optional] PCWSTR Enumerator,
[in, optional] HWND hwndParent,
[in] DWORD Flags
);
パラメーター
[in, optional] ClassGuid
デバイス セットアップ クラスの GUID または デバイス インターフェイス クラスへのポインター。 このポインターは省略可能であり、NULL
[in, optional] Enumerator
次を指定する NULL で終わる文字列へのポインター。
- プラグ アンド プレイ (PnP) 列挙子の識別子 (ID)。 この ID には、値のグローバル一意識別子 (GUID) またはシンボリック名を指定できます。 たとえば、"PCI" を使用して PCI PnP 値を指定できます。 PnP 値のシンボリック名の他の例としては、"USB"、"PCMCIA"、"SCSI" などがあります。
- PnP デバイス インスタンス ID。 PnP デバイス インスタンス ID を指定する場合は、flags パラメーターでDIGCF_DEVICEINTERFACEを設定する必要があります。
列挙子の 値を設定する方法の詳細については、次の 解説 セクションを参照してください。
[in, optional] hwndParent
デバイス情報セットへのデバイス インスタンスのインストールに関連付けられているユーザー インターフェイスに使用する最上位ウィンドウへのハンドル。 このハンドルは省略可能であり、NULL
[in] Flags
デバイス情報セットに追加されるデバイス情報要素をフィルター処理する制御オプションを指定する DWORD 型の変数。 このパラメーターには、次のフラグの 0 個以上のビットごとの OR を指定できます。 これらのフラグの組み合わせの詳細については、次の 解説 セクションを参照してください。
DIGCF_ALLCLASSES
すべてのデバイス セットアップ クラスまたはすべてのデバイス インターフェイス クラスにインストールされているデバイスの一覧を返します。
DIGCF_DEVICEINTERFACE
指定したデバイス インターフェイス クラスのデバイス インターフェイスをサポートするデバイスを返します。 このフラグは、
DIGCF_DEFAULT
指定されたデバイス インターフェイス クラスに対して、システムの既定のデバイス インターフェイスに関連付けられているデバイスのみを返します (設定されている場合)。
DIGCF_PRESENT
システムに現在存在するデバイスのみを返します。
DIGCF_PROFILE
現在のハードウェア プロファイルの一部であるデバイスのみを返します。
戻り値
操作が成功した場合、
備考
SetupDiGetClassDevsEx
デバイス セットアップ クラスコントロールオプション
次のフィルター オプションを使用して、SetupDiGetClassDevs-
すべてのデバイス セットアップ クラスのデバイスを返すには、DIGCF_ALLCLASSES フラグを設定し、
ClassGuid パラメーターを NULL設定します。 - 特定のデバイス セットアップ クラスに対してのみデバイスを返すには、DIGCF_ALLCLASSESを設定せず、ClassGuid を使用してデバイス セットアップ クラスの GUID を指定します。
- システムに存在するデバイスのみを返すには、DIGCF_PRESENT フラグを設定します。
- 現在のハードウェア プロファイルの一部であるデバイスのみを返すには、DIGCF_PROFILE フラグを設定します。
-
特定の PnP
列挙子 に対してのみデバイスを返すには、Enumerator パラメーターを使用して、列挙子の GUID またはシンボリック名を指定します。 列挙子が NULL 場合、SetupDiGetClassDevs は、すべての PnP 列挙子のデバイスを返します。
デバイス インターフェイス クラスコントロールオプション
次のフィルター オプションを使用して、SetupDiGetClassDevs-
任意のクラスのデバイス インターフェイスをサポートするデバイスを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_ALLCLASSES フラグを設定し、ClassGuid
NULL 設定します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、デバイスがサポートするすべてのデバイス インターフェイスを含むデバイス インターフェイス リストをデバイス情報要素に追加します。 - 指定したクラスのデバイス インターフェイスをサポートするデバイスのみを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、ClassGuid パラメーターを使用して、デバイス インターフェイス クラスのクラス GUID を指定します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、指定されたクラスのデバイス インターフェイスを、そのデバイス情報要素のデバイス インターフェイス リストに追加します。
- システムの既定のインターフェイスをサポートするデバイスのみを返すには、設定されている場合は、指定したデバイス インターフェイス クラスに対してDIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_DEFAULT フラグを設定し、ClassGuid を使用してデバイス インターフェイス クラスのクラス GUID を指定します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、そのデバイス情報要素のデバイス インターフェイス リストにシステムの既定のインターフェイスを追加します。
-
指定されていないデバイス インターフェイス クラスのシステムの既定のインターフェイスをサポートするデバイスを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、DIGCF_ALLCLASSES フラグを設定し、DIGCF_DEFAULT フラグを設定して、ClassGuid
NULLを します。 この関数は、このようなデバイスを表すデバイス情報要素をデバイス情報セットに追加し、そのデバイス情報要素のデバイス インターフェイス リストにシステムの既定のインターフェイスを追加します。
- システムに存在するデバイスのみを返すには、DIGCF_PRESENT フラグを設定します。
- 現在のハードウェア プロファイルの一部であるデバイスのみを返すには、DIGCF_PROFILE フラグを設定します。
-
特定のデバイスのみを返すには、DIGCF_DEVICEINTERFACE フラグを設定し、
Enumerator パラメーターを使用して、デバイスの 可能なすべてのデバイスを含めるには、列挙子デバイス インスタンス ID を指定します。NULLを に設定します。
例
SetupDiGetClassDevs 関数を使用する方法の例を次に示します。
例 1: 現在存在しないデバイスを含む、システム内のすべてのデバイスの一覧を作成します。
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);
例 2: システムに存在するすべてのデバイスの一覧を作成します。
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
Handle = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
Handle = SetupDiGetClassDevs(&GUID_DEVINTERFACE_VOLUME, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
例 5: システムに存在するが、既知の デバイス セットアップ クラス (Windows Vista 以降のバージョンの Windows) に属していないすべてのデバイスの一覧を作成します。
DeviceInfoSet = SetupDiGetClassDevs(
NULL,
NULL,
NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
DeviceIndex = 0;
while (SetupDiEnumDeviceInfo(
DeviceInfoSet,
DeviceIndex,
&DeviceInfoData)) {
DeviceIndex++;
if (!SetupDiGetDeviceProperty(
DeviceInfoSet,
&DeviceInfoData,
&DEVPKEY_Device_Class,
&PropType,
(PBYTE)&DevGuid,
sizeof(GUID),
&Size,
0) || PropType != DEVPROP_TYPE_GUID) {
Error = GetLastError();
if (Error == ERROR_NOT_FOUND) {
\\
\\ This device has an unknown device setup class.
\\
}
}
}
if (DeviceInfoSet) {
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}
手記
setupapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetupDiGetClassDevs を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Microsoft Windows 2000 以降のバージョンの Windows で使用できます。 |
ターゲット プラットフォーム の |
DesktopFor universal, call CM_Get_Device_ID_ListFor universal, call CM_Get_Device_Interface_List |
ヘッダー | setupapi.h (SetupAPI.h を含む) |
ライブラリ | SetupAPI.lib |
DLL | SetupAPI.dll |
API セットの | ext-ms-win-setupapi-classinstallers-l1-1-0 (Windows 8 で導入) |
関連項目
SetupDiCreateDeviceInfoList の
SetupDiDestroyDeviceInfoList の
SetupDiEnumDeviceInterfaces の
SetupDiGetClassDevsEx の