Zusammenfassung der ACX-Objekte
Dieses Thema enthält eine allgemeine Zusammenfassung der ACX-Objekte (Audio Class Extensions), die die Basis eines ACX-Audiotreibers bilden. Eine allgemeine Übersicht über ACX finden Sie unter Übersicht über ACX-Audioklassenerweiterungen.
ACX-Objekte sind WDF-Objekte (Windows Driver Framework) – WDFOBJECT. Weitere Informationen zu WDF finden Sie unter Einführung in Framework-Objekte. Eine Zusammenfassung der WDF-Objekte finden Sie unter Zusammenfassung der Frameworkobjekte.
Hinweis
Die ACX-Header und -Bibliotheken sind nicht im WDK 10.0.22621.2428 (veröffentlicht am 24. Oktober 2023) enthalten, sind aber in früheren Versionen sowie in den neuesten (25000-Serienbuilds) Insider Preview des WDK verfügbar. Weitere Informationen zu Vorschauversionen des WDK finden Sie unter Installieren von Vorschauversionen des Windows Driver Kit (WDK).
ACX-Objekthierarchie
In ACX (wie in WDF) ist das Treiberobjekt das Stammobjekt, und alle anderen Objekte sind seine untergeordneten Elemente/Nachfolger. Alle ACX-Objekte sind untergeordnete Elemente des Treiberobjekts direkt oder indirekt über andere ACX- oder WDF-Objekte. Ein ACX-Treiber kann das übergeordnete Element eines ACX-Objekts während der Erstellung angeben. Wenn das übergeordnete Element nicht angegeben ist, verwendet ACX wie in diesen Abschnitten beschrieben ein übergeordnetes Standardelement.
ACX-Leitung
Ein AcxCircuit stellt einen teilweisen oder vollständigen Audiopfad zu einem vom Benutzer wahrgenommenen Audiogerät (Lautsprecher, Mikrofon usw.) dar. Ein AcxCircuit verfügt über mindestens einen Eingabe- und einen Ausgabepin (ACXPIN) und kann ein oder mehrere AcxElements-ähnliche Objekte aggregieren. AcxElements sind standardmäßig in derselben Assemblyreihenfolge "verbunden".
Die Audioschaltung ist der Kernbaustein von ACX. Im neuen ACX-Framework erstellt ein Audiotreiber mindestens ein ACX-Leitungsobjekt, das einen teilweisen oder vollständigen Audiodaten-/Steuerungspfad darstellt. ACX stellt diese ACX-Leitungsobjekte zusammen, um einen vollständigen Audiopfad zu erstellen, der einen Audioendpunkt darstellt. ACX ist für die Verwaltung der ACX-Leitungen und deren Abhängigkeiten verantwortlich. Die Reihenfolge, in der diese Leitungen zusammengesetzt werden, kann zum Zeitpunkt der Initialisierung statisch oder dynamisch zur Laufzeit definiert werden.
Ein Audioendpunkt in den ACX-Frameworks ist eine Sammlung einer oder mehrerer ACX-Leitungen. Jede ACX-Leitung in einem Audiopfad mit mehreren Schaltungen muss zu einem anderen PnP-Gerätestapel gehören. Ein ACX-Treiber kann zur Initialisierungszeit eine oder mehrere Leitungen erstellen, oder er kann Leitungen zur Laufzeit erstellen, als Nebeneffekt eines externen Ereignisses, z. B. nach dem Erkennen einer neuen Audiokomponente, oder weil er sich bei ACX als Factory für einen bestimmten Leitungstyp registriert hat, und das ACX-Framework die Factorykomponente aufgefordert hat, eine neue Leitung dieses Typs zu erstellen (siehe ACX-Leitungs-Manager/Factory weiter unten in diesem Thema beschrieben).
Ein AcxCircuit kann über einen oder mehrere Streams verfügen.
Ein AcxCircuit verfügt über eine dedizierte WDF-Warteschlange. Weitere Informationen zu WDF-Warteschlangen finden Sie unter Framework-Warteschlangenobjekte.
Die DDIs für ACX-Leitungen werden im acxcircuit.h-Header beschrieben.
ACX-Pin
Genau wie in WDM Portcls Audiotreiber, und AcxPin-Objekt stellen die logischen Verbindungen (nicht physische Verbindungen) dar, über die Datenströme vom Systemkommunikationsbus in den Adapter gelangen oder vom Adapter in den Systemkommunikationsbus gelangen.
Die DDIs für Pin werden im acxpin.h-Header beschrieben.
ACX-Stream
Ein AcxStream stellt einen Audiodatenstrom auf der Hardware einer bestimmten Schaltung dar. Ein AcxStream kann ein oder mehrere AcxElements-ähnliche Objekte aggregieren. AcxElements sind standardmäßig in derselben Assemblyreihenfolge "verbunden". Ein AcxStream ist nur einer ACX-Leitung zugeordnet.
- Ein AcxStream verfügt über eine dedizierte WDF-Warteschlange. Weitere Informationen zu WDF-Warteschlangen finden Sie unter Framework-Warteschlangenobjekte.
- Ein AcxStream unterstützt verschiedene Zustände. Diese Zustände geben an, wann Audio fließt (AUSFÜHRUNGszustand) oder nicht fließt (PAUSE- oder STOP-Status).
- Derzeit unterstützt ACX zwei Arten von Streams: grundlegende ACX-Streamobjekte, die von Nicht-Streaming-Leitungen verwendet werden, und ACX RT-Streamobjekte, die von Streamingschaltungen verwendet werden.
Die DDIs für den Stream werden im acxstreams.h-Header definiert.
ACX-Ziele
WdfIoTarget ist eine WDF-Abstraktion, um die Kommunikation zwischen zwei verschiedenen Stapeln zu erleichtern. Weitere Informationen zu WDF-E/A-Zielen finden Sie unter Einführung in E/A-Ziele.
- Treiber verwenden AcxTargetCircuit, um mit einer Remoteverbindung zu kommunizieren, die von einem anderen Stapel verfügbar gemacht wird. AcxTargetCircuit wird mithilfe eines WdfIoTarget implementiert.
- Treiber verwenden AcxTargetPin, um mit dem Pin einer Remoteschaltung zu kommunizieren, der von einem anderen Stapel verfügbar gemacht wird. AcxTargetPin wird mithilfe eines WdfIoTarget implementiert, um Nachrichten an die Remote-Pin-Entität zu senden.
- Treiber verwenden AcxTargetElement, um mit dem Element einer Remoteschaltung zu kommunizieren, das von einem anderen Stapel verfügbar gemacht wird. AcxTargetElement wird mithilfe eines WdfIoTarget implementiert, um Nachrichten an die Remoteelemententität zu senden.
- Treiber verwenden AcxTargetStream, um mit dem Stream einer Remoteschaltung zu kommunizieren, der von einem anderen Stapel verfügbar gemacht wird. AcxTargetStream wird mithilfe eines WdfIoTarget implementiert, um einen Remotestream zu erstellen und den Status des Remotestreams zu ändern.
- Treiber verwenden AcxTargetFactoryCircuit, um mit einer Remote circuit Factory instance zu kommunizieren. AcxTargetFactoryCircuit wird mithilfe eines WdfTarget implementiert, um Nachrichten an die Remoteschaltungsfactory zu senden.
Jeder der oben genannten ACX-Typen unterstützt Eigenschaften, Methoden und Ereignisse für die Interaktion mit der Remoteverbindung. Alle diese Typen basieren auf dem WdfIoTarget-Objekt.
Die DDIs für Ziele werden im acxtargets.h-Header definiert.
ACX Stream Bridge
Das AcxStreamBridge-Objekt wird von einer Verbindung verwendet, um eine Datenstromerstellung, die Statusübergänge des Streams und DRM-Einstellungen zwischen Leitungssegmenten zu verteilen. Dieses Objekt wird nur in einem Szenario mit mehreren Schaltungen (Audio-Verbund) verwendet. Ein Treiber kann einem Brückenstift ein oder mehrere ACXSTREAMBRIDGE-Objekte zuordnen. Ein Bridge-Pin ist der ACXPIN, der logisch eine Verbindung mit dem acxpininging auf der anderen Verbindung herstellt.
Die DDIs für Stream werden im acxstreams.h-Header beschrieben.
Beispiel für das Leitungslayout des ACX-Audiomodulknotens
Das folgende Diagramm veranschaulicht eine ACX-Verbindung. Host- und Auslagerungspins sind Eingaben an die Leitung mit einem Loopback-Pin, der für den Echoabbruch verwendet werden kann. Die Ausgabe kann ein Bridge-Pin sein, der an einen Lautsprecher weitergeleitet wird.
Beachten Sie, dass der Treiber den Schritt der expliziten Verbindung nicht ausführen muss, wenn Schaltungen/Elemente in derselben Reihenfolge verbunden sind, in der sie der Leitung hinzugefügt wurden.
Standardmäßig verbindet ACX die Elemente beginnend mit der ACX-Anforderungssenke der Leitung und endet mit dem Geräte-Bridge-Pin der Verbindung für Render- und Aufzeichnungsgeräte.
ACX-Manager
Der ACX-Manager wird für Systemaufgaben wie die Unterstützung zusammengesetzter Audioendpunkte verwendet. Diese Arten von Endpunkten werden von einem oder mehreren Treiberstapeln von demselben oder unterschiedlichen Anbietern verwaltet. Clients können diese Konfiguration in ACPI vorkonfiguriert oder den DDI des ACX-Managers direkt verwenden. Die DDIs für den ACX-Manager werden im acxmanager.h-Header beschrieben.
ACX-Objektbehälter
Der ACX-Objektbehälter wird verwendet, um verschiedene Datentypen zu speichern. ACXOBJECTBAG kann in verschiedenen DDIs als Argument übergeben werden. Die DDIs für Object Bag werden im acxmisc.h-Header beschrieben.
ACX-Objektzusammenfassung
Die folgende Tabelle enthält alle ACX-Objekte und enthält einige grundlegende Informationen zu den einzelnen Objekten.
Handle | Name | Zweck |
---|---|---|
ACXMANAGER | Der ACX-Manager | ACX-Manager-Objekt, das zum Verwalten und Steuern anderer Objekte verwendet wird. |
ACXOBJECTBAG | Objektbehälter | Wird zum Speichern von Daten zur Verwendung mit -Objekten verwendet. |
ACXEVENT | ACX-Ereignis | Für KS-Ereignisse (Kernelstreaming). |
ACXEVENTDATA | Ereignisdaten | Die einem Ereignis zugeordneten Daten. |
ACXPNPEVENT | Pnp-Ereignis | Für Plug-and-Play-Ereignisse. |
ACXCIRCUIT | Leitung | Eine ACX-Leitung, die oben in diesem Thema beschrieben wurde. |
ACXPIN | Pin | Ein ACX-Pinobjekt stellt die logischen Verbindungen dar und wird oben in diesem Thema beschrieben. |
ACXELEMENT | Element | Wird verwendet, um ein beliebiges Element darzustellen, das einem AcxCircuit oder AcxStream hinzugefügt werden kann, z. B. AcxVolume |
ACXAUDIOENGINE | Audio-Engine | Die ACX-Audio-Engine, die in einer Renderschaltung verwendet wird, um einen DSP darzustellen. |
ACXSTREAMAUDIOENGINE | Stream Audio Engine | Wird in einem Renderdatenstrom verwendet, um einen DSP darzustellen. |
ACXKEYWORDSPOTTER | Key word spotter | Ein Schlüsselwort (keyword)-Spotter, der in einer Aufzeichnungsschaltung für Schlüsselwort (keyword) Erkennung in einem Audiostream verwendet wird. |
ACXVOLUME | Volume | Wird verwendet, um ein Volume, eine Verstärkung, eine Verstärkung darzustellen. |
ACXMUTE | Mute | Wird verwendet, um ein Stummschaltungselement darzustellen. |
ACXJACK | Jack | Wird verwendet, um eine Audiobuchse oder einen anderen physischen Anschluss darzustellen. |
ACXMICARRAYGEOMETRY | Mikrofonarraygeometrie | Wird verwendet, um die Mikrofonarraygeometrie darzustellen, z. B. die Position der Mikrofone. |
ACXPEAKMETER | Peak Meter | Wird verwendet, wenn Hardware Spitzenzählerfunktionen unterstützt. |
ACXSTREAM | STREAM | Wird verwendet, um einen audiostream darzustellen, der von einer Verbindung erstellt wurde, die oben in diesem Thema beschrieben wird. |
ACXDATAFORMAT | Datenformat | Ein Datenformat stellt ein vom Audiogerät unterstütztes Datenformat dar. |
ACXDATAFORMATLIST | Datenformatliste | Eine Liste der verfügbaren Audiodatenformate. |
ACXTARGETCIRCUIT | Zielleitung | Wird für die Kommunikation mit einer remoten Verbindung verwendet, die von einem anderen Stapel verfügbar gemacht wird. |
ACXTARGETPIN | Zielnadel | Wird verwendet, um mit dem Pin einer Remoteschaltung zu kommunizieren, der von einem anderen Stapel verfügbar gemacht wird. |
ACXTARGETELEMENT | Target-Element | Wird verwendet, um ein Zielelement darzustellen, das einem AcxCircuit oder AcxStream hinzugefügt werden kann, z. B. AcxVolume |
ACXTARGETSTREAM | Zielstream | Wird verwendet, um mit dem Stream einer Remoteschaltung zu kommunizieren, der von einem anderen Stapel verfügbar gemacht wird. |
ACXTARGETFACTORYCIRCUIT | Target Circuit Factory | Wird für die Kommunikation mit dem Werk einer Remoteschaltung verwendet. |
ACXSTREAMBRIDGE | Stream Bridge | Wird von einer Leitung verwendet, um eine Streamerstellung, Statusübergänge und DRM zwischen Leitungssegmenten zu verteilen. |
ACXCOMPOSITE | Composite | Wird verwendet, um Datenstromarchitekturen mit mehreren Schaltungen/Multi-Stack/mehreren Anbietern darzustellen. |
ACXCOMPOSITEFACTORY | Composite Factory | Eine Factory, die zusammengesetzte Audioschaltungen erstellt. |
ACXFACTORYCIRCUIT | Factory-Leitung | Eine Factory, die Mithilfe einer bestimmten Vorlage Leitungen erstellt. |
ACXCIRCUITMANAGER | Leitungs-Manager | Ein Leitungsanbieter, der für die dynamische Leitungserstellung verwendet wird. |
ACXCOMPOSITETEMPLATE | Zusammengesetzte Vorlage | Eine zusammengesetzte Vorlage stellt eine partielle oder vollständige Audiobindung dar. Eine zusammengesetzte Vorlage kann eine oder mehrere Leitungsvorlagen aufweisen. |
ACXCIRCUITTEMPLATE | Leitungsvorlage | Eine Leitungsvorlage stellt einen partiellen Audiopfad dar. |
ACXAUDIOMODULE | Audiomodul | Für benutzerdefinierte Drittanbieterfunktionen hinzufügen. |
Die folgenden ACX-Objekte werden verwendet, um Informationen zur Leitungs-, Stream- und Leitungsfabrik zu speichern.
Handle | Zweck |
---|---|
ACXCIRCUIT_INIT | Speichert ACX-Leitungsinitialisierungsdaten |
ACXSTREAM_INIT | Speichert ACX-Streaminitialisierungsdaten |
ACXFACTORYCIRCUIT_INIT | Speichert Initialisierungsdaten, die von einer ACX-Leitungsfabrik verwendet werden |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für