Condividi tramite


Interfaccia IAudioSessionControl2 (audiopolicy.h)

L'interfaccia IAudioSessionControl2 può essere usata da un client per ottenere informazioni sulla sessione audio.

Per ottenere un riferimento all'interfaccia IAudioSessionControl2 , l'applicazione deve chiamare IAudioSessionControl::QueryInterface per richiedere il puntatore di interfaccia dall'interfaccia IAudioSessionControl dell'oggetto flusso. Esistono due modi in cui un'applicazione può ottenere un puntatore all'interfaccia IAudioSessionControl :

Quando l'applicazione vuole rilasciare l'istanza dell'interfaccia IAudioSessionControl2 , l'applicazione deve chiamare il metodo Release dell'interfaccia dallo stesso thread della chiamata a IAudioClient::GetService che ha creato l'oggetto.

Il thread dell'applicazione che usa questa interfaccia deve essere inizializzato per COM. Per altre informazioni sull'inizializzazione COM, vedere la descrizione della funzione CoInitializeEx nella documentazione di Windows SDK.

Ereditarietà

L'interfaccia IAudioSessionControl2 eredita da IAudioSessionControl. IAudioSessionControl2 include anche questi tipi di membri:

Metodi

L'interfaccia IAudioSessionControl2 include questi metodi.

 
IAudioSessionControl2::GetProcessId

Il metodo GetProcessId recupera l'identificatore del processo della sessione audio.
IAudioSessionControl2::GetSessionIdentifier

Il metodo GetSessionIdentifier recupera l'identificatore di sessione audio.
IAudioSessionControl2::GetSessionInstanceIdentifier

Il metodo GetSessionInstanceIdentifier recupera l'identificatore dell'istanza della sessione audio.
IAudioSessionControl2::IsSystemSoundsSession

Il metodo IsSystemSoundsSession indica se la sessione è una sessione audio di sistema.
IAudioSessionControl2::SetDuckingPreference

Il metodo SetDuckingPreference abilita o disabilita l'esperienza di attenuazione del flusso predefinita (anatratura automatica) fornita dal sistema.

Commenti

Questa interfaccia supporta implementazioni personalizzate per l'attenuazione del flusso o l'anatraggio, una nuova funzionalità in Windows 7. Un'applicazione che riproduce un flusso multimediale può comportarsi in modo diverso quando viene aperto un nuovo flusso di comunicazione nel dispositivo di comunicazione predefinito. Ad esempio, il flusso multimediale originale può essere sospeso mentre il nuovo flusso di comunicazione è aperto. Per altre informazioni su questa funzionalità, vedere Default Ducking Experience.For more information about this feature, see Default Ducking Experience.

Un'applicazione può usare questa interfaccia per eseguire le attività seguenti:

  • Specificare che vuole rifiutare esplicitamente l'esperienza di attenuazione del flusso predefinita fornita dal sistema.
  • Ottiene l'identificatore di sessione audio associato al flusso. L'identificatore è necessario durante la registrazione della notifica. L'applicazione può registrarsi per ricevere notifiche di anatraggio dal sistema.
  • Controllare se il flusso associato alla sessione audio è un suono di sistema.

Esempio

Il codice di esempio seguente mostra come ottenere un riferimento all'interfaccia IAudioSessionControl2 e chiamare i relativi metodi per determinare se il flusso associato alla sessione audio è un suono di sistema.

HRESULT SetDuckingForSystemSounds()
{
 
    HRESULT hr = S_OK;
    
    IMMDevice* pDevice = NULL;
    IMMDeviceEnumerator* pEnumerator = NULL;
    IAudioSessionControl* pSessionControl = NULL;
    IAudioSessionControl2* pSessionControl2 = NULL;
    IAudioSessionManager* pSessionManager = NULL;

    CHECK_HR( hr = CoInitialize(NULL));

    // Create the device enumerator.
    CHECK_HR( hr = CoCreateInstance(
        __uuidof(MMDeviceEnumerator), 
        NULL, CLSCTX_ALL, 
        __uuidof(IMMDeviceEnumerator), 
        (void**)&pEnumerator));

    // Get the default audio device.
    CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
                    eRender, eConsole, &pDevice));

    // Get the audio client.
    CHECK_HR( hr = pDevice->Activate(
        __uuidof(IID_IAudioSessionManager), CLSCTX_ALL,
        NULL, (void**)&pSessionManager));

    // Get a reference to the session manager.
    CHECK_HR( hr = pSessionManager->GetAudioSessionControl (GUID_NULL, FALSE, &pSessionControl));
    
    // Get the extended session control interface pointer.
    CHECK_HR( hr = pSessionControl->QueryInterface(
        __uuidof(IAudioSessionControl2), (void**) &pSessionControl2));

    // Check whether this is a system sound.
    CHECK_HR( hr = pSessionControl2->IsSystemSoundsSession());

    // If it is a system sound, opt out of the default
    // stream attenuation experience.
    CHECK_HR( hr = pSessionControl2->SetDuckingPreference(TRUE));

done:

    // Clean up.
    SAFE_RELEASE(pSessionControl2);
    SAFE_RELEASE(pSessionControl);
    SAFE_RELEASE(pEnumerator);
    SAFE_RELEASE(pDevice);


    return hr;
}

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 di base

IAudioSessionControl

Uso di un dispositivo di comunicazione