IMMDeviceEnumerator::GetDefaultAudioEndpoint 메서드(mmdeviceapi.h)
GetDefaultAudioEndpoint 메서드는 지정된 데이터 흐름 방향 및 역할에 대한 기본 오디오 엔드포인트를 검색합니다.
구문
HRESULT GetDefaultAudioEndpoint(
[in] EDataFlow dataFlow,
[in] ERole role,
[out] IMMDevice **ppEndpoint
);
매개 변수
[in] dataFlow
엔드포인트 디바이스의 데이터 흐름 방향입니다. 호출자는 이 매개 변수를 다음 두 EDataFlow 열거형 값 중 하나로 설정해야 합니다.
eRender
eCapture
렌더링 디바이스의 데이터 흐름 방향은 eRender입니다. 캡처 디바이스의 데이터 흐름 방향은 eCapture입니다.
[in] role
엔드포인트 디바이스의 역할입니다. 호출자는 이 매개 변수를 다음 ERole 열거형 값 중 하나로 설정해야 합니다.
eConsole
eMultimedia
eCommunications
자세한 내용은 설명 부분을 참조하세요.
[out] ppEndpoint
메서드가 기본 오디오 엔드포인트 디바이스에 대한 엔드포인트 개체의 IMMDevice 인터페이스 주소를 쓰는 포인터 변수에 대한 포인터입니다. 이 메서드를 통해 호출자는 인터페이스에 대해 계산된 참조를 가져옵니다. 호출자는 인터페이스의 Release 메서드를 호출하여 더 이상 필요하지 않은 경우 인터페이스를 해제 할 책임이 있습니다. GetDefaultAudioEndpoint 호출이 실패하면 *ppDevice는 NULL입니다.
반환 값
메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.
반환 코드 | 설명 |
---|---|
|
매개 변수 ppDevice 는 NULL입니다. |
|
매개 변수 dataFlow 또는 역할이 범위를 벗어났습니다. |
|
사용할 수 있는 디바이스가 없습니다. |
|
메모리가 부족합니다. |
설명
참고
Windows Vista에서 MMDevice API는 디바이스 역할을 지원하지만 시스템에서 제공하는 사용자 인터페이스 프로그램은 지원하지 않습니다. Windows Vista의 사용자 인터페이스를 사용하면 렌더링할 기본 오디오 디바이스와 캡처할 기본 오디오 디바이스를 선택할 수 있습니다. 사용자가 기본 렌더링 또는 캡처 디바이스를 변경하면 시스템은 세 가지 디바이스 역할(eConsole, eMultimedia 및 eCommunications)을 모두 해당 디바이스에 할당합니다. 따라서 GetDefaultAudioEndpoint 는 역할 매개 변수로 표시되는 역할에 관계없이 항상 기본 렌더링 또는 캡처 디바이스를 선택합니다. 이후 버전의 Windows에서는 사용자 인터페이스를 통해 사용자가 개별 역할을 다른 디바이스에 할당할 수 있습니다. 이 경우 GetDefaultAudioEndpoint 에서 렌더링 또는 캡처 디바이스를 선택하는 것은 역할 매개 변수에 따라 달라질 수 있습니다. 따라서 Windows Vista에서 실행되도록 개발된 오디오 애플리케이션의 동작은 향후 버전의 Windows에서 실행될 때 변경될 수 있습니다. 자세한 내용은 Windows Vista의 디바이스 역할을 참조하세요.
이 메서드는 지정된 데이터 흐름 방향(렌더링 또는 캡처) 및 역할에 대한 기본 엔드포인트 디바이스를 검색합니다. 예를 들어 클라이언트는 다음 호출을 수행하여 기본 콘솔 재생 디바이스를 가져올 수 있습니다.
hr = pDevEnum->GetDefaultAudioEndpoint(
eRender, eConsole, &pDeviceOut);
앞의 코드 조각에서 변수 hr 은 HRESULT 형식이고 pDevEnum 은 IMMDeviceEnumerator 인터페이스에 대한 포인터이고 pDeviceOut 은 IMMDevice 인터페이스에 대한 포인터입니다.
Windows 시스템에는 데스크톱 스피커, 고화질 헤드폰, 데스크톱 마이크, 스피커와 마이크가 있는 헤드셋, 고화질 멀티채널 스피커와 같은 오디오 엔드포인트 디바이스의 일부 조합이 포함될 수 있습니다. 사용자는 디바이스에 적절한 역할을 할당할 수 있습니다. 예를 들어 음성 통신 스트림을 관리하는 애플리케이션은 GetDefaultAudioEndpoint 를 호출하여 지정된 렌더링을 식별하고 해당 역할에 대한 디바이스를 캡처할 수 있습니다.
단일 렌더링 또는 캡처 디바이스만 사용할 수 있는 경우 시스템은 항상 세 가지 렌더링 또는 캡처 역할을 모두 해당 디바이스에 할당합니다. 메서드가 지정된 역할에 대한 렌더링 또는 캡처 디바이스를 찾지 못하는 경우 이는 렌더링 또는 캡처 디바이스를 전혀 사용할 수 없음을 의미합니다. 사용할 수 있는 디바이스가 없는 경우 메서드는 *ppEndpoint = NULL 을 설정하고 ERROR_NOT_FOUND 반환합니다.
GetDefaultAudioEndpoint 메서드를 호출하는 코드 예제는 다음 topics 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | mmdeviceapi.h |