다음을 통해 공유


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
라이브러리 Mssachlp.lib

추가 정보

디바이스 열거

IWMDMEnumDevice 인터페이스

IWMDeviceManager2 인터페이스