Condividi tramite


Riepilogo degli oggetti ACX

In questo argomento viene fornito un riepilogo generale degli oggetti ACX (Audio Class Extensions) che costituiscono la base di un driver audio ACX. Per una panoramica generale di ACX, vedere Panoramica delle estensioni della classe audio ACX.

Gli oggetti ACX sono oggetti Windows Driver Framework (WDF) - WDFOBJECT. Per altre informazioni su WDF, vedere Introduzione agli oggetti framework. Per un riepilogo degli oggetti WDF, vedere Riepilogo degli oggetti framework.

Gerarchia di oggetti ACX

In ACX (come in WDF), l'oggetto driver è l'oggetto radice e tutti gli altri oggetti sono figli/discendenti. Tutti gli oggetti ACX sono elementi figlio dell'oggetto driver direttamente o indirettamente tramite altri oggetti ACX o WDF. Un driver ACX può specificare l'elemento padre di un oggetto ACX durante la creazione. Se l'elemento padre non è specificato, ACX usa un elemento padre predefinito come descritto in queste sezioni.

Diagramma che illustra la gerarchia degli oggetti ACX, con WDFDEVICE all'inizio e ai principali oggetti ACX come circuito e flusso di seguito.

Creazione di oggetti WDF non ACX

Oltre agli oggetti ACX, un driver audio può creare e usare altri oggetti WDF in base alle esigenze. Se un driver prevede di enumerare i dispositivi non ACX, deve farlo usando un elenco figlio diverso rispetto all'elenco figlio WDF predefinito creato quando viene creato un dispositivo ACX/WDF. Un driver può creare un nuovo elenco figlio WDF usando WdfChildListCreate come descritto in Creazione di oggetti dispositivo in un driver di funzione. Per informazioni generali sugli oggetti WDF, vedere Introduzione agli oggetti Framework, architettura WDF e sviluppo di driver con Windows Driver Foundation. Per informazioni sull'inizializzazione di un dispositivo ACX, vedere AcxDeviceInitialize.

Circuito ACX

Un AcxCircuit rappresenta un percorso audio parziale o completo a un dispositivo audio percepito dall'utente (altoparlanti, microfoni e così via). Un AcxCircuit ha almeno un pin di input e un pin di output (ACXPIN) e può aggregare uno o più oggetti simili a AcxElements. Per impostazione predefinita, AcxElements è "connesso" nello stesso ordine di assembly.

Il circuito audio è il blocco predefinito principale di ACX. Nel nuovo framework ACX, un driver audio crea uno o più oggetti circuito ACX per rappresentare un percorso di dati/controllo audio parziale o completo. ACX assembla questi oggetti circuito ACX insieme per creare un percorso audio completo che rappresenta un endpoint audio. ACX è responsabile della gestione dei circuiti ACX e delle relative dipendenze. L'ordine di assemblaggio di questi circuiti può essere definito in modo statico in fase di inizializzazione o definito in modo dinamico in fase di esecuzione.

Un endpoint audio nei framework ACX è una raccolta di uno o più circuiti ACX. Ogni circuito ACX in un percorso audio multi circuito deve appartenere a uno stack di dispositivi PnP diverso. Un driver ACX può creare uno o più circuiti in fase di inizializzazione oppure creare circuiti in fase di esecuzione, come effetto collaterale di un evento esterno, ad esempio dopo aver rilevato un nuovo componente audio o perché è registrato con ACX come factory per un tipo di circuito specifico e il framework ACX ha chiesto al componente factory di creare un nuovo circuito di tale tipo (vedere Gestione circuito ACX/factory descritto più avanti in questo argomento).

  • Un AcxCircuit può avere uno o più flussi.

  • Un AcxCircuit ha una coda WDF dedicata. Per altre informazioni sulle code WDF, vedere Framework Queue Objects.For more information about WDF queue objects, see Framework Queue Objects.

Le DDI per i circuiti ACX sono descritte nell'intestazione acxcircuit.h .

ACX Pin

Proprio come in WDM Portcls driver audio e l'oggetto AcxPin rappresentano le connessioni logiche (non le connessioni fisiche) attraverso le quali i flussi di dati immettono l'adattatore dal bus di comunicazione di sistema o immettono il bus di comunicazione di sistema dalla scheda.

Le DDI per pin sono descritte nell'intestazione acxpin.h .

Flusso ACX

AcxStream rappresenta un flusso audio su hardware di un circuito specifico. Un AcxStream può aggregare uno o più oggetti simili a AcxElements. Per impostazione predefinita, AcxElements è "connesso" nello stesso ordine di assembly. Un AcxStream è associato a un solo circuito ACX.

  • Un AcxStream ha una coda WDF dedicata. Per altre informazioni sulle code WDF, vedere Framework Queue Objects
  • Un acxStream supporta stati diversi. Questi stati indicano quando l'audio scorre (stato RUN) o non scorre (stato PAUSE o STOP).
  • Attualmente ACX supporta due tipi di flussi: oggetti di flusso ACX di base usati dai circuiti non di streaming e oggetti flusso ACX RT usati dai circuiti di streaming.

Le DDI per il flusso vengono definite nell'intestazione acxstreams.h .

Destinazioni ACX

WdfIoTarget è un'astrazione WDF per facilitare la comunicazione tra due stack diversi. Per altre informazioni sulle destinazioni di I/O di WDF, vedere Introduzione alle destinazioni di I/O.

  • I driver usano AcxTargetCircuit per comunicare con un circuito remoto esposto da uno stack diverso. AcxTargetCircuit viene implementato usando un WdfIoTarget.
  • I driver usano AcxTargetPin per comunicare con il pin di un circuito remoto esposto da uno stack diverso. AcxTargetPin viene implementato usando un WdfIoTarget per inviare messaggi all'entità pin remota.
  • I driver usano AcxTargetElement per comunicare con l'elemento di un circuito remoto esposto da uno stack diverso. AcxTargetElement viene implementato usando un WdfIoTarget per inviare messaggi all'entità dell'elemento remoto.
  • I driver usano AcxTargetStream per comunicare con il flusso di un circuito remoto esposto da uno stack diverso. AcxTargetStream viene implementato usando un WdfIoTarget per creare un flusso remoto e modificare lo stato del flusso remoto.
  • I driver usano AcxTargetFactoryCircuit per comunicare con un'istanza remota della factory del circuito. AcxTargetFactoryCircuit viene implementato usando un WdfTarget per inviare messaggi alla factory del circuito remoto.

Ognuno dei tipi ACX precedenti supporta proprietà, metodi ed eventi per interagire con il circuito remoto. Tutti questi tipi sono basati sull'oggetto WdfIoTarget.

Le DDI per le destinazioni sono definite nell'intestazione acxtargets.h .

ACX Stream Bridge

L'oggetto AcxStreamBridge viene usato da un circuito per propagare la creazione di un flusso, le transizioni degli stati del flusso e le impostazioni DRM tra segmenti di circuito. Questo oggetto viene usato solo in uno scenario multi circuito (composito audio). Un driver può associare uno o più oggetti ACXSTREAMBRIDGE a un pin di bridge. Un pin di ponte è l'ACXPIN che si connette logicamente all'ACXPIN corrispondente nell'altro circuito.

Le DDI per Stream sono descritte nell'intestazione acxstreams.h .

Esempio di layout del circuito del nodo del motore audio ACX

Il diagramma seguente illustra un circuito ACX. Gli host e i pin offload sono input per il circuito con un pin di loopback che può essere usato per l'annullamento echo. L'output può essere un pin bridge che indirizza a un altoparlante.

Diagramma che illustra un circuito ACX con pin host, offload e loopback a sinistra e un segnaposto bridge a destra, instradato attraverso un nodo del motore audio.

Si noti che il driver non deve eseguire il passaggio di connessione esplicita quando il circuito o gli elementi sono connessi nello stesso ordine in cui sono stati aggiunti al circuito.

Per impostazione predefinita, ACX connette gli elementi a partire dal pin del sink di richiesta ACX del circuito e termina con il pin del bridge del dispositivo del circuito per i dispositivi di rendering e acquisizione.

Gestione ACX

Il gestore ACX viene usato per le attività di sistema, ad esempio il supporto di endpoint audio compositi. Questi tipi di endpoint vengono gestiti da uno o più stack di driver di fornitori uguali o diversi. I client possono preconfigurare questa configurazione in ACPI o usare direttamente l'DDI di ACX Manager. Le DDI per il gestore ACX sono descritte nell'intestazione acxmanager.h .

Contenitore oggetti ACX

Il contenitore di oggetti ACX viene usato per archiviare vari tipi di dati. ACXOBJECTBAG può essere passato come argomento in varie DDI. Le DDI per Object Bag sono descritte nell'intestazione acxmisc.h .

Riepilogo degli oggetti ACX

Nella tabella seguente sono elencati tutti gli oggetti ACX e vengono fornite alcune informazioni di base su ogni oggetto.

Handle Nome Scopo
ACXMANAGER The ACX Manager Oggetto ACX Manager utilizzato per gestire e controllare altri oggetti.
ACXOBJECTBAG Contenitore oggetti Utilizzato per l'archiviazione dei dati per l'uso con oggetti .
ACXEVENT ACX, evento Per gli eventi KS (kernel-streaming).
ACXEVENTDATA Dati dell'evento Dati associati a un evento.
ACXPNPEVENT Pnp, evento Per gli eventi plug and play.
ACXCIRCUIT Circuito Circuito ACX descritto in precedenza in questo argomento.
ACXPIN Aggiungi Un oggetto PIN ACX rappresenta le connessioni logiche ed è descritto in precedenza in questo argomento.
ACXELEMENT Elemento Utilizzato per rappresentare qualsiasi elemento che può essere aggiunto a un acxCircuit o a AcxStream, ad esempio AcxVolume
ACXAUDIOENGINE Motore audio Motore audio ACX usato in un circuito di rendering per rappresentare un DSP.
ACXSTREAMAUDIOENGINE Stream Audio Engine Usato in un flusso di rendering per rappresentare un provider di servizi di dominio.
ACXKEYWORDSPOTTER Spotter parola chiave Spotter di parole chiave, usato in un circuito di acquisizione per il rilevamento di parole chiave in un flusso audio.
ACXVOLUME Volume Usato per rappresentare un volume, un guadagno, una spinta.
ACXMUTE Disattiva audio Utilizzato per rappresentare un elemento disattivato.
ACXJACK Cricco Utilizzato per rappresentare un jack audio o un altro connettore fisico.
ACXMICARRAYGEOMETRY Geometria matrice di microfoni Utilizzato per rappresentare la geometria della matrice di microfoni, ad esempio la posizione dei microfoni.
ACXPEAKMETER Picco contatore Usato quando l'hardware supporta la funzionalità del contatore di picco.
ACXSTREAM Stream Usato per rappresentare un flusso audio creato da un circuito, descritto in precedenza in questo argomento.
ACXDATAFORMAT Formato dati Un formato di dati rappresenta un formato di dati supportato dal dispositivo audio.
ACXDATAFORMATLIST Elenco formato dati Elenco dei formati di dati audio disponibili per l'uso.
ACXTARGETCIRCUIT Circuito di destinazione Usato per comunicare con un circuito remoto esposto da uno stack diverso.
ACXTARGETPIN Pin di destinazione Usato per comunicare con il pin di un circuito remoto esposto da uno stack diverso.
ACXTARGETELEMENT Elemento Target Usato per rappresentare un elemento di destinazione che può essere aggiunto a un AcxCircuit o AcxStream, ad esempio AcxVolume
ACXTARGETSTREAM Flusso di destinazione Usato per comunicare con il flusso di un circuito remoto esposto da uno stack diverso.
ACXTARGETFACTORYCIRCUIT Factory del circuito di destinazione Usato per comunicare con la fabbrica di un circuito remoto.
ACXSTREAMBRIDGE Ponte di flusso Usato da un circuito per propagare la creazione di un flusso, gli stati passano e DRM tra segmenti di circuito.
ACXCOMPOSITE Composito Usato per rappresentare architetture di flusso multi-circuito/multi-stack/più fornitori.
ACXCOMPOSITEFACTORY Fabbrica composita Factory che crea circuiti audio compositi.
ACXFACTORYCIRCUIT Circuito factory Factory che crea circuiti usando un modello specifico.
ACXCIRCUITMANAGER Gestione circuiti Provider di circuiti utilizzato per la creazione dinamica del circuito.
ACXCOMPOSITETEMPLATE Modello composito Un modello composito rappresenta un binding audio parziale o completo. Un modello composito può avere uno o più modelli di circuito.
ACXCIRCUITTEMPLATE Modello di circuito Un modello di circuito rappresenta un percorso audio parziale.
ACXAUDIOMODULE Modulo audio Per l'aggiunta di funzionalità personalizzate di terze parti.

Gli oggetti ACX seguenti vengono usati per archiviare informazioni sul circuito, sul flusso e sulla factory del circuito.

Handle Scopo
ACXCIRCUIT_INIT Archivia i dati di inizializzazione del circuito ACX
ACXSTREAM_INIT Archivia i dati di inizializzazione del flusso ACX
ACXFACTORYCIRCUIT_INIT Archivia i dati di inizializzazione usati da una factory di circuiti ACX

Vedi anche

Panoramica delle estensioni della classe audio ACX

Documentazione di riferimento su ACX