Condividi tramite


Panoramica delle estensioni della classe audio ACX

In questo argomento viene fornito un riepilogo generale delle estensioni della classe audio ACX.

Il framework ACX si basa su Windows Driver Framework

Per consentire ai driver audio di essere più affidabili e offrire la migliore esperienza possibile per gli utenti del PC, Audio Class eXtension (ACX) è ora disponibile. ACX definisce un'estensione di classe Windows Driver Framework (WDF) per il dominio audio. Per ulteriori informazioni su WDF, vedere Introduzione agli oggetti del framework. Molti concetti di WDF, ad esempio le destinazioni di I/O di WDF, sono disponibili in ACX. Per altre informazioni sulle destinazioni di I/O di WDF, vedere Introduzione alle destinazioni di I/O.

ACX viene compilato usando kernel Mode Driver Framework (KMDF) e non UMDF (User Mode Driver Framework) per evitare qualsiasi latenza associata al passaggio di attività più volte dalla modalità Utente alla modalità Kernel durante lo streaming. I driver audio Portcls, il modello legacy corrente, sono driver WDM in modalità kernel.

L'uso del framework ACX rende semplice la creazione di driver audio pronti all'uso. Ad esempio, ACX supporta il completamento predefinito per la maggior parte delle impostazioni. Ciò rende più semplice per il driver usare l'impostazione corretta, ma consente comunque la personalizzazione.

Il framework ACX espone i concetti audio come oggetti WDF con cui il driver può interagire (flusso, formato e così via). Ciò consente un'esperienza di programmazione coerente e consente una community più ampia di sviluppatori di driver audio.

Obiettivi ACX

Le estensioni della classe audio (ACX) hanno gli obiettivi seguenti.

  • Semplificare lo sforzo e il know-how necessari per sviluppare semplici driver audio autonomi.
  • Ridurre la quantità di codice che deve essere sviluppata da un'entità di terze parti. Un minor numero di righe di codice riduce la manutenzione e semplifica il debug.
  • Consente l'esecuzione dei client in modalità utente superiore (servizi e app) esistenti così come sono.
  • Semplificare la gestione power-pnp dei driver dello stack audio.
  • Nessun impatto sulle prestazioni complessive, ovvero nessuna latenza aggiuntiva/evidente.
  • Semplificare lo sforzo necessario per sviluppare driver audio multi stack.
  • Consenti al driver di terze parti di specificare il meccanismo di blocco da usare durante lo streaming.
  • Usa la soluzione di isolamento della distribuzione dei componenti Microsoft che rende i moduli driver/API indipendenti e riutilizzabili.

Architettura ACX

Questo diagramma illustra l'architettura ACX che mostra le app in modalità utente e gli oggetti ACX esistenti in modalità kernel e hardware audio nella parte inferiore dello stack. Oltre agli oggetti ACX, lo sviluppatore di driver ha accesso agli oggetti WDF per sfruttare i vantaggi del codice driver, ad esempio per il risparmio energia.

Diagramma che illustra l'architettura ACX, che mostra la modalità utente e kernel con oggetti WDF e ACX in modalità kernel e hardware audio nella parte inferiore dello stack.

Coesistenza ACX con driver audio esistenti

ACX è progettato per coesistere con driver audio esistenti, per consentire una migrazione flessibile ai nuovi driver ACX.

  • La compatibilità binaria dei driver miniport audio (senza modifiche), basati su WDM, è mantenuta dai driver di classe Windows legacy esistenti.
  • Solo lo streaming basato su WaveRT è attualmente supportato da ACX.
  • I stack legacy PortCls/Ks e i nuovi stack ACX funzionano fianco a fianco. L'uso di ACX non impone alla terza parte di convertire i driver audio correnti nel nuovo modello. Poiché il modello offre molti vantaggi, le terze parti possono scegliere volontariamente di usarlo per il loro futuro sviluppo audio.

Definizioni comuni ACX

Circuito : componente driver che rappresenta un percorso audio parziale o completo. Il circuito rappresenta un endpoint esistente e le relative funzionalità.

Stream : componente driver creato per rappresentare un flusso audio, creato da un circuito. Il flusso è costituito da un elenco di elementi creati in base agli elementi del circuito padre.

Stream Circuit: il circuito in un'architettura multi-stack (percorso audio parziale) che si interfaccia direttamente con il servizio di streaming in modalità utente superiore.

Circuito principale: circuito in un'architettura multi stack (percorso audio parziale) che fornisce l'identità del dispositivo endpoint audio.

Elemento : sottocomponente di un circuito o di un flusso che rappresenta una funzionalità audio dell'hardware sottolineato. Può trattarsi di un elemento Volume, Mute o Jack o di un elemento Module in un circuito DSP e così via.

Percorso audio dell'endpoint - Un singolo oggetto o un gruppo di oggetti di circuito connessi insieme per rappresentare un unico endpoint audio. Gli oggetti Circuit devono provenire da diversi stack di dispositivi appartenenti agli stessi driver o a driver diversi.

Riepilogo degli oggetti ACX

Per un riepilogo degli oggetti ACX di base, vedere Riepilogo degli oggetti ACX.

Driver ACX di esempio

Un semplice driver di esempio ACX è disponibile per visualizzare e scaricare in GitHub nel ramo develop - https://github.com/microsoft/Windows-driver-samples/tree/main/audio/Acx/Samples.

Verificatore di Driver

L'uso del verificatore di driver è incoraggiato per tutti i driver Windows, inclusi i driver ACX. Usare il verificatore driver per individuare errori latenti, ridurre il consumo di energia e aumentare l'affidabilità del driver. Per altre informazioni, vedere Driver Verifier.

Comunicazioni incrociate standardizzate del driver multi stack ACX

È comune che il percorso audio attraversi più componenti hardware gestiti da diversi stack di driver per creare un'esperienza audio completa. È tipico che un sistema disponga della funzionalità DSP, CODEC e AMP implementata da diversi fornitori di tecnologie audio.

In un'architettura multi stack senza uno standard ben definito, ogni fornitore è costretto a definire la propria interfaccia proprietaria e il protocollo di comunicazione. L'obiettivo di ACX è facilitare lo sviluppo di driver audio multi stack prendendo la proprietà della sincronizzazione tra questi stack e fornendo un semplice modello utilizzabile per i driver che comunicano tra loro.

Per ulteriori informazioni, vedere Comunicazioni multi stack cross driver ACX.

Documentazione di riferimento su ACX

Per informazioni sulla documentazione di riferimento ACX a livello di intestazione, vedere la documentazione di riferimento di ACX.

Vedi anche

Riepilogo degli oggetti ACX

Documentazione di riferimento su ACX

Informazioni sulla versione di ACX

Registrazione e debug di ACX

Obiettivi ACX e sincronizzazione dei driver

Pacchetti di richiesta IRP di I/O ACX

Enumerazione del dispositivo ACX

Gestione energia ACX

Comunicazioni tra driver multi stack ACX

Streaming ACX