Freigeben über


Anzeigenamen für Audioendpunktgeräte

In Windows Vista, Windows Server 2008 und höheren Versionen von Windows unterstützt das Audiosubsystem die Vorstellung eines Audioendpunktgeräts, z. B. Lautsprecher, Kopfhörer, Mikrofone und CD-Player. Dieses Konzept von Audioendpunkten hilft dabei, benutzerfreundliche Audioanwendungen mit Benutzeroberflächen zu erstellen, die auf die Endpunktgeräte verweisen, die Benutzer direkt bearbeiten. Diese Endpunkte verfügen über 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 Audioendpunktgeräte.

Das Audiosubsystem modelliert ein PnP-Gerät (Plug & Play) auf einem Audioadapter als KS-Filter. Datenströme können den Filter über KS-Pins eingeben und beenden. Ein Bridge-Pin ist ein KS-Pin, über den ein Audioendpunktgerät eine Verbindung mit einem KS-Filter herstellt. Weitere Informationen zu Bridge-Pins finden Sie unter Audiofilterdiagramme.

Das Audiosubsystem ruft Informationen zu einem Audioendpunktgerät ab, indem die Eigenschaften des Bridge-Pins untersucht werden, mit dem das Endpunktgerät eine Verbindung herstellt. Eine solche Eigenschaft ist die Anheftungskategorieeigenschaft (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-Member der PCPIN_DESCRIPTOR-Struktur gespeichert. Bei einem Bridge-Pin gibt der Wert der PIN-Kategorie-GUID den Typ des Endpunkts an, der eine Verbindung mit dem Bridge-Pin herstellt. Beispielsweise gibt die PIN-Kategorie GUID KSNODETYPE_MICROPHONE an, dass der Bridgepin mit einem Mikrofon verbunden ist, die GUID KSNODETYPE_SPEAKER gibt an, dass der Bridge-Pin eine Verbindung mit Lautsprechern herstellt usw. Die KSNODETYPE_XXX-GUIDs werden in der Ksmedia.h-Headerdatei definiert.

Darüber hinaus enthält die PCPIN_DESCRIPTOR eine GUID, die verwendet werden kann, um die Pin durch einen eindeutigen Namen zu identifizieren. Diese Pinnamen-GUID wird im KsPinDescriptor.Name Member der PCPIN_DESCRIPTOR-Struktur gespeichert. Diese Namens-GUID wird von der (KSPROPERTY_PIN_NAME)-Eigenschaft verwendet, um einen Anzeigenamen in der Registrierung dem Pin zuzuordnen.

Das Audiosubsystem ruft die KSPROPERTY_PIN_NAME-Eigenschaft auf, um einem Audioendpunkt einen Anzeigenamen zuzuordnen. KS verarbeitet 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 es die Registrierung nach einer Unicode-Zeichenfolge, die die KsPinDescriptor.Category GUID beschreibt.

Ab Windows 10 October 2018 Update, Version 1809, sucht KS beim Durchsuchen der Registrierung zunächst nach einem Eintrag im Softwareschlüssel des Geräts. Dies wird vom INF über einen AddReg-Abschnitt erstellt, auf den im Abschnitt [Models] des Gerätetreiber-INF verwiesen wird. Im Abschnitt AddReg werden diese Einträge mithilfe des Schlüssels HKR\MediaCategories erstellt. Dadurch kann der Treiberentwickler gerätespezifische Anzeigenamen für Name- und Kategorie-GUIDs erstellen, unabhängig davon, ob die GUID für das Gerät eindeutig ist oder nicht.

Wenn kein Eintrag im Softwareschlüssel des Geräts installiert wurde oder der Treiber unter 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 durch neue Treiber geändert werden. Änderungen von Einträgen unter diesem Schlüssel werden in einem zukünftigen Betriebssystemrelease nicht unterstützt.

Audiogeräte, die Pins mit Standardkategorien-GUIDs verfügbar machen, sollten den Posteingangs-KS enthalten bzw. benötigen. INF oder KSCAPTUR. INF-Namensregistrierung in Ihrem Gerät INF. Diese Posteingangs-INFs enthalten Standarddefinitionen für Anzeigenamen für vordefinierte Kategorien-GUIDs, die Ihr Treiber möglicherweise auffüllen möchte. Dies sind dieselben GUIDs, die im KsPinDescriptor.Category-Member der PCPIN_DESCRIPTOR-Struktur gefunden werden. Beispielsweise weist die Kategorie-GUID KSNODETYPE_MICROPHONE Eintrag den zugeordneten Anzeigenamen "Mikrofon" und die Kategorie-GUID KSNODETYPE_SPEAKER Eintrag den zugeordneten Anzeigenamen "Lautsprecher" usw. auf.

Die GUIDs und Anzeigenamen für Kategorie- und Name-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 nennen die Anzeige einen Unicode-Zeichenfolgenwert unter der Variablen "Name".

Wenn keine der vom Audiosubsystem definierten Anzeigenamen und Pinkategorien Ihr Gerät angemessen beschreibt, können Sie Ihre eigenen PIN-Kategorie- und Namens-GUIDs definieren und ihnen Anzeigenamen in Ihrem 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.exe generiert.

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

Eine IPropertyStore-Schnittstelle instance einen persistenten Eigenschaftenspeicher für ein Audioendpunktgerät verwaltet. Der Eigenschaftenspeicher kopiert seinen Anfangswert für den PKEY_Device_DeviceDesc Eigenschaftenschlüssel aus der Anzeigenamenzeichenfolge, die der GUID der KS-Pinkategorie 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 über die Windows-Multimedia-Systemsteuerung ändern, Mmsys.cpl. 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 mit der rechten Maustaste auf das Lautsprechersymbol im Infobereich klicken, der 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 auf dem Eigenschaftenblatt angezeigt werden. Sie können den Anzeigenamen bearbeiten und dann Ihre Änderungen speichern, indem Sie auf OK klicken.

In den vorherigen Schritten wird der Anzeigename geändert, der im Eigenschaftenspeicher für das Audioendpunktgerät gespeichert ist. Diese Schritte haben keine Auswirkungen auf die Anzeigenamen, die anderen Audioendpunktgeräten zugeordnet sind, die derselben KS-Pinkategorie angehören. Sie haben auch keine Auswirkungen auf eine Komponente, die KS direkt nach einem Namen abfragen kann.