Información general sobre las extensiones de clase de audio de ACX
En este tema se proporciona información resumida de las extensiones de clase de audio de ACX.
El marco de ACX se basa en Windows Driver Framework
Para permitir que los controladores de audio sean más confiables y ofrecer la mejor experiencia posible para los usuarios de PC, la clase de audio eXtension (ACX) ahora está disponible. ACX define una extensión de clase de Windows Driver Framework (WDF) para el dominio de audio. Para obtener más información sobre WDF, consulte Introducción a los objetos de estructura. Muchos conceptos de WDF, como los destinos de E/S de WDF, están disponibles en ACX. Para obtener más información sobre los destinos de E/S de WDF, consulte Introducción a los destinos de E/S.
ACX se crea con el marco de controladores en modo kernel (KMDF) y no con el marco de controlador en modo usuario (UMDF) para evitar cualquier latencia asociada a la conmutación de tareas varias veces desde el modo usuario al modo kernel mientras se transmite. Los controladores de audio portcls, el modelo heredado actual, son controladores basados en el modo kernel WDM.
El uso del marco ACX facilita la creación de controladores de audio de trabajo "listos para usar". Por ejemplo, ACX admite la finalización predeterminada para la mayoría de sus valores. Esto facilita que el controlador use la configuración correcta, pero todavía permite la personalización.
El marco de ACX expone conceptos de audio como objetos WDF con los que el controlador puede interactuar (secuencia, formato, etc.). Esto permite una experiencia de programación coherente y permite una comunidad más grande de desarrolladores de controladores de audio.
Objetivos de ACX
Las extensiones de clase de audio (ACX) tienen los siguientes objetivos.
- Simplificar el esfuerzo y el conocimiento necesarios para desarrollar controladores de audio independientes sencillos.
- Reducir la cantidad de código que una tercera parte necesita desarrollar. Menos líneas de código reducen el mantenimiento y facilitan la depuración.
- Permitir que los clientes del modo de usuario superior existentes (servicios y aplicaciones) se ejecuten tal cual.
- Simplificar la administración de PnP de energía de los controladores de la pila de audio.
- No afectar al rendimiento general, es decir, ninguna latencia adicional o notable.
- Simplificar el esfuerzo necesario para desarrollar controladores de audio multi-pila.
- Permitir que el controlador de terceros especifique el mecanismo de bloqueo que se va a usar al transmitir.
- Usar la solución de aislamiento de implementación de componentes de Microsoft que hace que los controladores o los módulos APO sean independientes y se pueden reutilizar.
Arquitectura de ACX
En este diagrama se muestra la arquitectura de ACX que muestra las aplicaciones en modo de usuario y los objetos ACX existentes en el modo kernel y el hardware de audio en la parte inferior de la pila. Además de los objetos ACX, el desarrollador del controlador tiene acceso a los objetos WDF para aprovechar las ventajas de su código de controlador, por ejemplo, para la administración de energía.
Coexistencia de ACX con controladores de audio existentes
ACX está diseñado para coexistir con controladores de audio existentes, para permitir una migración flexible a nuevos controladores ACX.
- La compatibilidad binaria de controladores de minipuerto de audio de salida, sin cambios (basados en WDM) se mantiene mediante los controladores de clase de Windows heredados existentes.
- Actualmente, ACX solo admite el streaming basado en WaveRT.
- Las nuevas pilas de ACX y PortCls/Ks heredadas se ejecutan en paralelo. El uso de ACX no obliga a terceros a migrar sus controladores de audio actuales al nuevo modelo. Dado que el modelo ofrece muchas ventajas, las terceros pueden optar voluntariamente por usarla para su desarrollo futuro de audio.
Definiciones comunes de ACX
Circuito: componente de controlador que representa una ruta de audio parcial o completa. El circuito representa un punto de conexión existente y sus funcionalidades.
Secuencia: un componente de controlador que se crea para representar una secuencia de audio, creada por un circuito. La secuencia se compone de una lista de elementos creados en función de los elementos del circuito primario.
Circuito de secuencia: circuito en una arquitectura de multi-pila (ruta de audio parcial) que interactúa directamente con el servicio de streaming en modo de usuario superior.
Circuito principal: circuito en una arquitectura de multi-pila (ruta de audio parcial) que proporciona la identidad del dispositivo de punto de conexión de audio.
Elemento: subcomponente de un circuito o secuencia, que representa una funcionalidad de audio del hardware de subrayado. Esto podría ser un elemento Volume, Mute o Jack, o un elemento Module en un circuito DSP, etc.
Ruta de audio del punto de conexión: un único grupo o grupo de objetos del circuito conectados para representar un único punto de conexión de audio. Los objetos de circuito deben proceder de diferentes pilas de dispositivos que pertenecen a los mismos controladores o diferentes.
Resumen de objetos de ACX
Para ver un resumen de los objetos base de ACX, consulte Resumen de objetos de ACX.
Controlador de ACX de ejemplo
Hay disponible un controlador de ejemplo de ACX sencillo para ver y descargar en GitHub en la rama de desarrollo: https://github.com/microsoft/Windows-driver-samples/tree/main/audio/Acx/Samples.
Comprobador de controladores
Se recomienda el uso del comprobador de controladores para todos los controladores de Windows, incluidos los controladores ACX. Use el comprobador de controladores para exponer errores latentes, reducir el consumo de energía y aumentar la confiabilidad del controlador. Para obtener más información, consulte Comprobador de controladores.
Comunicaciones entre controladores multi-pila estandarizados de ACX
Es habitual que la ruta de audio pase por varios componentes de hardware administrados por diferentes pilas de controladores para crear una experiencia de audio completa. Es habitual que un sistema tenga la funcionalidad DSP, CODEC y AMP implementada por diferentes proveedores de tecnología de audio.
En una arquitectura de multi-pila sin un estándar bien definido, cada proveedor se ve obligado a definir su propia interfaz propietaria y protocolo de comunicaciones. Es un objetivo de ACX facilitar el desarrollo de multi-pila controladores de audio tomando posesión de la sincronización entre estas pilas y proporcionando un patrón sencillo de reutilización para que los controladores se comuniquen entre sí.
Para obtener más información, consulte Comunicaciones entre controladores multi-pila de ACX.
Documentación de referencia de la ACX
Para obtener información sobre la documentación de referencia de ACX de nivel de encabezado, consulte la Documentación de referencia de ACX.
Consulte también
Documentación de referencia de la ACX
Destinos y sincronización de controladores de ACX
IRP de paquetes de solicitudes de E/S de ACX
Enumeración de dispositivos de ACX
Administración de energía de ACX