次の方法で共有


インストール済みのデバイスの列挙

レジストリ キーを直接使用してデバイスを列挙しないでください。 レジストリ キーには、システムにインストールされているデバイスを列挙するために必要な情報が含まれていません。 デバイスが実際に存在するかどうか、またはファントム デバイス (接続されていないデバイス) であるかどうかなどのこの情報は、プラグ アンド プレイ (PnP) マネージャーによって保持されます。 PnP マネージャーは、レジストリ情報の追加フィルター処理も実行します。

インストールされているデバイスを安全に列挙するには、次の手順に従います。

  • Configuration Manager 関数の使用:

    1. CM_Get_Device_ID_List を使用して、一意の デバイス インスタンス識別子 (ID) 文字列のリストを取得します。 システムに存在するデバイスの情報のみを取得するには、ulFlags パラメーターに CM_GETIDLIST_FILTER_PRESENT を設定します。

    2. CM_Locate_DevNode で一意のデバイス インスタンス ID を使用して、他の Configuration Manager API で使用するデバイスを表す DEVINST を取得できます。

  • SetupAPI 関数の使用:

    1. SetupDiGetClassDevs を使用して、一連のデバイスの情報を取得します。 システムに存在するデバイスの情報のみを取得するには、Flags パラメーターに DIGCF_PRESENT を設定します。

    2. SetupDiEnumDeviceInfo を使用して、セット内のデバイスを列挙します。

    3. SetupDiEnumDeviceInfo によって返される SP_DEVINFO_DATA を他の SetupApi API で使用するか、SetupDiGetDeviceInstanceId を使用して、デバイスの一意の デバイス インスタンス識別子 (ID) を取得できます。