Übersicht über ACX-Audioklassenerweiterungen
Dieses Thema bietet eine allgemeine Zusammenfassung zu den ACX-Audioklassenerweiterungen.
Das ACX-Framework basiert auf dem Windows Driver Framework
Damit Audiotreiber zuverlässiger sind und die bestmögliche Erfahrung für PC-Benutzer bieten können, ist die Audio Class eXtension (ACX) jetzt verfügbar. ACX definiert eine Windows Driver Framework-Klassenerweiterung (WDF) für die Audiodomäne. Weitere Informationen zu WDF finden Sie in Einführung in Framework-Objekte. Viele WDF-Konzepte wie WDF-E/A-Ziele sind in ACX verfügbar. Weitere Informationen zu WDF-E/A-Zielen finden Sie in Einführung in E/A-Ziele.
ACX wird mit dem Kernel Mode Driver Framework (KMDF) und nicht mit dem User Mode Driver Framework (UMDF) erstellt, um zu vermeiden, dass während des Streamings beim Wechsel zwischen dem Benutzer und Kernel mehrfach Latenzen auftreten PortclsAudiotreiber – das aktuelle Legacy-Modell – sind WDM-Treiber, die auf dem Kernel-Modus basieren.
Die Verwendung des ACX-Frameworks erleichtert das Erstellen von funktionierenden einsatzbereiten Audiotreibern. Beispielsweise unterstützt ACX den Standardabschluss für die meisten seiner Einstellungen. Dies erleichtert es dem Treiber, die richtige Einstellung zu verwenden, ermöglicht aber dennoch eine individuelle Anpassung.
Das ACX-Framework macht Audiokonzepte als WDF-Objekte verfügbar, mit denen der Treiber interagieren kann (Stream, Format usw.). Dies ermöglicht eine konsistente Programmierung und die eine größere Community von Audiotreiberentwicklern.
ACX-Ziele
Die Audioklassenerweiterungen (ACX) haben die folgenden Ziele.
- Vereinfachen des Aufwands und des Know-how, das für die Entwicklung einfacher, eigenständiger Audiotreiber erforderlich ist.
- Verringern der Menge an Code, den ein Drittanbieter entwickeln muss. Weniger Codezeilen verringern den Wartungsaufwand und erleichtern die Fehlersuche.
- Ermöglicht, dass vorhandene Clients im oberen Benutzermodus (Dienste und Anwendungen) unverändert ausgeführt werden können.
- Vereinfachen der Power-pnp-Verwaltung der Audiostapeltreiber.
- Keine Auswirkungen auf die Gesamtleistung, d.h. keine zusätzliche/spürbare Latenz.
- Vereinfachen des Aufwands für die Entwicklung von Audiotreibern mit mehreren Stacks.
- Zulassen, dass Drittanbietertreiber den Sperrmechanismus angeben, der beim Streaming verwendet werden soll.
- Verwendet die Lösung für die Bereitstellung von Microsoft-Komponenten, die Treiber/APOs-Module eigenständig und wiederverwendbar macht.
ACX-Architektur
Dieses Diagramm veranschaulicht die ACX-Architektur mit den vorhandenen Benutzermodus-Apps und ACX-Objekten im Kernelmodus und Audiohardware am unteren Rand des Stapels. Zusätzlich zu den ACX-Objekten hat der Treiberentwickler Zugriff auf die WDF-Objekte, um die Vorteile in ihrem Treibercode zu nutzen, beispielsweise für die Energieverwaltung.
ACX-Koexistenz mit vorhandenen Audiotreibern
ACX ist so konzipiert, dass es mit vorhandenen Audiotreibern gemeinsam vorhanden ist, um eine flexible Migration zu neuen ACX-Treibern zu ermöglichen.
- Die Binärkompatibilität von bestehenden, unveränderten (WDM-basierten) Audio-Video-Miniporttreibern wird durch die bestehenden Windows-Treiber aufrechterhalten.
- Nur WaveRT-basiertes Streaming wird derzeit von ACX unterstützt.
- Ältere PortCls/Ks und neue ACX-Stacks werden nebeneinander ausgeführt. Die Verwendung von ACX zwingt Drittanbieter nicht dazu, ihre aktuellen Audiotreiber auf das neue Modell zu portieren. Da das Modell viele Vorteile bietet, können sich Drittanbieter freiwillig dafür entscheiden, es für ihre zukünftige Audioentwicklung zu verwenden.
Allgemeine ACX-Definitionen
Schaltkreis – Eine Treiberkomponente, die einen teilweisen oder vollständigen Audiopfad darstellt. Der Schaltkreis stellt einen vorhandenen Endpunkt und seine Funktionen dar.
Datenstrom – Eine Treiberkomponente, die einen Audiodatenstrom darstellt, der von einem Schaltkreis erstellt wird. Der Datenstrom besteht aus einer Liste von Elementen, die basierend auf den Elementen des übergeordneten Schaltkreises erstellt wurden.
Datenstromschaltkreis – der Schaltkreis in einer Multi-Stack-Architektur (partieller Audiopfad), der direkt mit dem oberen User-Mode-Streaming-Dienst verbunden ist.
Kernschaltkreis – der Schaltkreis in einer Multi-Stack-Architektur (partieller Audiopfad), der die Identität des Audioendpunktgeräts angibt.
Element – Eine Unterkomponente eines Schaltkreises oder Datenstroms, die eine Audiofunktion der zugrunde liegenden Hardware darstellt. Dies könnte ein Lautstärke-, Stummschaltungs- oder Klinkenelement oder ein Modulelement usw. in einem DSP-Schaltkreis sein.
Endpunktaudiopfad – Eine einzelne oder eine Gruppe von Schaltkreisobjekten, die miteinander verbunden sind, um einen einzelnen Audioendpunkt darzustellen. Die Schaltkreisobjekte müssen aus verschiedenen Geräte-Stacks stammen, die zu denselben oder unterschiedlichen Treibern gehören.
Zusammenfassung von ACX-Objekten
Eine Zusammenfassung der ACX-Basisobjekte finden Sie in Zusammenfassung der ACX-Objekte.
ACX-Beispieltreiber
Ein einfacher ACX-Beispieltreiber steht zum Anzeigen und Herunterladen auf GitHub im Develop Branch zur Verfügung: https://github.com/microsoft/Windows-driver-samples/tree/main/audio/Acx/Samples.
Driver Verifier
Die Verwendung der Treiberüberprüfung wird für alle Windows-Treiber empfohlen, einschließlich ACX-Treibern. Verwenden Sie die Treiberüberprüfung, um latente Fehler anzuzeigen, den Stromverbrauch zu verringern und die Zuverlässigkeit Ihres Treibers zu erhöhen. Weitere Informationen finden Sie unter Treiberüberprüfung.
Standardisierte Treiberübergreifende ACX Multi-Stack-Kommunikationen
Es ist üblich, dass der Audiopfad mehrere Hardwarekomponenten durchläuft, die von verschiedenen Treiberstapeln behandelt werden, um eine vollständige Audioumgebung zu erstellen. In der REgel hat ein System die DSP-, CODEC- und AMP-Funktionalität von verschiedenen Audiotechnologieanbietern implementiert.
In einer Multi-Stack-Architektur ohne einen klar definierten Standard ist jeder Anbieter gezwungen, sein eigenes proprietäres Schnittstellen- und Kommunikationsprotokoll zu definieren. Es ist ein Ziel von ACX, die Entwicklung von Multi-Stack-Audiotreibern zu erleichtern, indem die Synchronisierung zwischen diesen Stacks übernommen und ein einfaches wiederverwendbares Muster für Treiber miteinander kommuniziert wird.
Weitere Informationen finden Sie unter Treiberübergreifende ACX Multi-Stack-Kommunikationen.
Referenzdokumentation zur ACX
Informationen zur ACX-Referenzdokumentation auf Kopfzeilenebene finden Sie in der ACX-Referenzdokumentation.
Siehe auch
Zusammenfassung von ACX-Objekten
ACD-Protokollierung und -Debugging
ACX-Ziele und Treibersynchronisierung
ACX-IO-Anforderungspaket (IRPs)