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, l'eXtensione della classe audio (ACX) è ora disponibile in. ACX definisce un'estensione di classe Windows Driver Framework (WDF) per il dominio audio. Per altre informazioni su WDF, vedere Introduzione agli oggetti 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 basati sulla modalità kernel WDM.

L'uso del framework ACX semplifica la creazione di driver audio funzionanti "predefiniti". 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 basati su WDM (senza modifiche) viene mantenuta dai driver di classe Windows legacy esistenti.
  • Solo lo streaming basato su WaveRT è attualmente supportato da ACX.
  • Le porte legacyCls/Ks e i nuovi stack ACX vengono eseguiti side-by-side. 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.

Circuito di flusso: 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 o gruppo di oggetti Circuit connessi insieme per rappresentare un singolo 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/develop/audio/Acx/Samples.

Driver Verifier

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 altre informazioni, vedere Comunicazioni tra driver multi stack 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

Destinazioni ACX e sincronizzazione driver

IRP della richiesta di I/O ACX

Enumerazione del dispositivo ACX

Risparmio energia ACX

Comunicazioni tra driver multi stack ACX

Streaming ACX