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.
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.
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de