IAudioVolumeDuckNotification 接口是 Windows 音频淡出通知的一部分,位于 Audiopolicy.h 头文件中。这个接口定义了用于接收音频淡出通知的方法。

以下是 IAudioVolumeDuckNotification 接口的定义:
// 头文件
#include <Audiopolicy.h>

// IAudioVolumeDuckNotification 接口定义
DECLARE_INTERFACE_(IAudioVolumeDuckNotification, IUnknown)
{
    STDMETHOD (OnVolumeDuckNotification) (THIS_
        _In_ LPCWSTR sessionID,
        _In_ UINT32 countCommunicationSessions) PURE;

    STDMETHOD (OnVolumeUnduckNotification) (THIS_
        _In_ LPCWSTR sessionID) PURE;
};

这个接口包含两个方法:

  •  OnVolumeDuckNotification:当系统要求音频淡出时调用。参数 sessionID 是淡出的音频会话的唯一标识符,countCommunicationSessions 是通信会话的数量。


  •  OnVolumeUnduckNotification:当系统取消音频淡出时调用。参数 sessionID 是取消淡出的音频会话的唯一标识符。


开发者可以实现这个接口,然后通过 RegisterDuckNotification 方法注册为音频会话管理器的通知对象。当系统需要通知音频淡出或取消淡出时,将调用相应的方法。

以下是一个简单的示例实现代码框架:
class MyAudioVolumeDuckNotification : public IAudioVolumeDuckNotification
{
public:
    STDMETHOD_(ULONG, AddRef)() { return 1; }
    STDMETHOD_(ULONG, Release)() { return 0; }

    STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
    {
        if (riid == __uuidof(IUnknown) || riid == __uuidof(IAudioVolumeDuckNotification))
        {
            *ppv = this;
            return S_OK;
        }
        else
        {
            *ppv = nullptr;
            return E_NOINTERFACE;
        }
    }

    STDMETHOD(OnVolumeDuckNotification)(LPCWSTR sessionID, UINT32 countCommunicationSessions)
    {
        // 处理音频淡出通知的逻辑
        // ...
        return S_OK;
    }

    STDMETHOD(OnVolumeUnduckNotification)(LPCWSTR sessionID)
    {
        // 处理取消音频淡出通知的逻辑
        // ...
        return S_OK;
    }
};

这个实现中,OnVolumeDuckNotification 方法和 OnVolumeUnduckNotification 方法被调用时,开发者可以在其中处理有关音频淡出或取消淡出的逻辑。




转载请注明出处:http://www.zyzy.cn/article/detail/23919/Win32 API/Audiopolicy.h/IAudioVolumeDuckNotification