IMMNotificationClient::OnDefaultDeviceChanged 메서드(mmdeviceapi.h)

OnDefaultDeviceChanged 메서드는 클라이언트에 특정 디바이스 역할에 대한 기본 오디오 엔드포인트 디바이스가 변경되었음을 알 수 있습니다.

구문

HRESULT OnDefaultDeviceChanged(
  [in] EDataFlow flow,
  [in] ERole     role,
  [in] LPCWSTR   pwstrDefaultDeviceId
);

매개 변수

[in] flow

엔드포인트 디바이스의 데이터 흐름 방향입니다. 이 매개 변수는 다음 EDataFlow 열거형 값 중 하나로 설정됩니다.

eRender

eCapture

렌더링 디바이스의 데이터 흐름 방향은 eRender입니다. 캡처 디바이스의 데이터 흐름 방향은 eCapture입니다.

[in] role

오디오 엔드포인트 디바이스의 디바이스 역할 입니다. 이 매개 변수는 다음 ERole 열거형 값 중 하나로 설정됩니다.

eConsole

eMultimedia

eCommunications

[in] pwstrDefaultDeviceId

오디오 엔드포인트 디바이스를 식별하는 엔드포인트 ID 문자열 에 대한 포인터입니다. 이 매개 변수는 엔드포인트 ID를 포함하는 null로 끝나는 와이드 문자열을 가리킵니다. 문자열은 호출 기간 동안 유효한 상태로 유지됩니다. 사용자가 특정 역할에 대한 기본 디바이스를 제거하거나 사용하지 않도록 설정했으며 해당 역할을 가정할 수 있는 다른 디바이스가 없는 경우 pwstrDefaultDeviceNULL입니다.

반환 값

메서드가 성공하면 S_OK가 반환되고, 그렇지 않으면 오류 코드가 반환됩니다.

설명

세 가지 입력 매개 변수는 새 기본 오디오 엔드포인트 디바이스의 데이터 흐름 방향, 디바이스 역할 및 엔드포인트 ID 문자열을 지정합니다.

Windows Vista에서 MMDevice API는 디바이스 역할을 지원하지만 시스템에서 제공하는 사용자 인터페이스 프로그램은 지원하지 않습니다. Windows Vista의 사용자 인터페이스를 사용하면 렌더링할 기본 오디오 디바이스와 캡처할 기본 오디오 디바이스를 선택할 수 있습니다. 사용자가 기본 렌더링 또는 캡처 디바이스를 변경하면 시스템은 세 가지 디바이스 역할(eConsole, eMultimedia 및 eCommunications)을 모두 새 디바이스에 할당합니다. 따라서 사용자가 기본 렌더링 또는 캡처 디바이스를 변경하면 시스템은 클라이언트의 OnDefaultDeviceChanged 메서드를 세 번 호출합니다( 세 가지 디바이스 역할 각각에 대해 한 번).

이후 버전의 Windows에서는 사용자 인터페이스를 통해 사용자가 개별 역할을 다른 디바이스에 할당할 수 있습니다. 이 경우 사용자가 하나 또는 두 개의 디바이스 역할만 새 렌더링 또는 캡처 디바이스로 할당을 변경하는 경우 시스템은 클라이언트의 OnDefaultDeviceChanged 메서드를 한두 번만 호출합니다(즉, 변경된 역할당 한 번의 호출). OnDefaultDeviceChanged 메서드가 역할 변경에 응답하는 방식에 따라 Windows Vista에서 실행되도록 개발된 오디오 애플리케이션의 동작은 이후 버전의 Windows에서 실행될 때 변경될 수 있습니다. 자세한 내용은 Windows Vista의 디바이스 역할을 참조하세요.

OnDefaultDeviceChanged 메서드를 구현하는 코드 예제는 디바이스 이벤트를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 mmdeviceapi.h

참고 항목

IMMNotificationClient 인터페이스