Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
La struttura HDAUDIO_BUS_INTERFACE definisce due routine, AllocateDmaBuffer e FreeDmaBuffer, che non sono presenti in HDAUDIO_BUS_INTERFACE_BDL.
La struttura HDAUDIO_BUS_INTERFACE_BDL definisce tre routine, SetupDmaEngineWithBdl, AllocateContiguousDmaBuffer e FreeContiguousDmaBuffer, che non sono presenti in HDAUDIO_BUS_INTERFACE.
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.