Visão geral de extensões de classe de áudio ACX
Este tópico fornece um resumo de alto nível das extensões de classe de áudio do ACX.
A estrutura do ACX foi criada sobre a estrutura de driver do Windows
Para permitir que os drivers de áudio sejam mais confiáveis e proporcionem a melhor experiência possível aos usuários de PCs, o Audio Class eXtension (ACX) agora está disponível. O ACX define uma extensão de classe WDF (Windows Driver Framework) para o domínio de áudio. Para obter mais informações sobre o WDF, consulte Introdução aos objetos de estrutura. Muitos conceitos do WDF, como destinos de E/S do WDF, estão disponíveis no ACX. Para obter mais informações sobre destinos de E/S do WDF, consulte Introdução aos destinos de E/S.
O ACX foi criado usando o KMDF (Kernel Mode Driver Framework) e não o UMDF (User Mode Driver Framework) para evitar qualquer latência associada à alternância de tarefas várias vezes do modo de usuário para kernel durante o streaming. Os drivers de áudio Portcls, o modelo herdado atual, são drivers WDM baseados no modo kernel.
O uso da estrutura do ACX facilita a criação de drivers de áudio funcionais "prontos para uso". Por exemplo, o ACX oferece suporte à conclusão padrão para a maioria de suas configurações. Isso torna mais fácil para o driver usar a configuração correta, mas ainda permite a personalização.
A estrutura do ACX expõe conceitos de áudio como objetos WDF com os quais o driver pode interagir (fluxo, formato etc.). Isso permite uma experiência de programação consistente e permite uma comunidade maior de desenvolvedores de drivers de áudio.
Metas do ACX
As extensões de classe de áudio (ACX) têm os seguintes objetivos.
- Simplificar o esforço e o know-how necessários para desenvolver drivers de áudio autônomos simples.
- Reduzir a quantidade de código que um terceiro precisa desenvolver. Menos linhas de código diminui a manutenção e facilita a depuração.
- Permite que os clientes de modo de usuário superior existentes (serviços e aplicativos) sejam executados como estão.
- Simplificar o gerenciamento de pnp de energia dos drivers de pilha de áudio.
- Nenhum impacto no desempenho geral, ou seja, nenhuma latência adicional/perceptível.
- Simplificar o esforço necessário para desenvolver drivers de áudio de pilha múltipla.
- Permite que o driver do terceiro especifique o mecanismo de bloqueio a ser usado durante o streaming.
- Usa a solução de isolamento de implantação de componentes da Microsoft que torna os módulos de drivers/APOs autossuficientes e reutilizáveis.
Arquitetura ACX
Este diagrama ilustra a arquitetura do ACX, que mostra aplicativos de modo de usuário existentes e objetos do ACX no modo kernel e hardware de áudio na parte inferior da pilha. Além dos objetos do ACX, o desenvolvedor do driver tem acesso aos objetos WDF para que eles sejam aproveitados no código do driver, por exemplo, para gerenciamento de energia.
Coexistência do ACX com drivers de áudio existentes
O ACX foi projetado para coexistir com drivers de áudio existentes para permitir uma migração flexível para novos drivers do ACX.
- A compatibilidade binária de drivers de miniporta de áudio inalterados (baseados em WDM) é mantida por drivers de classe do Windows herdados existentes.
- Atualmente, apenas o streaming baseado em WaveRT é suportado pelo ACX.
- PortCls/Ks herdados e novas pilhas do ACX são executados lado a lado. O uso do ACX não força o terceiro a fazer a portabilidade dos drivers de áudio atuais para o novo modelo. Como o modelo oferece muitas vantagens, os terceiros podem optar voluntariamente por usá-lo em um futuro desenvolvimento de áudio.
Definições comuns do ACX
Circuito - Um componente de driver que representa um caminho de áudio parcial ou completo. O circuito representa um ponto de extremidade existente e suas capacidades.
Transmissão - Um componente de driver criado para representar uma transmissão de áudio, criada por um circuito. A transmissão é composta por uma lista de elementos criados com base nos elementos do circuito pai.
Circuito de transmissão - O circuito em uma arquitetura de pilha múltipla (caminho de áudio parcial) que faz interface direta com o serviço de streaming de modo de usuário superior.
Circuito principal - O circuito em uma arquitetura de pilha múltipla (caminho de áudio parcial) que fornece a identidade do dispositivo de ponto de extremidade de áudio.
Elemento - Um subcomponente de um circuito ou transmissão que representa uma capacidade de áudio do hardware sublinhado. Isso pode ser um elemento de volume, ou mudo, ou entrada, ou um elemento do módulo em um circuito de DSP etc.
Caminho de áudio de ponto de extremidade - Um único ou um grupo de objetos de circuito conectados para representar um único ponto de extremidade de áudio. Os objetos do circuito devem vir de pilhas de dispositivos diferentes pertencentes aos mesmos drivers ou a drivers diferentes.
Resumo de objetos ACX
Para obter um resumo dos objetos ACX de base, consulte Resumo de objetos ACX.
Driver do ACX de exemplo
Um driver de exemplo simples do ACX está disponível para visualização e download no GitHub na ramificação de desenvolvimento - https://github.com/microsoft/Windows-driver-samples/tree/main/audio/Acx/Samples.
Driver Verifier
O uso do verificador de driver é incentivado para todos os drivers do Windows, incluindo drivers do ACX. Use o verificador de driver para detectar erros latentes, diminuir o consumo de energia e aumentar a confiabilidade do seu driver. Para obter mais informações, consulte Driver Verifier.
Comunicações cruzadas padronizadas do driver de pilha múltipla do ACX
É comum que o caminho de áudio passe por vários componentes de hardware manipulados por diferentes pilhas de drivers para criar uma experiência de áudio completa. É típico de um sistema ter a funcionalidade DSP, CODEC e AMP implementada por diferentes fornecedores de tecnologia de áudio.
Em uma arquitetura de pilha múltipla sem um padrão bem definido, cada fornecedor é forçado a definir sua própria interface proprietária e protocolo de comunicação. É um objetivo do ACX facilitar o desenvolvimento de drivers de áudio de pilha múltipla assumindo a propriedade da sincronização entre essas pilhas e fornecendo um padrão simples reutilizável para os drivers se comunicarem uns com os outros.
Para obter mais informações, consulte Comunicações entre drivers de pilha múltipla ACX.
Documentação de referência da ACX
Para obter informações sobre a documentação de referência do ACX no nível do cabeçalho, consulte Documentação de referência do ACX.
Confira também
Documentação de referência da ACX
Registro em log e depuração de ACX
Destinos e sincronização de drivers do ACX
IRPs de pacote de solicitação de E/S ACX
Gerenciamento de energia de ACX