IAudioSessionControl::RegisterAudioSessionNotification 메서드(audiopolicy.h)

RegisterAudioSessionNotification 메서드는 스트림 상태의 변경 내용을 포함하여 세션 이벤트의 알림을 수신하도록 클라이언트를 등록합니다.

구문

HRESULT RegisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

매개 변수

[in] NewNotifications

클라이언트 구현 IAudioSessionEvents 인터페이스에 대한 포인터입니다 . 메서드가 성공하면 클라이언트의 IAudioSessionEvents 인터페이스에서 AddRef 메서드를 호출합니다.

반환 값

메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.

반환 코드 설명
E_POINTER
NewNotifications 매개 변수는 NULL입니다.
AUDCLNT_E_DEVICE_INVALIDATED
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다.
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 오디오 서비스가 실행되고 있지 않습니다.

설명

이 메서드는 클라이언트 구현 IAudioSessionEvents 인터페이스를 세션 관리자에 전달합니다. 이 메서드를 성공적으로 호출한 후 세션 관리자는 IAudioSessionEvents 인터페이스의 메서드를 호출하여 클라이언트에 다양한 세션 이벤트를 알립니다. 클라이언트는 이러한 메서드를 통해 다음 세션 관련 이벤트에 대한 알림을 받습니다.

  • 표시 이름 변경 내용
  • 볼륨 수준 변경
  • 세션 상태 변경(활성으로 비활성 또는 활성에서 비활성으로)
  • 매개 변수 변경 내용 그룹화
  • 세션에서 클라이언트 연결 끊기(사용자가 오디오 엔드포인트 디바이스를 제거하거나, 세션 관리자를 종료하거나, 스트림 형식을 변경하여 발생)
알림이 더 이상 필요하지 않은 경우 클라이언트는 IAudioSessionControl::UnregisterAudioSessionNotification 메서드를 호출하여 알림을 종료할 수 있습니다.

클라이언트가 IAudioSessionEvents 인터페이스에 대한 최종 참조를 해제하기 전에 UnregisterAudioSessionNotification 을 호출하여 인터페이스의 등록을 취소해야 합니다. 그렇지 않으면 애플리케이션이 IAudioSessionEventsIAudioSessionControl 개체에서 보유한 리소스를 누수합니다. RegisterAudioSessionNotification은 클라이언트의 IAudioSessionEvents::AddRef 메서드를 호출하고 UnregisterAudioSessionNotificationIAudioSessionEvents::Release 메서드를 호출합니다. UnregisterAudioSessionNotification을 호출하기 전에 클라이언트가 IAudioSessionEvents 인터페이스에 대한 참조를 해제하여 오류가 발생하는 경우 세션 관리자는 IAudioSessionEvents 인터페이스에 대한 참조를 해제하지 않습니다. 예를 들어 잘못 디자인된 IAudioSessionEvents 구현은 IAudioSessionEvents 개체의 소멸자에서 UnregisterAudioSessionNotification을 호출할 수 있습니다. 이 경우 세션 관리자가 IAudioSessionEvents 인터페이스에 대한 참조를 해제할 때까지 클라이언트는 UnregisterAudioSessionNotification을 호출하지 않으며, 클라이언트가 UnregisterAudioSessionNotification을 호출할 때까지 세션 관리자는 IAudioSessionEvents 인터페이스에 대한 참조를 해제하지 않습니다. AddRefRelease 메서드에 대한 자세한 내용은 Windows SDK 설명서의 IUnknown 인터페이스에 대한 설명을 참조하세요.

또한 클라이언트는 IAudioSessionControl 및 IAudioSessionManager 개체에 대한 모든 참조를 해제하기 전에 UnregisterAudioSessionNotification을 호출해야 합니다. 클라이언트가 이러한 두 개체 중 하나 이상에 대한 참조를 유지하지 않는 한 세션 관리자는 등록 정보를 보유하기 위해 할당된 스토리지를 누수합니다. 알림 인터페이스를 등록한 후 클라이언트는 이러한 두 개체 중 하나 이상이 존재하는 한 계속 알림을 받습니다.

RegisterAudioSessionNotification 메서드를 호출하는 코드 예제는 레거시 오디오 애플리케이션에 대한 오디오 이벤트를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 audiopolicy.h

추가 정보

IAudioSessionControl 인터페이스

IAudioSessionControl::UnregisterAudioSessionNotification

IAudioSessionEvents 인터페이스

IAudioSessionManager