Resumen de objetos ACX

En este tema se proporciona un resumen general de objetos de extensiones de clase de audio (ACX) que forman la base de un controlador de audio ACX. Para obtener información general sobre ACX, consulte Información general sobre las extensiones de clase de audio de ACX.

Los objetos ACX son objetos de Windows Driver Framework (WDF): WDFOBJECT. Para obtener más información sobre WDF, vea Introduction to Framework Objects. Para obtener un resumen de los objetos WDF, vea Resumen de objetos de marco.

Nota

Los encabezados y bibliotecas de ACX no se incluyen en WDK 10.0.22621.2428 (publicado el 24 de octubre de 2023), pero están disponibles en versiones anteriores, así como en las últimas (compilaciones de la serie 25000) Insider Preview de WDK. Para obtener más información sobre las versiones preliminares del WDK, consulta Instalación de versiones preliminares del Kit de controladores de Windows (WDK).

Jerarquía de objetos ACX

En ACX (como en WDF), el objeto de controlador es el objeto raíz y todos los demás objetos son sus elementos secundarios o descendientes. Todos los objetos ACX son elementos secundarios del objeto driver directamente o indirectamente a través de otros objetos ACX o WDF. Un controlador ACX puede especificar el elemento primario de un objeto ACX durante el tiempo de creación. Si no se especifica el elemento primario, ACX usa un elemento primario predeterminado, como se describe en estas secciones.

Diagrama que ilustra la jerarquía de objetos ACX, con WDFDEVICE en la parte superior y los objetos ACX principales, como circuito y flujo a continuación.

Circuito ACX

Un AcxCircuit representa una ruta de acceso de audio parcial o completa a un dispositivo de audio percibido por el usuario (altavoces, micrófono, etc.). Un AcxCircuit tiene al menos un pin de entrada y un pin de salida (ACXPIN), y puede agregar uno o varios objetos similares a AcxElements. De forma predeterminada, AcxElements está "conectado" en el mismo orden de ensamblado.

El circuito de audio es el bloque de creación principal de ACX. En el nuevo marco ACX, un controlador de audio crea uno o varios objetos de circuito ACX para representar una ruta de acceso de control o datos de audio parciales o completos. ACX ensambla estos objetos de circuito ACX juntos para crear una ruta de acceso de audio completa que representa un punto de conexión de audio. ACX es responsable de administrar los circuitos ACX y sus dependencias. El orden de cómo se ensamblan estos circuitos se puede definir estáticamente en tiempo de inicialización o definir dinámicamente en tiempo de ejecución.

Un punto de conexión de audio en los marcos de ACX es una colección de uno o varios circuitos ACX. Cada circuito ACX de una ruta de acceso de audio de varios circuitos debe pertenecer a una pila de dispositivos PnP diferente. Un controlador ACX puede crear uno o varios circuitos en el momento de la inicialización, o bien puede crear circuitos en tiempo de ejecución, como efecto secundario de un evento externo, como después de detectar un nuevo componente de audio, o porque se registró con ACX como fábrica para un tipo de circuito específico, y el marco ACX solicitó al componente de fábrica crear un nuevo circuito de ese tipo (consulte ADMINISTRADOR de circuitos ACX o fábrica descrito más adelante en este tema).

  • Un AcxCircuit puede tener una o varias secuencias.

  • Un AcxCircuit tiene una cola de WDF dedicada. Para obtener más información sobre las colas de WDF, vea Objetos de cola de marco.

Los DDIs para circuitos ACX se describen en el encabezado acxcircuit.h .

Patilla ACX

Al igual que en los controladores de audio portcls de WDM, y el objeto AcxPin representan las conexiones lógicas (no conexiones físicas) a través de las cuales los flujos de datos entran en el adaptador desde el bus de comunicaciones del sistema o entran en el bus de comunicaciones del sistema desde el adaptador.

Las DDIs para Pin se describen en el encabezado acxpin.h .

ACX Stream

Un AcxStream representa una secuencia de audio en el hardware de un circuito específico. Un AcxStream puede agregar uno o varios objetos similares a AcxElements. De forma predeterminada, AcxElements está "conectado" en el mismo orden de ensamblado. AcxStream solo está asociado a un circuito ACX.

  • AcxStream tiene una cola de WDF dedicada. Para obtener más información sobre las colas de WDF, vea Objetos de cola de marco.
  • Un AcxStream admite diferentes estados. Estos estados indican cuándo fluye el audio (estado RUN) o no fluye (estado PAUSE o STOP).
  • Actualmente, ACX admite dos tipos de secuencias: objetos básicos de secuencia ACX usados por circuitos que no son de streaming y objetos de secuencia acx RT usados por circuitos de streaming.

Los DDIs para la secuencia se definen en el encabezado acxstreams.h .

Destinos de ACX

WdfIoTarget es una abstracción WDF para facilitar la comunicación entre dos pilas diferentes. Para obtener más información sobre los destinos de E/S de WDF, consulte Introducción a los destinos de E/S.

  • Los controladores usan AcxTargetCircuit para comunicarse con un circuito remoto expuesto por una pila diferente. AcxTargetCircuit se implementa mediante un WdfIoTarget.
  • Los controladores usan AcxTargetPin para comunicarse con el pin de un circuito remoto expuesto por una pila diferente. AcxTargetPin se implementa mediante un WdfIoTarget para enviar mensajes a la entidad de anclaje remoto.
  • Los controladores usan AcxTargetElement para comunicarse con el elemento de un circuito remoto expuesto por una pila diferente. AcxTargetElement se implementa mediante un WdfIoTarget para enviar mensajes a la entidad de elemento remoto.
  • Los controladores usan AcxTargetStream para comunicarse con la secuencia de un circuito remoto expuesta por una pila diferente. AcxTargetStream se implementa mediante un WdfIoTarget para crear una secuencia remota y cambiar el estado de la secuencia remota.
  • Los controladores usan AcxTargetFactoryCircuit para comunicarse con una instancia de fábrica de circuito remoto. AcxTargetFactoryCircuit se implementa mediante un WdfTarget para enviar mensajes al generador de circuitos remotos.

Cada uno de los tipos de ACX anteriores admite propiedades, métodos y eventos para interactuar con el circuito remoto. Todos estos tipos se basan en el objeto WdfIoTarget.

Los DDIs para destinos se definen en el encabezado acxtargets.h .

Puente de transmisión acx

Un circuito usa el objeto AcxStreamBridge para propagar la creación de una secuencia, las transiciones de estados de la secuencia y la configuración de DRM entre segmentos de circuito. Este objeto solo se usa en un escenario de varios circuitos (compuestos de audio). Un controlador puede asociar uno o varios objetos ACXSTREAMBRIDGE a un pin de puente. Un pin de puente es el ACXPIN que se conecta lógicamente al ACXPIN correspoinding en el otro circuito.

Las DDIs para Stream se describen en el encabezado acxstreams.h .

Ejemplo de diseño del circuito de nodo del motor de audio ACX

En el diagrama siguiente se muestra un circuito ACX. Los pines host y offload son entradas para el circuito con un pin de bucle invertido que se podría usar para la cancelación del eco. La salida podría ser un pin de puente que se enruta a un altavoz.

Diagrama que ilustra un circuito ACX con patillas host, descarga y bucle invertido a la izquierda, y una patilla de puente a la derecha, enrutada a través de un nodo de motor de audio.

Tenga en cuenta que el controlador no necesita realizar el paso de conexión explícita cuando los circuitos o elementos están conectados en el mismo orden que se agregaron al circuito.

De forma predeterminada, ACX conecta los elementos a partir del pin receptor de solicitud ACX del circuito y termina con el pin de puente del dispositivo del circuito para dispositivos de representación y captura.

Administrador de ACX

El administrador de ACX se usa para tareas del sistema, como admitir puntos de conexión de audio compuestos. Estos tipos de puntos de conexión se administran mediante una o varias pilas de controladores de los mismos proveedores o diferentes. Los clientes pueden preconfigurar esta configuración en ACPI o usar directamente la DDI de ACX Manager. Las DDIs para el administrador de ACX se describen en el encabezado acxmanager.h .

Contenedor de objetos ACX

El contenedor de objetos ACX se usa para almacenar varios tipos de datos. ACXOBJECTBAG se puede pasar como argumento en varios DDIs. Los DDIs para el contenedor de objetos se describen en el encabezado acxmisc.h .

Resumen del objeto ACX

En la tabla siguiente se enumeran todos los objetos ACX y se proporciona información básica sobre cada objeto.

Handle Nombre Propósito
ACXMANAGER El administrador de ACX Objeto ACX Manager que se usa para administrar y controlar otros objetos.
ACXOBJECTBAG Contenedor de objetos Se usa para almacenar datos para usarlos con objetos .
ACXEVENT AcX (evento) Para los eventos KS (streaming de kernel).
ACXEVENTDATA Datos de evento Los datos asociados a un evento.
ACXPNPEVENT Evento Pnp Para eventos plug and play.
ACXCIRCUIT Circuito Un circuito ACX descrito anteriormente en este tema.
ACXPIN Anclar Un objeto pin ACX representa las conexiones lógicas y se describe anteriormente en este tema.
ACXELEMENT Elemento Se usa para representar cualquier elemento que se pueda agregar a acxCircuit o AcxStream, como AcxVolume.
ACXAUDIOENGINE Motor de audio Motor de audio ACX que se usa en un circuito de representación para representar un DSP.
ACXSTREAMAUDIOENGINE Stream Audio Engine Se usa en una secuencia de representación para representar un DSP.
ACXKEYWORDSPOTTER Spotter clave de palabras Un spotter de palabra clave, que se usa en un circuito de captura para la detección de palabras clave en una secuencia de audio.
ACXVOLUME Volumen Se usa para representar un volumen, ganancia, aumento.
ACXMUTE Silencio Se usa para representar un elemento silenciado.
ACXJACK Jack Se usa para representar un conector de audio u otro conector físico.
ACXMICARRAYGEOMETRY Geometría de matriz mic Se usa para representar la geometría de la matriz de micrófonos, como la ubicación de los micrófonos.
ACXPEAKMETER Medidor máximo Se usa cuando el hardware admite la funcionalidad de medidor máximo.
ACXSTREAM STREAM Se usa para representar una secuencia de audio creada por un circuito, descrita anteriormente en este tema.
ACXDATAFORMAT Formato de datos Un formato de datos representa un formato de datos admitido por el dispositivo de audio.
ACXDATAFORMATLIST Lista de formatos de datos Lista de formatos de datos de audio disponibles para su uso.
ACXTARGETCIRCUIT Circuito de destino Se usa para comunicarse con un circuito remoto expuesto por una pila diferente.
ACXTARGETPIN Pin de destino Se usa para comunicarse con el pin de un circuito remoto expuesto por una pila diferente.
ACXTARGETELEMENT Elemento Target Se usa para representar un elemento de destino que se puede agregar a acxCircuit o AcxStream, como AcxVolume.
ACXTARGETSTREAM Secuencia de destino Se usa para comunicarse con la secuencia de un circuito remoto expuesta por una pila diferente.
ACXTARGETFACTORYCIRCUIT Factoría de circuito de destino Se usa para comunicarse con la fábrica de un circuito remoto.
ACXSTREAMBRIDGE Stream Bridge Usado por un circuito para propagar una creación de flujos, las transiciones de estados y DRM entre segmentos de circuito.
ACXCOMPOSITE Compuesto Se usa para representar arquitecturas de secuencia de varios circuitos, multi-pila o varios proveedores.
ACXCOMPOSITEFACTORY Factoría compuesta Fábrica que crea circuitos de audio compuestos.
ACXFACTORYCIRCUIT Circuito de fábrica Generador que crea circuitos mediante una plantilla específica.
ACXCIRCUITMANAGER Administrador de circuitos Proveedor de circuitos que se usa para la creación de circuitos dinámicos.
ACXCOMPOSITETEMPLATE Plantilla compuesta Una plantilla compuesta representa un enlace de audio parcial o completo. Una plantilla compuesta puede tener una o varias plantillas de circuito.
ACXCIRCUITTEMPLATE Plantilla de circuito Una plantilla de circuito representa una ruta de acceso de audio parcial.
ACXAUDIOMODULE Módulo de audio Para agregar funcionalidad de terceros personalizada.

Los siguientes objetos ACX se usan para almacenar información de circuito, secuencia y generador de circuitos.

Handle Propósito
ACXCIRCUIT_INIT Almacena los datos de inicialización del circuito ACX.
ACXSTREAM_INIT Almacena los datos de inicialización de flujos de ACX.
ACXFACTORYCIRCUIT_INIT Almacena los datos de inicialización usados por una factoría de circuitos ACX.

Consulte también

Introducción a las extensiones de clase de audio ACX

Documentación de referencia de ACX