Differenze tra le versioni DDI audio HD

Hd Audio DDI è disponibile in tre versioni leggermente diverse definite come segue:

  • Versione di base di HD Audio DDI, definita dalla struttura HDAUDIO_BUS_INTERFACE . La maggior parte dei driver di funzione per codec audio e modem richiede solo le funzionalità offerte da questa versione DDI. Questa versione è disponibile tramite i driver del bus audio HD forniti con Windows XP e Windows Vista.

  • Versione avanzata dell'HD Audio DDI definita dalla struttura HDAUDIO_BUS_INTERFACE_V2 . Questa versione di DDI offre la funzionalità aggiuntiva necessaria per supportare la notifica degli eventi basata su DMA con flessibilità. È disponibile in Windows Vista e versioni successive di Windows.

  • Versione modificata di HD Audio DDI definita dalla struttura HDAUDIO_BUS_INTERFACE_BDL . Questa versione supporta i requisiti di un numero relativamente ridotto di driver audio e modem che devono avere un controllo aggiuntivo sulla configurazione degli elenchi di descrittori di buffer (BDLs) per le operazioni DMA. Questa versione di DDI è disponibile per Windows XP e versioni successive di Windows. Tuttavia, usare il HDAUDIO_BUS_INTERFACE o la versione HDAUDIO_BUS_INTERFACE_V2 DDI. .

In tutte e tre le strutture, i nomi e i tipi dei primi cinque membri corrispondono a quelli dei cinque membri della struttura INTERFACE . Per informazioni sui valori di questi membri, vedere Ottenere un oggetto DDI HDAUDIO_BUS_INTERFACE, Ottenere un oggetto DDI HDAUDIO_BUS_INTERFACE_V2 o ottenere un oggetto DDI HDAUDIO_BUS_INTERFACE_BDL.

Le routine nelle tre versioni di HD Audio DDI eseguono le attività seguenti:

  • Trasferire i comandi ai codec e recuperare le risposte a tali comandi.

  • Allocare e configurare i motori DMA per trasferire i dati nei flussi di rendering e acquisizione.

  • Modificare lo stato del flusso di uno o più motori DMA in esecuzione, sospesi, arrestati o reimpostati.

  • Riservare la larghezza di banda del collegamento per i flussi di rendering e acquisizione.

  • Fornire l'accesso diretto ai registri di registrazione e alla posizione del collegamento del muro.

  • Notificare ai client le risposte non richieste dai codec.

  • Registrare gli eventi del kernel in modo che possano ricevere notifiche di stato DMA.

Le versioni HDAUDIO_BUS_INTERFACE e HDAUDIO_BUS_INTERFACE_BDL dell'DDI presentano le differenze seguenti:

Quando un client chiama la routine AllocateDmaBuffer nella prima versione DDI, il driver del bus audio HD:

  • Alloca un buffer DMA e un BDL per un motore DMA da usare.

  • Inizializza il file BDL.

  • Configura il motore DMA per l'uso del buffer e del BDL.

Al contrario, la routine AllocateContiguousDmaBuffer nella seconda versione DDI alloca l'archiviazione per un buffer DMA e BDL, ma si basa sul chiamante per inizializzare il file BDL. La routine SetupDmaEngineWithBdl configura il motore DMA per l'uso del buffer e del BDL inizializzato dal chiamante.

Il file BDL contiene l'elenco dei blocchi di memoria fisica nella coda di dispersione/raccolta del motore DMA. Chiamando SetupDmaEngineWithBdl per configurare il file BDL, il client può specificare i punti nel flusso di dati in cui il motore DMA genera interrupt. Il client esegue questa operazione impostando il bit di interrupt-on-completion (IOC) nelle voci BDL selezionate. Con questa funzionalità, il client può controllare con precisione la tempistica degli interrupt IOC che si verificano durante l'elaborazione del flusso audio. I driver modem audio usano anche la seconda versione DDI per ottenere informazioni accurate sull'orologio di sistema.

Per altre informazioni, vedere La specifica audio intel ad alta definizione.

Tuttavia, quasi tutti i client useranno la versione HDAUDIO_BUS_INTERFACE dell'DDI. Solo alcuni client che richiedono un controllo preciso sull'intervallo di interruzioni useranno la versione HDAUDIO_BUS_INTERFACE_BDL.