Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der HD Audio DDI ist in drei leicht unterschiedlichen Versionen verfügbar, die wie folgt definiert sind:
Eine Basisversion von HD Audio DDI, die durch die HDAUDIO_BUS_INTERFACE-Struktur definiert wird. Die meisten Funktionstreiber für Audio- und Modemcodecs erfordern nur die Funktionen, die diese DDI-Version bietet. Diese Version ist über die HD Audio Bus-Treiber verfügbar, die mit Windows XP und Windows Vista bereitgestellt werden.
Eine erweiterte Version von HD Audio DDI, die durch die HDAUDIO_BUS_INTERFACE_V2-Struktur definiert wird. Diese Version des DDI bietet die zusätzlichen Funktionen, die erforderlich sind, um DMA-gesteuerte Ereignisbenachrichtigungen flexibel zu unterstützen. Es ist in Windows Vista und höheren Versionen von Windows verfügbar.
Eine geänderte Version von HD Audio DDI, die durch die HDAUDIO_BUS_INTERFACE_BDL-Struktur definiert wird. Diese Version erfüllt die Anforderungen von relativ wenigen Audio- und Modemtreibern, die zusätzliche Kontrolle über die Einrichtung von Pufferdeskriptorlisten (BDLs) für DMA-Vorgänge haben müssen. Diese Version des DDI ist für Windows XP und höhere Versionen von Windows verfügbar. Verwenden Sie jedoch stattdessen entweder die HDAUDIO_BUS_INTERFACE oder die HDAUDIO_BUS_INTERFACE_V2 DDI-Version. .
In allen drei Strukturen stimmen die Namen und Typen der ersten fünf Member mit denen der fünf Member der INTERFACE-Struktur überein. Informationen zu den Werten dieser Member finden Sie unter Abrufen eines HDAUDIO_BUS_INTERFACE DDI-Objekts, Abrufen eines HDAUDIO_BUS_INTERFACE_V2 DDI-Objekts oder Abrufen eines HDAUDIO_BUS_INTERFACE_BDL DDI-Objekts.
Die Routinen in den drei Versionen von HD Audio DDI führen die folgenden Aufgaben aus:
Übertragen Sie Befehle an Codecs, und rufen Sie die Antworten auf diese Befehle ab.
Ordnen Sie DMA-Engines zu, und richten Sie sie ein, um die Daten in Render- und Erfassungsdatenströmen zu übertragen.
Ändern Sie den Streamstatus einer oder mehrerer DMA-Engines in wird ausgeführt, angehalten, beendet oder zurückgesetzt.
Reservierte Linkbandbreite für Render- und Aufzeichnungsstreams.
Bieten Sie direkten Zugriff auf das Wanduhrregister und verknüpfen Sie Positionsregister.
Benachrichtigen Sie Clients über unerwünschte Antworten von Codecs.
Registrieren Sie Kernelereignisse, damit sie DMA-Statusbenachrichtigungen empfangen können.
Die HDAUDIO_BUS_INTERFACE- und HDAUDIO_BUS_INTERFACE_BDL-Versionen des DDI weisen die folgenden Unterschiede auf:
Die HDAUDIO_BUS_INTERFACE-Struktur definiert zwei Routinen, AllocateDmaBuffer und FreeDmaBuffer, die in HDAUDIO_BUS_INTERFACE_BDL nicht vorhanden sind.
Die HDAUDIO_BUS_INTERFACE_BDL-Struktur definiert die drei Routinen SetupDmaEngineWithBdl, AllocateContiguousDmaBuffer und FreeContiguousDmaBuffer, die in HDAUDIO_BUS_INTERFACE nicht vorhanden sind.
Wenn ein Client die AllocateDmaBuffer-Routine in der ersten DDI-Version aufruft, führt der HD-Audiobustreiber folgendes aus:
Ordnet einen DMA-Puffer und eine BDL für eine zu verwendende DMA-Engine zu.
Initialisiert die BDL.
Richtet die DMA-Engine für die Verwendung des Puffers und der BDL ein.
Im Gegensatz dazu weist die AllocateContiguousDmaBuffer-Routine in der zweiten DDI-Version Speicher für einen DMA-Puffer und eine BDL zu, basiert jedoch auf dem Aufrufer, um die BDL zu initialisieren. Die SetupDmaEngineWithBdl-Routine richtet die DMA-Engine ein, um den Puffer und die vom Aufrufer initialisierte BDL zu verwenden.
Die BDL enthält die Liste der physischen Speicherblöcke in der Scatter/Gather-Warteschlange der DMA-Engine. Durch Aufrufen von SetupDmaEngineWithBdl zum Einrichten der BDL kann der Client die Punkte im Datenstrom angeben, an denen die DMA-Engine Interrupts generiert. Dazu legt der Client das Interrupt-On-Completion-Bit (IOC) in ausgewählten BDL-Einträgen fest. Mit dieser Funktion kann der Client den Zeitpunkt der IOC-Unterbrechungen, die während der Verarbeitung des Audiostreams auftreten, präzise steuern. Audiomodemtreiber verwenden auch die zweite DDI-Version, um genaue Systemuhrinformationen zu erhalten.
Weitere Informationen finden Sie in der Intel High Definition Audio-Spezifikation.
Fast alle Clients verwenden jedoch die HDAUDIO_BUS_INTERFACE Version des DDI. Nur wenige Clients, die eine präzise Kontrolle über das Timing von Interrupts benötigen, verwenden die HDAUDIO_BUS_INTERFACE_BDL Version.