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.
In Windows Vista und höheren Versionen von Windows ist audioEndpointBuilder ein Systemdienst, der die Audioendpunkte in einem System aufzählt, initialisiert und aktiviert. Dieses Thema enthält eine Übersicht über den Algorithmus, der vom AudioEndpointBuilder-Dienst verwendet wird.
Der AudioEndpointBuilder-Dienst verwendet einen Algorithmus zum Ermitteln und Aufzählen von Endpunkten. Der Algorithmus wurde entwickelt, um den Systemzugriff auf Multiplexed-Aufnahmegeräte (MUXed) zu vereinfachen und die Arbeit mit Topologien zu unterstützen, die mehrere Host-Pins und mehrere Brücken-Pins oder beides umfassen.
In Windows XP verwendete das Audiomodell den Begriff Audiogerät, um auf ein konzeptionelles Gerät in der Plug and Play -Struktur (PnP) zu verweisen. In Windows Vista und höheren Versionen von Windows wurde das Konzept eines Audiogeräts neu gestaltet, um das Gerät besser darzustellen, mit dem der Benutzer physisch interagiert.
Mit zwei neuen APIs in Windows Vista, MMDevice-API und WASAPI können Sie auf diese neuen Audiogeräte zugreifen und diese bearbeiten. Die MMDevice-API bezieht sich auf die neuen Audiogeräte als Endpunkte.
Der AudioEndpointBuilder-Dienst überwacht die KSCATEGORY_AUDIO-Klasse auf das Eintreffen und die Entfernung von Geräteschnittstellen. Wenn ein Audiogerätetreiber eine neue Instanz der KSCATEGORY_AUDIO Geräteschnittstellenklasse registriert, erkennt der AudioEndpointBuilder-Dienst die Geräteschnittstellenbenachrichtigung und verwendet einen Algorithmus, um die Topologie der Audiogeräte im System zu untersuchen und geeignete Maßnahmen zu ergreifen.
In der folgenden Liste wird zusammengefasst, wie der von AudioEndpointBuilder verwendete Algorithmus funktioniert:
Sucht nach nicht verbundenen Brückennadeln.
Erstellt einen Endpunkt für alle nicht verbundenen Brücke-Pins. Wenn der AudioEndpointBuilder z. B. einen nicht verbundenen Brücken-Pin mit einer Pin-Kategorie-GUID von KSNODETYPE_SPEAKER findet, erstellt er einen Lautsprecherendpunkt für diesen Brücken-Pin. Weitere Informationen zu KSNODETYPE_SPEAKER und anderen PIN-Kategorie-GUIDs finden Sie in der Datei "Ksmedia.h" in WinDDK\<build number>\inc\api.
Legt die Standardeigenschaften für den Endpunkt fest. Beispielsweise legt AudioEndpointBuilder den Namen, das Symbol und den Formfaktor fest.
Bestimmt, ob ein Pfad vom Endpunkt zu einem Host-Pin vorhanden ist, der pulse code modulation (PCM), Audio codec-3 (AC3) oder Windows Media Video (WMV) unterstützt. Ein Host-Pin ist eine KSPIN-Struktur, deren Kommunikationselement auf KSPIN_COMMUNICATION_SINK oder KSPIN_COMMUNICATION_BOTH festgelegt ist. Weitere Informationen zur KSPIN-Struktur finden Sie unter KSPIN.
Füllt den Endpunkt PropertyStore mit Eigenschafteninformationen aus den Registrierungsschlüsseln der Audiogeräteschnittstelle auf.
Legt den Status des Endpunkts fest. Der Status des Endpunkts kann einer der folgenden drei Werte sein:
Aktiv. Dies gibt an, dass ein Pfad vorhanden ist, wie in Schritt 4 beschrieben.
Ausgesteckt. Wenn das Audiogerät die Jackenerkennung unterstützt, gibt dieser Zustand an, dass ein Pfad für den Endpunkt vorhanden ist, und die Buchse wird vom physischen Verbinder auf dem Audioadapter getrennt.
Nicht vorhanden. Dieser Zustand gibt an, dass ein Pfad in Schritt 4 nicht gefunden wurde, und die Jackenerkennung wird von diesem Endpunkt nicht unterstützt.
Legt diesen Endpunkt als Standardendpunkt fest, wenn dies in der zugehörigen INF-Datei angegeben ist.
Nachdem die Endpunkte aufgezählt wurden, können Clients des Audiosystems sie direkt mithilfe der neuen Windows Vista-APIs (wie zuvor angegeben) oder indirekt mithilfe der vertrauteren APIs wie Wave, DirectShow oder DirectSound bearbeiten. Es wurden neue API-Methoden bereitgestellt, damit Audioclients mit der MMDevice-ID eines Endpunkts beginnen und auf die Wave- oder DirectSound-ID für denselben Endpunkt zugreifen können.
Wenn Sie Endpunkte verwenden, können Sie Folgendes nutzen:
Die gleiche GUID (Globally Unique ID) ist unabhängig davon verfügbar, wie oft Sie den Computer neu starten. Die beständige GUID ist zuverlässiger als das Speichern einer WaveOut-ID oder eines benutzerfreundlichen Namens für den Endpunkt.
Derselbe PropertyStore ist unabhängig davon verfügbar, wie oft Sie den Computer neu starten. Die audiogerätebezogenen Metadaten werden im Endpoint PropertyStore gespeichert.
Multiplexed-Pins (MUX) und De-multiplexed-Pins (DEMUX) werden automatisch verwaltet und vom AudioEndpointBuilder-Dienst aufgezählt.
Wenn Sie einen eigenen Audiogerätetreiber und eine INF-Datei für die Arbeit mit Ihrem Audiogerät entwickeln und eine Audioanwendung entwickeln oder beides, sollten Sie sich die folgenden Probleme und bewährten Methoden bewusst sein. Wenn Sie Treiber und Anwendungen mit diesen Empfehlungen entwickeln, erstellen Sie Treiber, INF-Dateien und Audioclients, die mit dem AudioEndpointBuilder effektiver funktionieren.
Namenskonvention. Die Benennungskonvention, die für die Endpunkte verwendet wird, basiert auf den benutzerfreundlichen Namen der Brückenpins. Im Fall von Lautsprecherendpunkten wurde der Name jedoch hartcodiert zu "Lautsprecher" und kann von Ihrem Treiber oder einer Drittanbieteranwendung nicht geändert werden.
Suboptimale Topologien. Bestimmte Topologien werden aufgrund des Algorithmus, der von AudioEndpointBuilder zum Aufzählen von Endpunkten verwendet wird, als suboptimal betrachtet. Wenn Sie z. B. eine dieser suboptimalen Topologien erstellen, erstellen Sie Host-Pins mit ausgeblendeten Endpunkten, die vom AudioEndpointBuilder nicht erkannt oder mit Splittern (gespaltenen Endpunkten), die der AudioEndpointBuilder nicht mit den zugehörigen Host-Pins verknüpfen kann, nicht verbunden werden können.
Ausgeblendete Endpunkte
Im folgenden Diagramm wird gezeigt, dass der KS-Filter zwei Host-Pins enthält, die mit einem einzelnen Brückenstift (Lautsprecher) verbunden sind.
Wenn der AudioEndpointBuilder diesen Brückennadel erkennt, verfolgt er einen Pfad zurück zu nur einem der Host-Pins, legt die Standardwerte für den Brückennadel fest, erstellt und aktiviert einen Lautsprecherendpunkt und ermittelt weiterhin andere Brücken-Pins. Daher bleibt der andere Host-Pin vom AudioEndpointBuilder ausgeblendet.
Im vorherigen Diagramm wurde die problematische Topologie neu gestaltet, sodass der AudioEndpointBuilder die beiden Host-Pins (PCM und AC-3/ PCM) ermitteln kann, da jetzt zwei Brücken-Pins (Lautsprecher und SPDIF) angezeigt werden können.
Splitter
Eine andere Art von suboptimaler Topologie entsteht, wenn ein Host-Pin eine Verbindung mit mehreren Brückenpins herstellt. Das folgende Diagramm zeigt eine Topologie, in der ein PCM-Host-Pin eine Verbindung mit einem Lautsprecher-Brücken-Pin und einem SPDIF-Brücken-Pin herstellt.
In diesem Fall ermittelt der AudioEndpointBuilder einen Brücken-Pin, verfolgt einen Pfad zurück zum PCM-Host-Pin, legt Standardwerte fest und erstellt dann einen Lautsprecherendpunkt, den er aktiviert. Wenn der AudioEndpointBuilder den nächsten Brücke-Pin ermittelt, verfolgt er einen Pfad zurück zum gleichen PCM-Host-Pin, legt Standardwerte fest und erstellt und aktiviert dann einen SPDIF-Endpunkt. Obwohl beide Endpunkte initialisiert und aktiviert wurden, ist es nicht möglich, gleichzeitig zu beiden Endpunkten zu streamen; mit anderen Worten, sie sind gegenseitig ausschließende Endpunkte.
Das folgende Diagramm zeigt eine Neugestaltung dieser Topologie, in der separate Verbindungen vorhanden sind. Dieses Design ermöglicht es dem AudioEndpointBuilder, einen Pfad zurück zum PCM-Host-Pin für jeden der beiden Brücken-Pins zu verfolgen.
Endpunktformat. Wenn das Audiomodul im gemeinsam genutzten Modus ausgeführt wird, geht das Format für den Endpunkt von einer bestimmten Einstellung gemäß der INF-Datei zum Zeitpunkt der Installation aus. Beispielsweise verwendet der Audiotreiber für ein Audiogerät die zugehörige INF-Datei, um den Standardendpunkt auf ein 44,1-kHz-, 16-Bit-, Stereo-PCM-Format festzulegen. Nach der Installation müssen Sie die Systemsteuerung oder eine Drittanbieteranwendung verwenden, um das Endpunktformat zu ändern.
Standardgerät. Der Endpunkt, der als Standardgerät festgelegt ist, wird zum Zeitpunkt der Installation mithilfe von Informationen in der INF-Datei ausgewählt. Nach Abschluss der Installation müssen Sie die Systemsteuerung oder eine Drittanbieteranwendung verwenden, um einen anderen Endpunkt als Standardendpunkt auszuwählen.
Anmerkung Wenn Ihre INF-Datei keinen Endpunkt auswählt, der während der Installation als Standard festgelegt werden soll, kann eine Clientanwendung die MMDevice-API verwenden, um einen Endpunkt auszuwählen. Die API trifft ihre Auswahl basierend auf dem Rang des Formfaktors und darauf, ob der Endpunkt ein Render- oder Aufnahmeendpunkt ist. Die folgende Tabelle zeigt die Auswahlreihenfolge.
| Renderpriorität | Rang erfassen |
|---|---|
| Sprecher | Mikrofon |
| Linienausleitung | Zeilenumleitung |
| SPDIF | SPDIF |
Wenn Sie die MMDevice-API verwenden, um einen Standardendpunkt auszuwählen, und die verfügbaren Endpunkte gleich eingestuft sind, ordnet die MMDevice-API die Endpunkt-IDs alphabetisch, um zu bestimmen, welcher Endpunkt als Standard ausgewählt werden soll. Wenn ein Audioadapter beispielsweise sowohl über Line-Out- als auch Line-In-Anschlüsse verfügt und die zugeordnete INF-Datei zum Zeitpunkt der Installation keinen als Standard auswählt, identifiziert die MMDevice-API, welche Endpunkt-ID alphabetisch zuerst kommt, und legt diesen Anschluss als Standard fest. Diese Auswahl wird nach dem Neustart des Systems beibehalten, da die Endpunkt-IDs dauerhaft sind. Die Auswahl wird jedoch nicht beibehalten, wenn im System ein höher priorisierter Endpunkt (z. B. ein zweiter Adapter mit Mikrofonanschluss) erscheint.