Compartilhar via


Parâmetros de agrupamento

Um parâmetro de agrupamento identifica uma coleção de sessões de áudio que são todas controladas por um único controle de volume no programa de controle de volume do sistema, Sndvol. O parâmetro de agrupamento é um GUID que identifica exclusivamente a coleção dentro do escopo do computador.

A finalidade de um parâmetro de agrupamento é semelhante à do GUID de sessão para uma sessão entre processos. Ou seja, o parâmetro de agrupamento permite que o usuário controle uma coleção de fluxos de qualquer número de processos como uma única unidade. No entanto, o parâmetro de agrupamento serve a esse propósito em circunstâncias nas quais as sessões entre processos não podem fornecer uma solução.

Se vários clientes atribuírem seus respectivos fluxos a sessões separadas, mas atribuírem o mesmo parâmetro de agrupamento a todas as sessões, o Sndvol exibirá um único controle de volume para essas sessões. Para fornecer suporte para parâmetros de agrupamento, o Sndvol ou qualquer aplicativo de controle de volume semelhante deve fazer o seguinte:

  • Antes de exibir os controles de volume, verifique os parâmetros de agrupamento de todas as sessões ativas. Agrupar em um único controle de volume todas as sessões que têm o mesmo parâmetro de agrupamento.
  • Quando o usuário alterar a configuração em um controle de volume para um parâmetro de agrupamento específico, atualize os níveis de volume de todas as sessões que compartilham esse parâmetro de agrupamento.

Os parâmetros de agrupamento ajudam a reduzir o número de controles de volume exibidos pelo Sndvol. Os usuários podem ficar confusos se o Sndvol bagunçar sua exibição com muitos controles. Sem suporte para parâmetros de agrupamento, o Sndvol sempre exibiria um controle de volume separado para cada sessão, o que pode não ser apropriado em todas as circunstâncias. Além disso, os parâmetros de agrupamento fornecem uma maneira conveniente de garantir que sessões que contenham tipos semelhantes de conteúdo de áudio possam ser facilmente definidas para o mesmo nível de volume.

Conforme explicado anteriormente, as APIs de áudio de nível superior normalmente atribuem seus fluxos à sessão padrão específica do processo (identificada pelo valor GUID da sessão GUID_NULL). Esse padrão permite que o Sndvol exiba um controle de volume separado para cada processo de aplicativo cliente, que é frequentemente o comportamento desejado. Além disso, se várias instâncias do mesmo cliente forem executadas em processos separados, mas exigirem um único controle de volume compartilhado, os clientes poderão simplesmente atribuir seus fluxos à mesma sessão entre processos. Nenhum desses casos requer o uso de parâmetros de agrupamento. No entanto, um caso importante, como exemplificado pelo Microsoft Internet Explorer, requer o uso de parâmetros de agrupamento para alcançar o comportamento desejado.

O Internet Explorer permite que os usuários abram várias janelas do navegador, e essas janelas podem não ser todas executadas no mesmo processo. Os usuários podem ficar confusos se o Sndvol exibir um controle de volume separado para cada instância de aplicativo, todos com o mesmo rótulo, "Internet Explorer". Uma sessão entre processos não é uma solução viável nesse caso — se várias instâncias do Internet Explorer forem executadas em processos diferentes, talvez elas não consigam atribuir todos os seus fluxos de áudio a uma única sessão entre processos. O motivo é que as janelas do Internet Explorer podem estar executando instâncias do Windows Media Player ou algum outro plug-in multimídia que usa uma API de áudio de nível superior para reproduzir seus fluxos de áudio. Essas APIs normalmente atribuem os fluxos em um processo a uma sessão padrão específica do processo. O Internet Explorer não tem controle sobre a atribuição desses fluxos a sessões.

O WASAPI resolve esse problema permitindo que cada instância do Internet Explorer acesse os controles de sessão para sua sessão padrão específica do processo e atribua um parâmetro de agrupamento a essa sessão. Se todas as instâncias do Internet Explorer atribuírem o mesmo parâmetro de agrupamento a todas as suas sessões de áudio, o Sndvol exibirá um único controle de volume para essas sessões.

Por padrão, uma sessão não pertence a nenhum agrupamento. Se um cliente não atribuir explicitamente uma sessão a um agrupamento, o Sndvol exibirá um controle de volume dedicado para essa sessão. O valor do parâmetro de agrupamento GUID_NULL indica que uma sessão não pertence a nenhum agrupamento. Se nenhum cliente tiver atribuído explicitamente um parâmetro de agrupamento a uma sessão, o valor do parâmetro de agrupamento para essa sessão será GUID_NULL por padrão.

Um cliente pode alterar dinamicamente o agrupamento ao qual uma sessão é atribuída.

Um agrupamento pode incluir qualquer combinação de sessões entre processos e sessões específicas do processo em um dispositivo de ponto de extremidade de áudio.

A interface do usuário do Sndvol permite que o usuário exiba os controles de volume para apenas um dispositivo de ponto de extremidade de áudio por vez. Quando o usuário ajusta os controles de volume para um dispositivo específico, os níveis de volume das sessões que se conectam a outros dispositivos não são afetados. Em particular, um controle de volume para um determinado parâmetro de agrupamento afeta apenas sessões que compartilham o parâmetro de agrupamento e estão conectadas ao dispositivo selecionado no momento. Uma sessão que tem um parâmetro de agrupamento idêntico, mas está conectada a outro dispositivo, não é afetada.

Conforme descrito anteriormente, o Sndvol rotula cada controle de volume exibido com um nome de exibição e um ícone. No caso de um controle de volume para um agrupamento, o Sndvol seleciona arbitrariamente uma das sessões no agrupamento como a origem do nome de exibição e do ícone que ele exibe com o controle de volume. Assim, para garantir que o Sndvol sempre exiba o mesmo nome de exibição e ícone para um agrupamento, todas as instâncias de aplicativo que atribuem sessões a esse agrupamento devem garantir que suas respectivas sessões tenham o mesmo nome de exibição e ícone. Para obter mais informações sobre nomes de exibição e ícones, consulte Sessões de áudio.

Um aplicativo como o Sndvol pode se registrar para receber notificações quando o parâmetro de agrupamento de uma sessão for alterado. Essas notificações podem ser úteis se o aplicativo armazenar em cache informações sobre a atribuição de sessões a parâmetros de agrupamento. Uma notificação informa ao aplicativo que as informações armazenadas em cache podem não ser mais válidas.

Para atribuir um parâmetro de agrupamento a uma sessão, chame o método IAudioSessionControl::SetGroupingParam . Para obter o parâmetro de agrupamento atribuído a uma sessão, chame o método IAudioSessionControl::GetGroupingParam.

Sessões de Áudio