Freigeben über


Zusammenfassung von ACX-Objekten

Dieses Thema enthält eine allgemeine Zusammenfassung von ACX-Objekten (Audio Class Extensions), die die Basis eines ACX-Audiotreibers bilden. Eine allgemeine Übersicht über ACX finden Sie in der Übersicht über ACX-Audioklassenerweiterungen.

ACX-Objekte sind Windows Driver Framework (WDF)-Objekte – WDFOBJECT. Weitere Informationen zu WDF finden Sie in der Einführung in Framework-Objekte. Eine Zusammenfassung der WDF-Objekte finden Sie in der Zusammenfassung von Framework-Objekten.

ACX-Objekthierarchie

In ACX (wie in WDF) ist das Treiberobjekt das Stammobjekt, und alle anderen Objekte sind untergeordnete Objekte/Nachfolger. Alle ACX-Objekte sind untergeordnete Objekte des Treiberobjekts, direkt oder indirekt durch andere ACX- oder WDF-Objekte. Ein ACX-Treiber kann das übergeordnete Element eines ACX-Objekts während des Erstellungsprozesses angeben. Wenn das übergeordnete Element nicht angegeben ist, verwendet ACX ein Standard-übergeordnetes Element, wie in diesen Abschnitten beschrieben.

Diagramm, das die Hierarchie von ACX-Objekten veranschaulicht, wobei WDFDEVICE oben und haupt-ACX-Objekte wie Schaltkreis und Datenstrom darunter angezeigt werden.

Erstellen von ACX-freien WDF-Objekten

Zusätzlich zu ACX-Objekten kann ein Audiotreiber bei Bedarf andere WDF-Objekte erstellen und verwenden. Wenn ein Treiber plant, Nicht-ACX-Geräte aufzulisten, sollte er dafür eine andere untergeordnete Liste als die standardmäßige untergeordnete WDF-Liste verwenden, die beim Erstellen eines ACX/WDF-Geräts erstellt wird. Ein Treiber kann eine neue untergeordnete WDF-Liste mit WdfChildListCreate erstellen, wie in der Erstellung von Geräteobjekten in einem Funktionstreiber beschrieben. Allgemeine Informationen zu WDF-Objekten finden Sie unter Einführung in Framework-Objekte, WDF-Architektur und Entwickeln von Treibern mit der Windows Driver Foundation. Informationen zum Initialisieren eines ACX-Geräts finden Sie unter AcxDeviceInitialize.

ACX-Schaltkreis

Ein AcxCircuit stellt einen teilweisen oder vollständigen Audiopfad zu einem vom Benutzer wahrgenommenen Audiogerät dar (Lautsprecher, Mikrofon usw.). Ein AcxCircuit verfügt über mindestens einen Eingabe-Pin und einen Ausgabe-Pin (ACXPIN), und er 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 ein oder mehrere ACX-Schaltkreisobjekte, um einen teilweisen oder vollständigen Audiodaten-/Steuerungspfad darzustellen. ACX fasst diese ACX-Schaltkreisobjekte zusammen, um einen vollständigen Audiopfad zu erstellen, der einen Audioendpunkt darstellt. ACX ist für die Verwaltung der ACX-Schaltkreise und deren Abhängigkeiten verantwortlich. Die Reihenfolge, in der diese Schaltkreise zusammengestellt werden, kann zur Initialisierungszeit statisch definiert oder dynamisch zur Laufzeit definiert werden.

Ein Audioendpunkt in den ACX-Frameworks ist eine Sammlung von einem oder mehreren ACX-Schaltkreisen. Jeder ACX-Schaltkreis in einem Audiopfad mit mehreren Schaltungen muss zu einem anderen PnP-Gerätestapel gehören. Ein ACX-Treiber kann einen oder mehrere Schaltungen zur Initialisierungszeit erstellen, oder er kann Schaltungen zur Laufzeit erstellen, als Nebeneffekt eines externen Ereignisses, z. B. nach dem Erkennen einer neuen Audiokomponente oder weil er sich bei ACX als Fabrik für einen bestimmten Schaltkreistyp registriert hat, und ACX-Framework fordert die Werkskomponente auf, einen neuen Schaltkreis dieses Typs zu erstellen (siehe ACX-Schaltkreis-Manager/Factory, die weiter unten in diesem Thema beschrieben wird).

  • Ein AcxCircuit kann einen oder mehrere Datenströme aufweisen.

  • Ein AcxCircuit verfügt über eine dedizierte WDF-Warteschlange. Weitere Informationen zu WDF-Warteschlangen finden Sie unter Framework Queue Objects.

Die DDIs für ACX-Schaltkreise werden im Acxcircuit.h-Header beschrieben.

ACX-Pin

Genau wie in WDM-Portcls-Audiotreibern repräsentieren das AcxPin-Objekt die logischen Verbindungen (nicht physische Verbindungen), durch die Datenströme vom Systemkommunikationsbus in den Adapter gelangen oder vom Adapter in den Systemkommunikationsbus.

Die DDIs für Pin werden im Acxpin.h-Header beschrieben.

ACX-Stream

Ein AcxStream stellt einen Audiodatenstrom auf der Hardware eines bestimmten Schaltkreises dar. Ein AcxStream kann ein oder mehrere AcxElements-ähnliche Objekte aggregieren. AcxElements sind standardmäßig in derselben Assemblyreihenfolge 'verbunden'. Ein AcxStream ist nur einem ACX-Schaltkreis zugeordnet.

  • Ein AcxStream verfügt über eine dedizierte WDF-Warteschlange. Weitere Informationen zu WDF-Warteschlangen finden Sie unter Framework Queue Objects
  • Ein AcxStream unterstützt unterschiedliche Zustände. Diese Zustände geben an, wann Audio fließt (RUN-Zustand) oder nicht fließt (PAUSE- oder STOP-Zustand).
  • AcX unterstützt derzeit zwei Arten von Datenströmen: grundlegende ACX-Streamobjekte, die von Nicht-Streaming-Schaltkreisen verwendet werden, und ACX RT-Streamobjekte, die von Streamingschaltungen verwendet werden.

Die DDIs für Datenstrom 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-I/O-Zielen finden Sie in der Einführung in I/O-Ziele.

  • Treiber verwenden AcxTargetCircuit, um mit einer Remoteschaltung zu kommunizieren, die von einem anderen Stack bereitgestellt wird. AcxTargetCircuit wird mithilfe eines WdfIoTarget implementiert.
  • Treiber verwenden AcxTargetPin, um mit dem Pin einer Fernschaltung zu kommunizieren, die von einem anderen Stack bereitgestellt wird. AcxTargetPin wird mithilfe eines WdfIoTarget implementiert, um Nachrichten an die Remote-Pin-Entität zu senden.
  • Treiber verwenden AcxTargetElement, um mit einem Element einer Remoteschaltung zu kommunizieren, das von einem anderen Stapel bereitgestellt wird. AcxTargetElement wird mithilfe eines WdfIoTarget implementiert, um Nachrichten an die Remoteelemententität zu senden.
  • Treiber verwenden AcxTargetStream, um mit dem Datenstrom einer Remoteschaltung zu kommunizieren, der von einem anderen Stack verfügbar gemacht wird. AcxTargetStream wird mithilfe eines WdfIoTarget implementiert, um einen Remotedatenstrom zu erstellen und den Status des Remotedatenstroms zu ändern.
  • Treiber verwenden AcxTargetFactoryCircuit zur Kommunikation mit einer fernen Schaltungsfabrik-Instanz. AcxTargetFactoryCircuit wird mithilfe eines WdfTarget implementiert, um Nachrichten an die Fabrik für ferngesteuerte Schaltungen zu senden.

Jeder der obigen ACX-Typen unterstützt Eigenschaften, Methoden und Ereignisse für die Interaktion mit der ferngesteuerten Schaltung. 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 einem Schaltkreis verwendet, um die Erstellung eines Datenstroms, die Zustandsübergänge von Datenströmen und die DRM-Einstellungen zwischen Schaltkreissegmenten zu verbreiten. Dieses Objekt wird nur in einem Szenario mit mehreren Schaltkreisen (Audio composite) verwendet. Ein Treiber kann einem Bridge-Pin ein oder mehrere ACXSTREAMBRIDGE-Objekte zuordnen. Ein Brückenstift ist der ACXPIN, der logisch eine Verbindung mit dem entsprechenden ACXPIN auf dem anderen Schaltkreis herstellt.

Die DDIs für Stream werden im acxstreams.h-Header beschrieben.

Beispiel für das Knotenschaltungslayout des ACX-Audiomoduls

Das folgende Diagramm veranschaulicht einen ACX-Schaltkreis. Host- und Offload-Pins sind Eingaben in die Schaltung mit einem Loopback-Pin, der für die Echokompensation verwendet werden kann. Bei der Ausgabe könnte es sich um einen Brückenstift handeln, der zu einem Lautsprecher führt.

Diagramm, das einen ACX-Schaltkreis mit Host-, Offload- und Loopback-Pins auf der linken Seite und einem Brückenstift auf der rechten Seite zeigt, der durch einen Audiomodulknoten geleitet wird.

Beachten Sie, dass der Treiber den Schritt der expliziten Verbindung nicht ausführen muss, wenn Schaltkreise/Elemente in der gleichen Reihenfolge verbunden sind, wie sie dem Schaltkreis hinzugefügt wurden.

Standardmäßig verbindet ACX die Elemente, beginnend mit dem Eingangspin der ACX-Anforderung des Schaltkreises und endend mit dem Gerätebrücke-Pin des Schaltkreises, sowohl für Render- als auch für Aufnahmegerä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 denselben oder verschiedenen Anbietern verwaltet. Clients können diese Konfiguration in ACPI vorab konfigurieren 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 als Argument in verschiedenen DDIs übergeben werden. Die DDIs für den Objektbehälter 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.

Griff 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 für die 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 Circuit Ein ACX-Schaltkreis, der oben in diesem Thema beschrieben wird.
ACXPIN Stecknadel Ein ACX-Pinobjekt stellt die logischen Verbindungen dar und wird weiter oben in diesem Thema beschrieben.
ACXELEMENT Element Wird verwendet, um jedes Element darzustellen, das einem AcxCircuit oder AcxStream hinzugefügt werden kann, z. B. AcxVolume
ACXAUDIOENGINE Audiomodul Das ACX-Audiomodul, das in einem Renderkreis verwendet wird, um einen DSP darzustellen.
ACXSTREAMAUDIOENGINE Stream-Audiomodul Wird in einem Renderdatenstrom verwendet, um einen DSP darzustellen.
ACXKEYWORDSPOTTER Schlüsselworterkennung Ein Schlüsselwort-Spotter, der in einem Aufnahmekreis für die Schlüsselworterkennung in einem Audiodatenstrom verwendet wird.
ACXVOLUME Lautstärke Wird verwendet, um ein Volumen, einen Gewinn, eine Verstärkung darzustellen.
ACXMUTE Lautlos Wird verwendet, um ein Stummelement darzustellen.
ACXJACK Bube Wird verwendet, um eine Audiobuchse oder einen anderen physischen Verbinder darzustellen.
ACXMICARRAYGEOMETRY Mikrofonarray-Geometrie Wird verwendet, um die Mikrofonarraygeometrie darzustellen, z. B. die Position der Mikrofone.
ACXPEAKMETER Pegelspitzenmesser Wird verwendet, wenn Hardware Spitzenzählerfunktionen unterstützt.
ACXSTREAM Streamen Wird verwendet, um einen von einem Schaltkreis erstellten Audiodatenstrom darzustellen, der 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 Zielkreis Wird verwendet, um mit einer entfernten Schaltung zu kommunizieren, die von einem anderen Stack bereitgestellt 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 Datenstrom eines entfernten Schaltkreises zu kommunizieren, der von einem anderen Stack verfügbar gemacht wird.
ACXTARGETFACTORYCIRCUIT Zielschaltungsfabrik Wird für die Kommunikation mit einer Fernschaltungsfabrik verwendet.
ACXSTREAMBRIDGE Stream-Brücke Wird von einem Schaltkreis verwendet, um die Stream-Erstellung, Statusübergänge und DRM zwischen den Schaltkreissegmenten zu übertragen.
ACXCOMPOSITE Komposit Wird verwendet, um Mehrere Schaltkreise/Multi-Stack/Multiple-Vendors Stream-Architekturen darzustellen.
ACXCOMPOSITEFACTORY Composite Factory Eine Fabrik, die zusammengesetzte Audioschaltungen erstellt.
ACXFACTORYCIRCUIT Fabrikschaltung Eine Factory, die Schaltkreise mithilfe einer bestimmten Vorlage erstellt.
ACXCIRCUITMANAGER Schaltkreis-Manager Ein Schaltkreisanbieter, der für die Erstellung dynamischer Schaltkreise verwendet wird.
ACXCOMPOSITETEMPLATE Zusammengesetzte Vorlage Eine zusammengesetzte Vorlage stellt eine teilweise oder vollständige Audiobindung dar. Eine zusammengesetzte Vorlage kann eine oder mehrere Schaltkreisvorlagen aufweisen.
ACXCIRCUITTEMPLATE Schaltkreisvorlage Eine Schaltkreisvorlage stellt einen partiellen Audiopfad dar.
ACXAUDIOMODULE Audiomodul Für benutzerdefinierte Drittanbieter-Add-on-Funktionen.

Die folgenden ACX-Objekte werden verwendet, um Schaltkreis-, Datenstrom- und Schaltkreis-Factoryinformationen zu speichern.

Griff Zweck
ACXCIRCUIT_INIT Speichert ACX-Schaltkreisinitialisierungsdaten
ACXSTREAM_INIT Speichert Initialisierungsdaten des ACX-Datenstroms
ACXFACTORYCIRCUIT_INIT Speichert Initialisierungsdaten, die von einer ACX-Schaltkreisfabrik verwendet werden

Siehe auch

Übersicht über ACX-Audioklassenerweiterungen

ACX-Referenzdokumentation