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

Vedi anche

Interfacce audio principali

Uso di un dispositivo di comunicazione