インストール済みのデバイス インターフェイスの列挙
レジストリ キーに直接アクセスして、システム内のデバイス インターフェイスを列挙しないでください。 他のレジストリ キーと同様に、キーの場所、名前、形式は、Windows のバージョンによって異なる場合があります。
デバイス インターフェイスを安全に列挙するには、次のガイドラインを使用します。
ユーザー モード アプリケーションは、次の手順に従う必要があります。
Configuration Manager 関数の使用:
CM_Get_Device_Interface_List を使用して、指定した InterfaceClassGuid 内のデバイス インターフェイスの一覧を取得します。 必要に応じて、pDeviceID パラメーターを特定のデバイス インスタンス識別子に設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみに一覧を制限できます。
システムに存在する (有効な) デバイス インターフェイスのみを含めるには、ulFlags パラメーターに CM_GET_DEVICE_INTERFACE_LIST_PRESENT フラグを設定します。
SetupApi 関数の使用:
SetupDiGetClassDevs または SetupDiGetClassDevsEx を Flags パラメーターに設定された DIGCF_DEVICEINTERFACE フラグと共に使用して、指定したデバイス インターフェイス クラスのデバイス インターフェイスを取得します。 必要に応じて、Enumerator パラメーターを、特定のデバイス インスタンス識別子に設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみに一覧を制限できます。
システムに存在する (有効な) デバイス インターフェイスのみを含めるには、Flags パラメーターに DIGCF_PRESENT フラグを設定します。
SetupDiEnumDeviceInterfaces を使用して、上記の呼び出しによって返されるインターフェイスを列挙します。
カーネル モード ドライバーは、IoGetDeviceInterfaces を使用して、指定した InterfaceClassGuid 内のデバイス インターフェイスの一覧を取得する必要があります。 必要に応じて、PhysicalDeviceObject パラメーターを設定することで、特定のデバイスによって公開されるデバイス インターフェイスのみにリストを制限できます。