Interface IAudioVolumeDuckNotification (audiopolicy.h)
L’interface IAudioVolumeDuckNotification est utilisée par le système pour envoyer des notifications sur les modifications d’atténuation de flux. Stream atténuation, ou canardage, est une fonctionnalité introduite dans Windows 7, où le système ajuste le volume d’un flux de non-communication lors de l’ouverture d’un nouveau flux de communication. Pour plus d’informations sur cette fonctionnalité, consultez Expérience de canardage par défaut.
Héritage
L’interface IAudioVolumeDuckNotification hérite de l’interface IUnknown. IAudioVolumeDuckNotification a également les types de membres suivants :
Méthodes
L’interface IAudioVolumeDuckNotification possède ces méthodes.
IAudioVolumeDuckNotification ::OnVolumeDuckNotification La méthode OnVolumeDuckNotification envoie une notification à propos d’un événement de canardage système en attente. |
IAudioVolumeDuckNotification ::OnVolumeUnduckNotification La méthode OnVolumeUnduckNotification envoie une notification concernant un événement de désinducation du système en attente. |
Remarques
Si une application doit refuser l’expérience d’atténuation du système fournie par le système, elle doit appeler IAudioSessionControl2 ::SetDuckingPreference et spécifier cette préférence.
Contrairement aux autres interfaces WASAPI, qui sont implémentées par le composant système WASAPI, l’interface IAudioVolumeDuckNotification est implémentée par l’application pour fournir un comportement d’atténuation de flux personnalisé. Pour recevoir des notifications d’événements, l’application transmet à la méthode IAudioSessionManager2 ::RegisterDuckNotification un pointeur vers l’implémentation d’IAudioVolumeDuckNotification de l’application.
Une fois que l’application a inscrit son interface IAudioVolumeDuckNotification , le gestionnaire de session appelle l’implémentation IAudioVolumeDuckNotification lorsqu’elle a besoin d’envoyer des notifications d’exclusion. L’application reçoit des notifications d’événements sous forme de rappels via les méthodes de l’interface.
Lorsque l’application n’a plus besoin de recevoir de notifications, elle appelle la méthode IAudioSessionManager2 ::UnregisterDuckNotification . La méthode UnregisterDuckNotification supprime l’inscription d’une interface IAudioVolumeDuckNotification précédemment inscrite par l’application.
L’application ne doit pas inscrire ou annuler l’inscription des rappels de notification lors d’un rappel d’événement.
Pour plus d’informations, consultez Considérations d’implémentation pour les notifications de canardage.
Exemples
L’exemple de code suivant montre un exemple d’implémentation de l’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;
}
};
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | audiopolicy.h |