Gerenciando topologias dinâmicas
Um adaptador de áudio contém alguns subdispositivos para manutenção de dispositivos de áudio externos, como alto-falantes e microfones, que o usuário conecta às tomadas de áudio front-or-back-panel do adaptador. Cada subdispositivo atende a uma tomada de áudio ou um grupo específico de tomadas.
O driver de áudio descreve cada subdispositivo apresentando uma topologia que é essencialmente um mapa das conexões internas e dos elementos de processamento dentro do subdispositivo. Os módulos da API do Windows fornecidos pelo sistema e os aplicativos do painel de controle fornecidos pelo fornecedor usam as informações de topologia para determinar os recursos do subdispositivo e identificar seus pontos de controle internos. Para obter mais informações, consulte Expondo a topologia de filtro.
Os drivers de áudio WDM que foram desenvolvidos antes das interfaces IUnregisterSubdevice e IUnregisterPhysicalConnection ficarem disponíveis têm principalmente topologias estáticas. Para esses drivers, depois que o driver do adaptador cria um objeto de driver de miniporto para gerenciar um subdispositivo, esse objeto e seu subdispositivo associado persistem durante o tempo de vida do objeto de driver do adaptador.
No entanto, em um adaptador de áudio configurável dinamicamente, o driver do adaptador pode criar e excluir subdispositivos em tempo de execução para refletir as alterações na configuração de hardware à medida que o usuário conecta dispositivos externos a tomadas de áudio e os remove. Esse comportamento permite que os subdispositivos operem como funções de hardware logicamente independentes. Em outras palavras, cada subdispositivo pode ser ligado, configurado e desligado independentemente dos outros subdispositivos.
Cada subdispositivo tem uma topologia interna que consiste no seguinte:
Os caminhos de dados por meio do subdispositivo.
Os nós de topologia (por exemplo, controle de volume) que processam os fluxos de dados que fluem ao longo dos caminhos de dados.
As conexões físicas do subdevice com outros subdispositivos no mesmo adaptador.
Quando um driver de adaptador remove dinamicamente um subdispositivo, ele libera os recursos de hardware associados à topologia interna do subdevice. O driver do adaptador pode usar esses recursos para criar um novo subdispositivo com uma topologia possivelmente diferente.
Ao configurar um novo subdispositivo de áudio, o driver do adaptador registra a interface de driver do subdispositivo como uma instância de uma ou mais classes de interface do dispositivo, e o gerenciador de E/S adiciona uma ou mais entradas do Registro que contêm links simbólicos que associam as classes de interface e as instâncias de interface. Para acessar o subdispositivo, um cliente de modo de usuário recupera o link simbólico do registro e o passa como um parâmetro de chamada para a função CreateFile . Normalmente, o cliente é um módulo da API do Windows, como Dsound.dll ou Wdmaud.drv, ou um painel de controle fornecido pelo fornecedor ou um programa utilitário de áudio. Para obter mais informações sobre CreateFile, consulte a documentação do SDK do Microsoft Windows.
Quando o driver de miniporto chama o método IUnregisterSubdevice::UnregisterSubdevice para remover um subdispositivo, o driver do sistema PortCls (Portcls.sys) instrui o gerenciador de E/S a remover o link simbólico para a interface do dispositivo associada do registro. Os componentes registrados para eventos de remoção da interface do dispositivo recebem notificação quando a interface é removida.
O adaptador de áudio pode conter circuitos de presença de tomada para notificar o driver de miniporto quando um plugue é inserido ou removido de uma tomada de áudio. Quando o usuário insere um plug-in em uma tomada de áudio, o driver do adaptador adiciona a interface do dispositivo do subdevice associado ao registro. Quando o usuário remove um plugue de uma tomada de áudio, o driver do adaptador remove a interface do dispositivo correspondente do registro.
Os adaptadores de áudio que dão suporte a topologias dinâmicas têm os seguintes benefícios:
Amigável
A menos que alto-falantes da área de trabalho, fones de ouvido e outros dispositivos de áudio externos estejam realmente conectados a tomadas de áudio nos painéis frontal ou traseiro do adaptador de áudio, o sistema não apresenta esses dispositivos a aplicativos de áudio como disponíveis para uso.
Eficiente em termos de energia
Quando o usuário remove um plugue de uma tomada de áudio, o driver pode desligar a parte do circuito do adaptador que atende a essa tomada.
Configurável
Depois de remover um subdispositivo, o driver pode usar os recursos de hardware associados à topologia interna do subdevice para criar um novo subdispositivo com uma topologia possivelmente diferente.