Compartilhar via


Interface IAudioSessionControl2 (audiopolicy.h)

A interface IAudioSessionControl2 pode ser usada por um cliente para obter informações sobre a sessão de áudio.

Para obter uma referência à interface IAudioSessionControl2 , o aplicativo deve chamar IAudioSessionControl::QueryInterface para solicitar o ponteiro de interface da interface IAudioSessionControl do objeto de fluxo. Há duas maneiras pelas quais um aplicativo pode obter um ponteiro para a interface IAudioSessionControl :

Quando o aplicativo deseja liberar a instância da interface IAudioSessionControl2 , o aplicativo deve chamar o método Release da interface do mesmo thread que a chamada para IAudioClient::GetService que criou o objeto.

O thread de aplicativo que usa essa interface deve ser inicializado para COM. Para obter mais informações sobre a inicialização COM, consulte a descrição da função CoInitializeEx na documentação do SDK do Windows.

Herança

A interface IAudioSessionControl2 herda de IAudioSessionControl. IAudioSessionControl2 também tem estes tipos de membros:

Métodos

A interface IAudioSessionControl2 tem esses métodos.

 
IAudioSessionControl2::GetProcessId

O método GetProcessId recupera o identificador de processo da sessão de áudio.
IAudioSessionControl2::GetSessionIdentifier

O método GetSessionIdentifier recupera o identificador de sessão de áudio.
IAudioSessionControl2::GetSessionInstanceIdentifier

O método GetSessionInstanceIdentifier recupera o identificador da instância de sessão de áudio.
IAudioSessionControl2::IsSystemSoundsSession

O método IsSystemSoundsSession indica se a sessão é uma sessão de sons do sistema.
IAudioSessionControl2::SetDuckingPreference

O método SetDuckingPreference habilita ou desabilita a experiência de atenuação de fluxo padrão (pato automático) fornecida pelo sistema.

Comentários

Essa interface dá suporte a implementações personalizadas para atenuação de fluxo ou ducking, um novo recurso no Windows 7. Um aplicativo que reproduz um fluxo de mídia pode fazer com que ele se comporte de forma diferente quando um novo fluxo de comunicação é aberto no dispositivo de comunicação padrão. Por exemplo, o fluxo de mídia original pode ser pausado enquanto o novo fluxo de comunicação está aberto. Para obter mais informações sobre esse recurso, consulte Experiência padrão de ducking.

Um aplicativo pode usar essa interface para executar as seguintes tarefas:

  • Especifique que deseja recusar a experiência de atenuação de fluxo padrão fornecida pelo sistema.
  • Obtenha o identificador de sessão de áudio associado ao fluxo. O identificador é necessário durante o registro de notificação. O aplicativo pode se registrar para receber notificações do sistema.
  • Verifique se o fluxo associado à sessão de áudio é um som do sistema.

Exemplos

O código de exemplo a seguir mostra como obter uma referência à interface IAudioSessionControl2 e chamar seus métodos para determinar se o fluxo associado à sessão de áudio é um som do 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 Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho audiopolicy.h

Confira também

Principais interfaces de áudio

IAudioSessionControl

Usando um dispositivo de comunicação