Interfaz IAudioSessionControl2 (audiopolicy.h)

Un cliente puede usar la interfaz IAudioSessionControl2 para obtener información sobre la sesión de audio.

Para obtener una referencia a la interfaz IAudioSessionControl2 , la aplicación debe llamar a IAudioSessionControl::QueryInterface para solicitar el puntero de interfaz desde la interfaz IAudioSessionControl del objeto de secuencia. Hay dos maneras en que una aplicación puede obtener un puntero a la interfaz IAudioSessionControl :

Cuando la aplicación quiere liberar la instancia de interfaz IAudioSessionControl2 , la aplicación debe llamar al método Release de la interfaz desde el mismo subproceso que la llamada a IAudioClient::GetService que creó el objeto.

El subproceso de aplicación que usa esta interfaz debe inicializarse para COM. Para obtener más información sobre la inicialización COM, vea la descripción de la función CoInitializeEx en la documentación de Windows SDK.

Herencia

La interfaz IAudioSessionControl2 hereda de IAudioSessionControl. IAudioSessionControl2 también tiene estos tipos de miembros:

Métodos

La interfaz IAudioSessionControl2 tiene estos métodos.

 
IAudioSessionControl2::GetProcessId

El método GetProcessId recupera el identificador de proceso de la sesión de audio.
IAudioSessionControl2::GetSessionIdentifier

El método GetSessionIdentifier recupera el identificador de sesión de audio.
IAudioSessionControl2::GetSessionInstanceIdentifier

El método GetSessionInstanceIdentifier recupera el identificador de la instancia de sesión de audio.
IAudioSessionControl2::IsSystemSoundsSession

El método IsSystemSoundsSession indica si la sesión es una sesión de sonido del sistema.
IAudioSessionControl2::SetDuckingPreference

El método SetDuckingPreference habilita o deshabilita la experiencia de atenuación de flujo predeterminada (pato automático) proporcionada por el sistema.

Comentarios

Esta interfaz admite implementaciones personalizadas para atenuación de flujos o pato, una nueva característica en Windows 7. Una aplicación que reproduce una secuencia multimedia puede hacer que se comporte de forma diferente cuando se abre una nueva secuencia de comunicación en el dispositivo de comunicación predeterminado. Por ejemplo, la secuencia multimedia original se puede pausar mientras está abierta la nueva secuencia de comunicación. Para obtener más información sobre esta característica, consulte Experiencia de pato predeterminada.

Una aplicación puede usar esta interfaz para realizar las tareas siguientes:

  • Especifique que desea no participar en la experiencia de atenuación de flujo predeterminada proporcionada por el sistema.
  • Obtenga el identificador de sesión de audio asociado a la secuencia. El identificador es necesario durante el registro de notificaciones. La aplicación puede registrarse para recibir notificaciones de pato del sistema.
  • Compruebe si la secuencia asociada a la sesión de audio es un sonido del sistema.

Ejemplos

En el código de ejemplo siguiente se muestra cómo obtener una referencia a la interfaz IAudioSessionControl2 y llamar a sus métodos para determinar si la secuencia asociada a la sesión de audio es un sonido del 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado audiopolicy.h

Consulte también

Interfaces de audio principales

IAudioSessionControl

Uso de un dispositivo de comunicación