インストールされているデバイス インターフェイスの列挙

レジストリ キーに直接アクセスして、システム内のデバイス インターフェイスを列挙しないでください。 他のレジストリ キーと同様に、キーの場所、名前、または形式は、Windows の異なるバージョン間で変更される可能性があります。

デバイス インターフェイスを安全に列挙するには、次のガイドラインを使用します。

ユーザー モード アプリケーションは、次の手順に従う必要があります。

  • 構成マネージャーの機能を使用する:

    CM_Get_Device_Interface_Listを使用して、指定した InterfaceClassGuid に対応するデバイス インターフェイスの一覧を取得します。 必要に応じて、 pDeviceID パラメーターを特定のデバイス インスタンス識別子に設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみにリストを制限できます。

    システムに存在する (有効な) デバイス インターフェイスのみを含めるには、ulFlags パラメーターに CM_GET_DEVICE_INTERFACE_LIST_PRESENT フラグを設定します。

  • SetupApi 関数の使用:

    1. 指定したデバイス インターフェイス クラスのデバイス インターフェイスを取得するには、FlagsパラメーターにDIGCF_DEVICEINTERFACE フラグを設定して SetupDiGetClassDevs または SetupDiGetClassDevsEx を使用します。 必要に応じて、Enumerator パラメーターを特定のデバイス インスタンス識別子に設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみにリストを制限できます。

      システムに存在する (有効な) デバイス インターフェイスのみを含めるには、DIGCF_PRESENT フラグを Flags パラメーターに設定します。

    2. SetupDiEnumDeviceInterfaces を使用して、上記の呼び出しによって返されるインターフェイスを列挙します。

カーネル モード ドライバーでは、IoGetDeviceInterfaces を使用して、指定した InterfaceClassGuid のデバイス インターフェイスの一覧を取得する必要があります。 必要に応じて、 PhysicalDeviceObject パラメーターを設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみにリストを制限できます。