Condividi tramite


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'DDI audio HD definita dalla struttura HDAUDIO_BUS_INTERFACE_V2 . Questa versione di DDI offre la funzionalità aggiuntiva necessaria per supportare la notifica degli eventi guidata da DMA con flessibilità. È disponibile in Windows Vista e versioni successive di Windows.

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

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 Recupero di un oggetto DDI HDAUDIO_BUS_INTERFACE, Recupero di un oggetto DDI HDAUDIO_BUS_INTERFACE_V2 o Recupero di 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 motori DMA per trasferire i dati nei flussi di rendering e acquisizione.

  • Modificare lo stato del flusso di uno o più motori DMA in attivo, sospeso, arrestato o reimpostato.

  • Riservare la larghezza di banda dei collegamenti per i flussi di rendering e acquisizione.

  • Fornire l'accesso diretto al registro dell'orologio di sistema e ai registri di posizione dei link.

  • Notificare ai client 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 versione iniziale del DDI, il driver del bus audio HD:

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

  • Inizializza il BDL.

  • Configura il motore DMA per usare il buffer e 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 BDL, il client può specificare i punti del 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. Grazie a 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 Intel High Definition Audio.

Tuttavia, quasi tutti i client useranno la versione HDAUDIO_BUS_INTERFACE dell'DDI. Solo alcuni client che richiedono un controllo preciso sulla tempistica degli interrupt useranno la versione HDAUDIO_BUS_INTERFACE_BDL.