IAudioSessionManager2 接口 (audiopolicy.h)

IAudioSessionManager2 接口使应用程序能够管理音频设备的子混合。

若要获取对 IAudioSessionManager2 接口的引用,应用程序必须按照以下步骤在音频设备上激活它:

  1. 使用 IMMDevice 接口页上所述的技术之一,获取对音频终结点设备的 IMMDevice 接口的引用。
  2. 调用参数 iid 设置为 IID_IAudioSessionManager2 的 IMMDevice::Activate 方法。

当应用程序想要释放 IAudioSessionManager2 接口实例时,应用程序必须调用接口的 Release 方法。

必须针对 COM 初始化使用此接口的应用程序线程。 有关 COM 初始化的详细信息,请参阅 Windows SDK 文档中 CoInitializeEx 函数的说明。

继承

IAudioSessionManager2 接口继承自 IAudioSessionManagerIAudioSessionManager2 也具有以下类型的成员:

方法

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