Interfaccia IAudioVolumeDuckNotification (audiopolicy.h)
L'interfaccia IAudioVolumeDuckNotification viene usata dal sistema per inviare notifiche sulle modifiche di attenuazione del flusso. Stream attenuazione o anatratura, è una funzionalità introdotta in Windows 7, in cui il sistema regola il volume di un flusso non di comunicazione quando viene aperto un nuovo flusso di comunicazione. Per altre informazioni su questa funzionalità, vedere Esperienza di anatratura predefinita.
Ereditarietà
L'interfaccia IAudioVolumeDuckNotification eredita dall'interfaccia IUnknown . IAudioVolumeDuckNotification include anche questi tipi di membri:
Metodi
L'interfaccia IAudioVolumeDuckNotification include questi metodi.
IAudioVolumeDuckNotification::OnVolumeDuckNotification Il metodo OnVolumeDuckNotification invia una notifica su un evento di anatraggio del sistema in sospeso. |
IAudioVolumeDuckNotification::OnVolumeUnduckNotification Il metodo OnVolumeUnduckNotification invia una notifica su un evento di annullamento del sistema in sospeso. |
Commenti
Se un'applicazione deve rifiutare esplicitamente l'esperienza di attenuazione del sistema fornita dal sistema, deve chiamare IAudioSessionControl2::SetDuckingPreference e specificare tale preferenza.
A differenza delle altre interfacce WASAPI, implementate dal componente di sistema WASAPI, l'interfaccia IAudioVolumeDuckNotification viene implementata dall'applicazione per fornire un comportamento di attenuazione del flusso personalizzato. Per ricevere notifiche evento, l'applicazione passa al metodo IAudioSessionManager2::RegisterDuckNotification un puntatore all'implementazione dell'applicazione di IAudioVolumeDuckNotification.
Dopo aver registrato l'interfaccia IAudioVolumeDuckNotification , il responsabile della sessione chiama l'implementazione IAudioVolumeDuckNotification quando deve inviare notifiche di anatratura. L'applicazione riceve notifiche di evento sotto forma di callback tramite i metodi dell'interfaccia.
Quando l'applicazione non deve più ricevere notifiche, chiama il metodo IAudioSessionManager2::UnregisterDuckNotification . Il metodo UnregisterDuckNotification rimuove la registrazione di un'interfaccia IAudioVolumeDuckNotification registrata in precedenza.
L'applicazione non deve registrare o annullare la registrazione dei callback di notifica durante un callback dell'evento.
Per altre informazioni, vedere Considerazioni sull'implementazione per le notifiche di anatratura.
Esempio
Il codice di esempio seguente mostra un'implementazione di esempio dell'interfaccia 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;
}
};
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | audiopolicy.h |