IAudioSessionManager2 인터페이스(audiopolicy.h)

IAudioSessionManager2 인터페이스를 사용하면 애플리케이션이 오디오 디바이스에 대한 서브믹스를 관리할 수 있습니다.

IAudioSessionManager2 인터페이스에 대한 참조를 얻으려면 애플리케이션이 다음 단계에 따라 오디오 디바이스에서 활성화해야 합니다.

  1. IMMDevice 인터페이스 페이지에 설명된 기술 중 하나를 사용하여 오디오 엔드포인트 디바이스에 대한 IMMDevice 인터페이스에 대한 참조를 가져옵니다.
  2. 매개 변수 iid가 IID_IAudioSessionManager2 설정된 IMMDevice::Activate 메서드를 호출합니다.

애플리케이션이 instance IAudioSessionManager2 인터페이스를 해제하려는 경우 애플리케이션은 인터페이스의 Release 메서드를 호출해야 합니다.

이 인터페이스를 사용하는 애플리케이션 스레드는 COM에 대해 초기화되어야 합니다. COM 초기화에 대한 자세한 내용은 Windows SDK 설명서의 CoInitializeEx 함수 설명을 참조하세요.

상속

IAudioSessionManager2 인터페이스는 IAudioSessionManager에서 상속됩니다. IAudioSessionManager2 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IAudioSessionManager2 인터페이스에는 이러한 메서드가 있습니다.

 
IAudioSessionManager2::GetSessionEnumerator

GetSessionEnumerator 메서드는 오디오 세션 열거자 개체에 대한 포인터를 가져옵니다.
IAudioSessionManager2::RegisterDuckNotification

RegisterDuckNotification 메서드는 더킹 알림을 수신하기 위해 애플리케이션을 세션 관리자에 등록합니다.
IAudioSessionManager2::RegisterSessionNotification

RegisterSessionNotification 메서드는 세션을 만들 때 알림을 받을 애플리케이션을 등록합니다.
IAudioSessionManager2::UnregisterDuckNotification

UnregisterDuckNotification 메서드는 알림을 받기 위해 애플리케이션에서 이전 등록을 삭제합니다.
IAudioSessionManager2::UnregisterSessionNotification

UnregisterSessionNotification 메서드는 세션을 만들 때 알림을 받기 위해 등록을 삭제합니다.

설명

애플리케이션은 이 인터페이스를 사용하여 다음 작업을 수행할 수 있습니다.

  • 등록하여 더킹 알림을 받습니다.
  • 등록하여 세션을 만들 때 알림을 받습니다.
  • 인터페이스 포인터를 가져오는 데 사용된 오디오 디바이스의 세션을 열거합니다.

이 인터페이스는 Windows 7의 새로운 기능인 스트림 감쇠 또는 더킹에 대한 사용자 지정 구현을 지원합니다. 미디어 스트림을 재생하는 애플리케이션은 기본 통신 디바이스에서 새 통신 스트림을 열 때 다르게 동작할 수 있습니다. 예를 들어 새 통신 스트림이 열려 있는 동안 원래 미디어 스트림을 일시 중지할 수 있습니다. 이 기능에 대한 자세한 내용은 통신 디바이스 사용을 참조하세요.

미디어 스트림을 관리하고 사용자 지정 더킹 구현을 제공하려는 애플리케이션은 세션 이벤트가 발생할 때 알림을 수신하도록 등록해야 합니다. 스트림 감쇠의 경우 기본 통신 디바이스에서 통신 스트림을 열거나 닫을 때 시스템에서 세션 이벤트가 발생합니다. 자세한 내용은 사용자 지정 더킹 동작 제공을 참조하세요.

예제

다음 예제 코드에서는 오디오 디바이스의 IAudioSessionManager2 인터페이스에 대한 참조를 가져오는 방법을 보여 줍니다.

HRESULT CreateSessionManager(IAudioSessionManager2** ppSessionManager)
{
 
    HRESULT hr = S_OK;
    
    IMMDevice* pDevice = NULL;
    IMMDeviceEnumerator* pEnumerator = NULL;
    IAudioSessionManager2* pSessionManager = NULL;


    // Create the device enumerator.
    CHECK_HR( hr = CoCreateInstance(
        __uuidof(MMDeviceEnumerator), 
        NULL, CLSCTX_ALL, 
        __uuidof(IMMDeviceEnumerator), 
        (void**)&pEnumerator));

    // Get the default audio device.
    CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
                    eRender, eConsole, &pDevice));

    // Get the session manager.
    CHECK_HR( hr = pDevice->Activate(
        __uuidof(IAudioSessionManager2), CLSCTX_ALL,
        NULL, (void**)&pSessionManager));

    // Return the pointer to the caller.
    *(ppSessionManager) = pSessionManager;
    (*ppSessionManager)->AddRef();

done:

    // Clean up.
    SAFE_RELEASE(pSessionManager);
    SAFE_RELEASE(pEnumerator);
    SAFE_RELEASE(pDevice);

    return hr;
}

요구 사항

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

추가 정보

핵심 오디오 인터페이스

IAudioSessionManager