次の方法で共有


IWMDeviceManager2::EnumDevices2 メソッド (mswmdm.h)

EnumDevices2 メソッドは、コンピューターに接続されているポータブル デバイスを列挙するために使用される列挙インターフェイスを取得します。

Microsoft では、アプリケーションで IWMDeviceManager::EnumDevices の代わりに EnumDevices2 メソッドを使用することを強くお勧めします。

構文

HRESULT EnumDevices2(
  [out] IWMDMEnumDevice **ppEnumDevice
);

パラメーター

[out] ppEnumDevice

IWMDMEnumDevice インターフェイスへのポインターへのポインター。 呼び出し元は、取得したインターフェイスで Release を呼び出す役割を担います。

戻り値

このメソッドは HRESULT を返します。 Windows Media デバイス マネージャーのすべてのインターフェイス メソッドは、次のいずれかのエラー コード クラスを返すことができます。

  • 標準 COM エラー コード
  • HRESULT 値に変換された Windows エラー コード
  • Windows Media デバイス マネージャー エラー コード
考えられるエラー コードの詳細な一覧については、「 エラー コード」を参照してください。

注釈

このメソッドは、プラグ アンド プレイ (PnP) システムを利用して列挙子を返し、列挙の高速化とメモリ使用量の削減を実現します。 PnP 苦情サービス プロバイダーの場合は、現在コンピューターに接続されているデバイスを持つサービス プロバイダーのみをメモリに読み込み、それらのサービス プロバイダーのみにデバイス オブジェクトの作成を要求します。

このメソッドは、基になるオブジェクトが最初に作成されたときに接続されているデバイスのスナップショットを返します。 デバイス リストが最新であることを確認するには、このメソッドを呼び出す前に Reinitialize を呼び出します。

次の C++ コードは、すべてのデバイスをループ処理し、それぞれの表示名を取得します。


// Enumerate through the devices using the faster EnumDevices2 Plug-and-Play method.
// IWMDevMgr2 is a global IWMDeviceManager2 pointer.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr == S_OK)
{
    // Length of all the strings we'll send in. 
    const UINT MAX_CHARS = 100;
    WCHAR name[MAX_CHARS];

    // Enumerate through devices using a dummy loop.
    while(TRUE)
    {
        // Get a device handle.
        IWMDMDevice* pDevice;
        ULONG ulFetched = 0;
        hr = pEnumDevice->Next(1, &pDevice, &ulFetched);
        CComQIPtr<IWMDMDevice2> pDevice2(pDevice);

        if (hr != S_OK || ulFetched != 1)
        {
            break;
        }
        ZeroMemory(name, MAX_CHARS);
        hr = pDevice2->GetName(name, MAX_CHARS);
    }
}

要件

要件
対象プラットフォーム Windows
ヘッダー mswmdm.h
Library Mssachlp.lib

こちらもご覧ください

デバイスの列挙

IWMDMEnumDevice インターフェイス

IWMDeviceManager2 インターフェイス