Interface IAudioVolumeDuckNotification (audiopolicy.h)
A interface IAudioVolumeDuckNotification é usada pelo sistema para enviar notificações sobre alterações de atenuação de fluxo. Stream Atenuação, ou esquivamento, é um recurso introduzido no Windows 7, em que o sistema ajusta o volume de um fluxo de não comunicação quando um novo fluxo de comunicação é aberto. Para obter mais informações sobre esse recurso, consulte Experiência padrão de ducking.
Herança
A interface IAudioVolumeDuckNotification herda da interface IUnknown . IAudioVolumeDuckNotification também tem estes tipos de membros:
Métodos
A interface IAudioVolumeDuckNotification tem esses métodos.
IAudioVolumeDuckNotification::OnVolumeDuckNotification O método OnVolumeDuckNotification envia uma notificação sobre um evento de ducking do sistema pendente. |
IAudioVolumeDuckNotification::OnVolumeUnduckNotification O método OnVolumeUnduckNotification envia uma notificação sobre um evento pendente de ondulação do sistema. |
Comentários
Se um aplicativo precisar recusar a experiência de atenuação do sistema fornecida pelo sistema, ele deverá chamar IAudioSessionControl2::SetDuckingPreference e especificar essa preferência.
Ao contrário das outras interfaces WASAPI, que são implementadas pelo componente do sistema WASAPI, a interface IAudioVolumeDuckNotification é implementada pelo aplicativo para fornecer comportamento de atenuação de fluxo personalizado. Para receber notificações de evento, o aplicativo passa para o método IAudioSessionManager2::RegisterDuckNotification um ponteiro para a implementação do aplicativo de IAudioVolumeDuckNotification.
Depois que o aplicativo tiver registrado sua interface IAudioVolumeDuckNotification, o gerenciador de sessão chamará a implementação IAudioVolumeDuckNotification quando precisar enviar notificações de ducking. O aplicativo recebe notificações de evento na forma de retornos de chamada por meio dos métodos da interface .
Quando o aplicativo não precisa mais receber notificações, ele chama o método IAudioSessionManager2::UnregisterDuckNotification . O método UnregisterDuckNotification remove o registro de uma interface IAudioVolumeDuckNotification que o aplicativo registrou anteriormente.
O aplicativo não deve registrar ou cancelar o registro de retornos de chamada de notificação durante um retorno de chamada de evento.
Para obter mais informações, consulte Considerações de implementação para notificações de ducking.
Exemplos
O código de exemplo a seguir mostra uma implementação de exemplo da interface IAudioVolumeDuckNotification .
class CDuckNotification : public IAudioVolumeDuckNotification
{
LONG _Cref;
HWND m_hwndMain;
CDuckNotification (HWND hWnd) :
_Cref(1),
m_hwndMain (hWnd)
{}
HRESULT OnVolumeDuckNotification (LPCWSTR SessionID, UINT32 CommunicationSessionCount)
{
PostMessage(m_hwndMain, WM_VOLUME_DUCK, 0, 0);
return S_OK;
}
HRESULT OnVolumeUnduckNotification (LPCWSTR SessionID)
{
PostMessage(m_hwndMain, WM_VOLUME_UNDUCK, 0, 0);
return S_OK;
}
protected:
~CDuckNotification() {}
public:
HRESULT QueryInterface (REFIID Iid, void** ReturnValue)
{
if (ReturnValue == NULL)
{
return E_POINTER;
}
*ReturnValue = NULL;
if (iid == IID_IUnknown)
{
*ReturnValue = static_cast<IUnknown *>(static_cast<IAudioVolumeDuckNotification *>(this));
AddRef();
}
else if (iid == __uuidof(IAudioVolumeDuckNotification))
{
*ReturnValue = static_cast<IAudioVolumeDuckNotification *>(this);
AddRef();
}
else
{
return E_NOINTERFACE;
}
return S_OK;
}
ULONG AddRef()
{
return InterlockedIncrement(&_Cref);
}
ULONG Release()
{
LONG ref = InterlockedDecrement(&_Cref);
if (ref == 0)
{
delete this;
}
return 0;
}
};
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | audiopolicy.h |