Nombres descriptivos para dispositivos de punto de conexión de audio
En Windows Vista, Windows Server 2008 y versiones posteriores de Windows, el subsistema de audio admite la noción de un dispositivo de punto de conexión de audio, por ejemplo, altavoces, auriculares, micrófonos y reproductores de CD. Este concepto de puntos de conexión de audio ayuda a crear aplicaciones de audio fáciles de usar que tienen interfaces de usuario que hacen referencia a los dispositivos de punto de conexión que los usuarios manipulan directamente. Estos puntos de conexión tienen nombres descriptivos como "altavoces", "auriculares", "micrófono" y "reproductor de CD" que las aplicaciones pueden mostrar en sus interfaces de usuario. Para obtener más información sobre los dispositivos de punto de conexión, consulte Dispositivos de punto de conexión de audio.
El subsistema de audio modela un dispositivo Plug and Play (PnP) en un adaptador de audio como filtro KS. Los flujos de datos entran y salen del filtro a través de patillas KS. Un pin de puente es un pin KS a través del cual un dispositivo de punto de conexión de audio se conecta a un filtro KS. Para obtener más información sobre los patillas de puente, vea Gráficos de filtros de audio.
El subsistema de audio obtiene información sobre un dispositivo de punto de conexión de audio examinando las propiedades del pin de puente al que se conecta el dispositivo de punto de conexión. Una de estas propiedades es la propiedad de categoría pin (KSPROPERTY_PIN_CATEGORY).
Para cada filtro KS, el controlador del adaptador proporciona una tabla de estructuras de PCPIN_DESCRIPTOR que describen las propiedades de los patillas KS del filtro. El GUID de categoría de patillas se almacena en el miembro KsPinDescriptor.Category de la estructura PCPIN_DESCRIPTOR. Para un pin de puente, el valor del GUID de categoría de patillas indica el tipo de punto de conexión que se conecta al pin de puente. Por ejemplo, el GUID de categoría de patillas KSNODETYPE_MICROPHONE indica que el pin de puente se conecta a un micrófono, el GUID KSNODETYPE_SPEAKER indica que el pin del puente se conecta a los altavoces, etc. Los GUID KSNODETYPE_XXX se definen en el archivo de encabezado Ksmedia.h.
Además, el PCPIN_DESCRIPTOR incluye un GUID que se puede usar para identificar el pin por un nombre único. Este GUID de nombre de patilla se almacena en el miembro KsPinDescriptor.Name de la estructura PCPIN_DESCRIPTOR. La propiedad (KSPROPERTY_PIN_NAME) usa este GUID de nombre para asociar un nombre descriptivo que se encuentra en el registro con el pin.
El subsistema de audio invoca la propiedad KSPROPERTY_PIN_NAME para asociar un nombre descriptivo a un punto de conexión de audio. KS controla esta solicitud buscando primero una cadena unicode en el registro que describe el GUID de KsPinDescriptor.Name . Si KS no encuentra una entrada, busca en el Registro una cadena unicode que describa el GUID KsPinDescriptor.Category .
A partir de Actualización de octubre de 2018 de Windows 10, versión 1809, al buscar en el registro, KS busca primero una entrada en la clave de software del dispositivo. Esto lo crea el INF a través de una sección AddReg a la que hace referencia la sección [Models] del INF del controlador de dispositivo. La sección AddReg construye estas entradas mediante la clave HKR\MediaCategories. Esto permite al desarrollador de controladores crear nombres descriptivos específicos del dispositivo para los GUID de nombre y categoría, tanto si el GUID es único para el dispositivo como si no.
Si no se ha instalado una entrada en la clave de software del dispositivo o el controlador se ejecuta en un sistema operativo antes de Windows 10 versión 1809, KS comprueba la clave del Registro MediaCategories. Esta segunda clave se trata como un espacio de nombres global. A partir de Windows 10 versión 1809, este espacio está reservado para las definiciones globales y no debe modificarse mediante nuevos controladores. No se admitirá la modificación de entradas en esta clave en una futura versión del sistema operativo.
Los dispositivos de audio que exponen patillas con GUID de categorías estándar deben incluir o necesita el KS de la bandeja de entrada. INF o KSCAPTUR. Registro de nombres INF en el dispositivo INF. Estas INFs de bandeja de entrada contienen definiciones de nombre descriptivo predeterminadas para GUID de categoría predefinidos que el controlador puede querer rellenar. Estos son los mismos GUID que se encuentran en el miembro KsPinDescriptor.Category de la estructura PCPIN_DESCRIPTOR. Por ejemplo, el GUID de categoría KSNODETYPE_MICROPHONE entrada tiene el nombre descriptivo asociado "micrófono" y el GUID de categoría KSNODETYPE_SPEAKER entrada tiene el nombre descriptivo asociado "altavoces", etc.
Los GUID y los nombres descriptivos de los GUID de categoría y nombre se almacenan en el registro. Para cada par guid-name del Registro, la cadena GUID se usa como sub clave en la clave MediaCategories. En la clave GUID, el nombre descriptivo es un valor de cadena Unicode en la variable "Name".
Si ninguno de los nombres descriptivos y las categorías de patillas definidas por el subsistema de audio describe adecuadamente el dispositivo, puede definir sus propios GUID de nombre y categoría de patillas y asociar nombres descriptivos con ellos en el INF. Para asegurarse de que el GUID de categoría de anclaje es único, use una utilidad como Uuidgen.exe para generar el GUID. A continuación, modifique el archivo INF que instala el adaptador de audio para escribir el GUID de categoría de anclaje y el nombre descriptivo en el registro. En el ejemplo de código siguiente se muestra un fragmento de un archivo INF que agrega dos GUID de categoría de pin y sus nombres descriptivos asociados al registro:
[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"
Ambas cadenas GUID se generaron mediante Uuidgen.exe.
Las aplicaciones pueden acceder a las propiedades de un dispositivo de punto de conexión de audio mediante la interfaz IPropertyStore del dispositivo. La interfaz usa las claves de propiedad definidas en los archivos de encabezado Functiondiscoverykeys_devpkey.h y Mmdeviceapi.h para identificar las propiedades. Una aplicación puede usar la clave de propiedad PKEY_Device_FriendlyName para recuperar el nombre descriptivo de un dispositivo de punto de conexión. En el caso de las interfaces de usuario restringidas por espacio, se puede recuperar una versión más corta del nombre descriptivo mediante la clave de propiedad PKEY_Device_DeviceDesc . Para obtener más información sobre estas claves de propiedad, vea IMMDevice::OpenPropertyStore.
Una instancia de interfaz IPropertyStore mantiene un almacén de propiedades persistente para un dispositivo de punto de conexión de audio. El almacén de propiedades copia su valor inicial para la clave de propiedad PKEY_Device_DeviceDesc de la cadena de nombre descriptivo asociada al GUID de categoría de patillas KS en el Registro. Las aplicaciones pueden leer el valor de propiedad PKEY_Device_DeviceDesc (la cadena de nombre) del almacén de propiedades, pero no pueden cambiar el valor. Sin embargo, los usuarios pueden modificar el nombre mediante el panel de control multimedia de Windows, Mmsys.cpl. Por ejemplo, en Windows Vista, puede usar los pasos siguientes para modificar el nombre de un dispositivo de punto de conexión de representación:
Para ejecutar Mmsys.cpl, abra una ventana del símbolo del sistema y escriba el siguiente comando:
mmsys.cpl
(Como alternativa, puede ejecutar Mmsys.cpl haciendo clic con el botón derecho en el icono del altavoz en el área de notificación, que se encuentra en el lado derecho de la barra de tareas y haciendo clic en Dispositivos de reproducción).
Haga clic en el nombre de un dispositivo de representación y, a continuación, haga clic en Propiedades.
En el ventana Propiedades, haga clic en la pestaña General. El nombre descriptivo debe aparecer en un cuadro de texto situado en la parte superior de la hoja de propiedades. Puede editar el nombre descriptivo y, a continuación, guardar los cambios haciendo clic en Aceptar.
Los pasos anteriores cambian el nombre descriptivo que se almacena en el almacén de propiedades para el dispositivo de punto de conexión de audio. Estos pasos no tienen ningún efecto en los nombres descriptivos asociados a otros dispositivos de punto de conexión de audio que pertenecen a la misma categoría de patillas KS. Tampoco tienen ningún efecto en ningún componente que pueda consultar KS directamente para un nombre.