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 ACX.

A estrutura ACX foi criada sobre a estrutura de driver do Windows

Para permitir que os drivers de áudio sejam mais confiáveis e ofereçam a melhor experiência possível para os usuários de PC, o Audio Class eXtension (ACX) agora está disponível na visualização inicial. O ACX define uma nova 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 do Framework. 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 é 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 Usuário para o Kernel durante o streaming. Os drivers de áudio Portcls, o modelo herdado atual, são WDM, drivers baseados no modo kernel.

O uso da estrutura 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 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.

Observação

Os cabeçalhos e bibliotecas ACX não estão incluídos no WDK 10.0.22621.2428 (lançado em 24 de outubro de 2023), mas estão disponíveis em versões anteriores, bem como no Insider Preview mais recente (compilações da série 25000) do WDK. Para obter mais informações sobre versões de visualização do WDK, consulte Instalando versões de visualização do WDK (Kit de Driver do Windows).

Metas do ACX

As extensões de classe de áudio (ACX) têm os seguintes objetivos.

  • Simplifique o esforço e o know-how necessários para desenvolver drivers de áudio autônomos simples.
  • Reduza a quantidade de código que uma 3ª parte 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.
  • Simplifique o gerenciamento power-pnp dos drivers de pilha de áudio.
  • Nenhum impacto no desempenho geral, ou seja, nenhuma latência adicional/perceptível.
  • Simplifique o esforço necessário para desenvolver drivers de áudio multi-stack.
  • Permita que o driver 3rd party 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 autônomos e reutilizáveis.

Arquitetura ACX

Este diagrama ilustra a arquitetura ACX mostrando aplicativos de modo de usuário existentes e objetos ACX no modo kernel e hardware de áudio na parte inferior da pilha. Além dos objetos ACX, o desenvolvedor do driver tem acesso aos objetos WDF para aproveitar em seu código de driver, por exemplo, para gerenciamento de energia.

Diagrama ilustrando a arquitetura ACX, mostrando o modo usuário e kernel com objetos WDF e ACX no modo kernel e hardware de áudio na parte inferior da pilha.

Coexistência de 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 ACX.

  • A compatibilidade binária de drivers de miniporta de áudio inalterados (baseados em WDM) é mantida por drivers de classe de Windows herdados existentes.
  • Atualmente, apenas o streaming baseado em WaveRT é suportado pelo ACX.
  • PortCls/Ks legados e novas pilhas ACX são executados lado a lado. O uso do ACX não força a 3ª parte a portar seus drivers de áudio atuais para o novo modelo. Como o modelo oferece muitas vantagens, a 3ª parte pode optar voluntariamente por usá-lo para seu futuro desenvolvimento de áudio.

Definições comuns de 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.

Stream - Um componente de driver criado para representar um fluxo de áudio, criado por um circuito. O Fluxo é composto por uma lista de Elementos criados com base nos Elementos do Circuito pai.

Stream Circuit - o circuito em uma arquitetura multi-stack (caminho de áudio parcial) que faz interface direta com o serviço de streaming de modo de usuário superior.

Core Circuit - O circuito em uma arquitetura multi-stack (caminho de áudio parcial) que fornece a identidade do dispositivo de ponto de extremidade de áudio.

Elemento - Um subcomponente de um circuito ou fluxo, representando uma capacidade de áudio do hardware sublinhado. Isso pode ser um elemento Volume, ou Mudo, ou Jack, ou um elemento Module em um circuito DSP, etc.

Caminho de áudio de ponto de extremidade - Um único ou grupo de objetos Circuit conectados para representar um único ponto de extremidade de áudio. Os objetos Circuit devem vir de pilhas de dispositivos diferentes pertencentes aos mesmos drivers ou a drivers diferentes.

Resumo dos objetos ACX

Para obter um resumo dos objetos ACX base, consulte Resumo dos objetos ACX.

Exemplo de driver ACX

Um driver de exemplo ACX simples está disponível para exibição e download no GitHub na ramificação de desenvolvimento - https://github.com/microsoft/Windows-driver-samples/tree/develop/audio/Acx/Samples.

Driver Verifier

O uso do verificador de driver é incentivado para todos os drivers do Windows, incluindo drivers 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 Verificador de Driver.

Comunicações cruzadas padronizadas do driver ACX Multi-stack

É 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 multipilha 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 multi-stack, 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 da referência de ACX

Para obter informações sobre a documentação de referência do ACX no nível do cabeçalho, consulte a documentação de referência do ACX.

Confira também

Resumo dos objetos ACX

Documentação de referência do ACX

Informações sobre a versão do ACX

Registro e depuração de ACX

Sincronização de drivers e destinos ACX

IRPs de pacote de solicitação de E/S ACX

Enumeração de dispositivo ACX

Gerenciamento de energia ACX

Comunicações de driver cruzado de pilha múltipla ACX

Streaming ACX