Freigeben über


Anzeigenamen für Audioendpunktgeräte

In Windows Vista, Windows Server 2008 und höheren Versionen von Windows unterstützt das Audiosubsystem das Konzept eines Audioendpunktgeräts, z. B. Lautsprecher, Kopfhörer, Mikrofone und CD-Player. Dieses Konzept von Audioendpunkten hilft beim Erstellen benutzerfreundlicher Audioanwendungen mit Benutzeroberflächen, die auf die Endpunktgeräte verweisen, die Benutzer direkt bearbeiten. Diese Endpunkte haben Anzeigenamen wie "Lautsprecher", "Kopfhörer", "Mikrofon" und "CD-Player", die Anwendungen in ihren Benutzeroberflächen anzeigen können. Weitere Informationen zu Endpunktgeräten finden Sie unter "Audio-Endpunktgeräte".

Das Audiosubsystem modelliert ein Plug and Play -Gerät (PnP) auf einem Audioadapter als KS-Filter. Die Datenströme treten über KS-Stifte in den Filter ein und verlassen ihn wieder. Ein Brückennadel ist ein KS-Pin, über den ein Audioendpunktgerät eine Verbindung mit einem KS-Filter herstellt. Weitere Informationen zu Brückenstiften finden Sie unter Audio-Filter-Grafiken.

Das Audiosubsystem ruft Informationen zu einem Audioendpunktgerät ab, indem es die Eigenschaften des Brückenstifts untersucht, mit dem das Endpunktgerät eine Verbindung herstellt. Eine solche Eigenschaft ist die Pinkategorieeigenschaft (KSPROPERTY_PIN_CATEGORY).

Für jeden KS-Filter stellt der Adaptertreiber eine Tabelle mit PCPIN_DESCRIPTOR Strukturen bereit, die die Eigenschaften der KS-Pins für den Filter beschreiben. Die PIN-Kategorie-GUID wird im KsPinDescriptor.Category-Element der PCPIN_DESCRIPTOR-Struktur gespeichert. Bei einem Brückenstift gibt der Wert der Pin-Kategorie-GUID den Typ des Endpunkts an, der eine Verbindung mit dem Brückenstift herstellt. Beispielsweise gibt die Pin-Kategorie-GUID KSNODETYPE_MICROPHONE an, dass der Brücken-Pin mit einem Mikrofon verbunden ist, und die GUID KSNODETYPE_SPEAKER gibt an, dass der Brücken-Pin mit Lautsprechern verbunden ist, usw. Die KSNODETYPE_XXX-GUIDs werden in der Headerdatei "Ksmedia.h" definiert.

Darüber hinaus enthält die PCPIN_DESCRIPTOR eine GUID, mit der die Pin anhand eines eindeutigen Namens identifiziert werden kann. Diese PIN-Namens-GUID wird im KsPinDescriptor.Name Element der PCPIN_DESCRIPTOR Struktur gespeichert. Diese Namens-GUID wird von der Eigenschaft (KSPROPERTY_PIN_NAME) verwendet, um einen freundlichen Namen, der in der Registrierung mit dem Pin gefunden wird, zuzuordnen.

Das Audiosubsystem ruft die KSPROPERTY_PIN_NAME-Eigenschaft auf, um einem Audioendpunkt einen Anzeigenamen zuzuordnen. KS behandelt diese Anforderung, indem zuerst nach einer Unicode-Zeichenfolge in der Registrierung gesucht wird, die die KsPinDescriptor.Name GUID beschreibt. Wenn KS keinen Eintrag findet, durchsucht er die Registrierung nach einer Unicode-Zeichenfolge, die die KsPinDescriptor.Category GUID beschreibt.

Ab Windows 10 Oktober 2018 Update, Version 1809, sucht KS beim Durchsuchen der Registrierung zunächst nach einem Eintrag im Softwareschlüssel des Geräts. Dies wird von der INF über einen AddReg-Abschnitt erstellt, auf den der Abschnitt [Models] des INF des Gerätetreibers verweist. Der AddReg-Abschnitt erstellt diese Einträge mithilfe des Schlüssels HKR\MediaCategories. Auf diese Weise kann der Treiberentwickler gerätespezifische benutzerfreundliche Namen sowohl für Namens- als auch für Kategorie-GUIDs erstellen, unabhängig davon, ob die GUID für das Gerät eindeutig ist oder nicht.

Wenn ein Eintrag nicht im Softwareschlüssel des Geräts installiert wurde oder der Treiber auf einem Betriebssystem vor Windows 10, Version 1809, ausgeführt wird, überprüft KS den MediaCategories-Registrierungsschlüssel. Dieser zweite Schlüssel wird als globaler Namensraum behandelt. Ab Windows 10, Version 1809, ist dieser Speicherplatz für globale Definitionen reserviert und sollte nicht von neuen Treibern geändert werden. Änderungen von Einträgen unter diesem Schlüssel werden in einer zukünftigen Betriebssystemversion nicht unterstützt.

Audiogeräte, die Pins mit Standardkategorien-GUIDs verfügbar machen, sollten entweder die im System enthaltene KS.INF oder die KSCAPTUR.INF-Namensregistrierung in Ihrer Geräte-INF-Datei enthalten/benötigen. Diese Posteingangsordner-INFs enthalten standardmäßige Anzeigenamendefinitionen für vordefinierte Kategorie-GUIDs, die Ihr Treiber möglicherweise ausfüllen möchte. Dies sind die gleichen GUIDs, die im KsPinDescriptor.Category-Element der PCPIN_DESCRIPTOR Struktur gefunden werden. Beispielsweise weist die Kategorie-GUID KSNODETYPE_MICROPHONE Eintrag den zugehörigen Anzeigenamen "Mikrofon" auf, und die Kategorie-GUID KSNODETYPE_SPEAKER Eintrag hat den zugehörigen Anzeigenamen "Lautsprecher" usw.

Die GUIDs und benutzerfreundlichen Namen für Kategorie- und Namens-GUIDs werden in der Registrierung gespeichert. Für jedes GUID-Name-Paar in der Registrierung wird die GUID-Zeichenfolge als Unterschlüssel unter dem MediaCategories-Schlüssel verwendet. Unter dem GUID-Schlüssel trägt der freundliche Name unter der Variablen "Name" den Wert einer Unicode-Zeichenfolge.

Wenn keine der vom Audiosubsystem definierten freundlichen Namen und Pinkategorien Ihr Gerät angemessen beschreibt, können Sie Ihre eigene Pinkategorie und GUIDs für Namen definieren und ihnen freundliche Namen in Ihrer INF zuordnen. Um sicherzustellen, dass ihre PIN-Kategorie-GUID eindeutig ist, verwenden Sie ein Hilfsprogramm wie Uuidgen.exe, um die GUID zu generieren. Ändern Sie als Nächstes die INF-Datei, die Ihren Audioadapter installiert, um die Pin-Kategorie-GUID und den Anzeigenamen in die Registrierung zu schreiben. Das folgende Codebeispiel zeigt ein Fragment einer INF-Datei, das der Registrierung zwei PIN-Kategorie-GUIDs und die zugehörigen Anzeigenamen hinzufügt:

[Manufacturer]
MyOEMName=Unicorn,NTamd64

[Unicorn.NTamd64]
MyDeviceName=MyDevice,Root\MyDevice

[MyDevice.NT]
Include=ks.inf, kscaptur.inf
Needs=KS.Registration, KSCAPTUR.Registration.NT
CopyFiles=MyDevice.CopyFiles
AddReg=PinNameRegistration

...

[PinNameRegistration]
HKR,%MediaCategories%\%GUID.MyNewEndpointCategory%,Name,,%Name.MyNewEndpointCategory%
HKR,%MediaCategories%\%GUID.MyNewEndpointName%,Name,,%Name.MyNewEndpointName%

...

[Strings]
MyOEMName="Unicorns Inc."
MyDeviceName="Sparkly Unicorn"
MediaCategories="MediaCategories"

GUID.MyNewEndpointCategory="{B72FBD1A-4634-4240-B207-0E6B52F3701C}"
GUID.MyNewEndpoint_2="{71DD3A5D-E303-49A0-ACEE-908634AA9520}"

Name.MyNewEndpointCategory="Unicorn"
Name.MyNewEndpointName="Fred the Unicorn"

Beide GUID-Zeichenfolgen wurden von Uuidgen.exegeneriert.

Anwendungen können über die IPropertyStore-Schnittstelle des Geräts auf die Eigenschaften eines Audioendpunktgeräts zugreifen. Die Schnittstelle verwendet die Eigenschaftenschlüssel, die in den Headerdateien Functiondiscoverykeys_devpkey.h und Mmdeviceapi.h definiert sind, um die Eigenschaften zu identifizieren. Eine Anwendung kann den Eigenschaftenschlüssel PKEY_Device_FriendlyName verwenden, um den Anzeigenamen eines Endpunktgeräts abzurufen. Für Benutzeroberflächen mit Platzbeschränkung kann eine kürzere Version des Anzeigenamens mithilfe des PKEY_Device_DeviceDesc-Eigenschaftsschlüssel abgerufen werden. Weitere Informationen zu diesen Eigenschaftenschlüsseln finden Sie unter IMMDevice::OpenPropertyStore.

Eine IPropertyStore-Schnittstelleninstanz verwaltet einen beständigen Eigenschaftenspeicher für ein Audioendpunktgerät. Der Eigenschaftenspeicher kopiert seinen Anfangswert für den PKEY_Device_DeviceDesc-Eigenschaftsschlüssel aus der Zeichenkette für den freundlichen Namen, die der KS-Pin-Kategorie-GUID in der Registrierung zugeordnet ist. Anwendungen können den PKEY_Device_DeviceDesc Eigenschaftswert (die Namenszeichenfolge) aus dem Eigenschaftenspeicher lesen, aber sie können den Wert nicht ändern. Benutzer können den Namen jedoch mithilfe der Windows-Multimedia-Systemsteuerung Mmsys.cpländern. In Windows Vista können Sie beispielsweise die folgenden Schritte ausführen, um den Namen eines Renderingendpunktgeräts zu ändern:

  1. Um Mmsys.cpl auszuführen, öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie den folgenden Befehl ein:

    mmsys.cpl
    

    (Alternativ können Sie Mmsys.cpl ausführen, indem Sie im Infobereich mit der rechten Maustaste auf das Lautsprechersymbol klicken, das sich auf der rechten Seite der Taskleiste befindet, und auf "Wiedergabegeräte" klicken.)

  2. Klicken Sie auf den Namen eines Renderinggeräts, und klicken Sie dann auf Eigenschaften.

  3. Klicken Sie im Eigenschaftenfenster auf die Registerkarte " Allgemein ". Der Anzeigename sollte in einem Textfeld oben im Eigenschaftenblatt angezeigt werden. Sie können den Anzeigenamen bearbeiten und dann Ihre Änderungen speichern, indem Sie auf "OK" klicken.

Die vorstehenden Schritte ändern den freundlichen Namen, der im Eigenschaftenspeicher für das Audio-Endpunktgerät gespeichert ist. Diese Schritte haben keine Auswirkungen auf die benutzerfreundlichen Namen, die anderen Audioendpunktgeräten zugeordnet sind, die zur gleichen KS-Pinkategorie gehören. Sie haben auch keine Auswirkungen auf eine Komponente, die KS direkt nach einem Namen abfragen kann.