Controladores universales de Windows para audio

En Windows 10 puedes escribir un controlador de audio universal que funcionará en muchos tipos de hardware. En este tema se describen las ventajas de este enfoque, así como las diferencias entre las plataformas. Además de los controladores universales de Windows para audio, Windows sigue admitiendo tecnologías anteriores de controladores de audio, como WDM.

Introducción a los controladores universales de Windows para audio

Los IHD pueden desarrollar un controlador universal de Windows que funcione en todos los dispositivos (equipos de escritorio, portátiles, tabletas, teléfonos). Esto puede reducir el tiempo de desarrollo y el costo del desarrollo inicial y el mantenimiento de código posterior.

Estas herramientas están disponibles para desarrollar controladores universales de Windows:

  • Visual Studio 2015: establezca "Plataforma de destino" igual a "Universal". Para obtener más información sobre cómo configurar el entorno de desarrollo de controladores, consulte documentación para desarrolladores de hardware de Windows y Creación de un controlador con WDK.

  • Herramienta APIValidator: puede usar la herramienta ApiValidator.exe para comprobar que las API a las que llama el controlador son válidas para un controlador universal de Windows. Esta herramienta forma parte del Kit de controladores de Windows (WDK) para Windows 10 y se ejecuta automáticamente si usa Visual Studio 2015. Para más información, consulte APIValidator.

  • Documentación de referencia de DDI: la documentación de referencia de DDI se actualiza para indicar qué DDIs son compatibles con los controladores universales de Windows. Para obtener más información, consulte Referencia de dispositivos de audio.

Creación de un controlador de audio universal

Para obtener instrucciones paso a paso, consulte documentación para desarrolladores de hardware de Windows y Creación de un controlador con WDK. Este es un resumen de los pasos:

  1. Cargue el ejemplo de sysvad de audio universal para usarlo como punto de partida para el controlador de audio universal. Como alternativa, comience con la plantilla de controlador WDM vacía y agregue código del ejemplo de sysvad universal según sea necesario para el controlador de audio.

  2. En las propiedades del proyecto, establezca Plataforma de destino en "Universal".

  3. Crear un paquete de instalación: si el destino es el dispositivo que ejecuta Windows 10 para las ediciones de escritorio (Home, Pro, Enterprise y Education), use un archivo INF universal. Si el destino es el dispositivo que ejecuta Windows 10 Mobile, use PkgGen para generar un archivo .spkg.

  4. Compile, instale, implemente y depure el controlador para Windows 10 para ediciones de escritorio o Windows 10 Mobile.

Código de ejemplo

Sysvad y SwapAPO se han convertido en ejemplos de controladores universales de Windows. Para obtener más información, vea Controladores de audio de ejemplo.

Interfaces de programación disponibles para controladores universales de Windows para audio

A partir de Windows 10, las interfaces de programación de controladores forman parte de las ediciones basadas en OneCoreUAP de Windows. Con ese conjunto común, puedes escribir un controlador universal de Windows. Esos controladores se ejecutarán tanto en Windows 10 para ediciones de escritorio como en Windows 10 Mobile y en otras versiones de Windows 10.

Los siguientes identificadores de usuario están disponibles al trabajar con controladores de audio universales.

Convertir un controlador de audio existente en un controlador universal de Windows

Siga este proceso para convertir un controlador de audio existente en un controlador universal de Windows.

  1. Determine si las llamadas de controlador existentes se ejecutarán en Windows OneCoreUAP. Compruebe la sección de requisitos de las páginas de referencia. Para obtener más información, consulte Referencia de dispositivos de audio.

  2. Vuelva a compilar el controlador como controlador universal de Windows. En las propiedades del proyecto, establezca Plataforma de destino en "Universal".

  3. Usa la herramienta ApiValidator.exe para comprobar que las DDIs a las que llama el controlador son válidas para un controlador universal de Windows. Esta herramienta forma parte del Kit de controladores de Windows (WDK) para Windows 10 y se ejecuta automáticamente si usa Visual Studio 2015. Para más información, consulte APIValidator.

  4. Si el controlador llama a interfaces que no forman parte de OneCoreUAP, el compilador notifica errores.

  5. Reemplace esas llamadas por llamadas alternativas, o cree una solución alternativa de código o escriba un nuevo controlador.

Creación de una instalación de controladores de audio con división de componentes

Información general

Para crear una experiencia de instalación más fluida y confiable y para admitir mejor el mantenimiento de componentes, divida el proceso de instalación del controlador en los siguientes componentes.

  • DSP (si está presente) y códec
  • APO
  • Personalizaciones de OEM

Opcionalmente, se pueden usar archivos INF independientes para DSP y Codec.

En este diagrama se resume una instalación de audio componente.

Diagrama de la pila de audio componentes con el controlador DSP, el códec y las API.

Se usa un archivo INF de extensión independiente para personalizar cada componente de controlador base para un sistema determinado. Las personalizaciones incluyen parámetros de ajuste y otras configuraciones específicas del sistema. Para obtener más información, vea Usar un archivo INF de extensión.

Un archivo INF de extensión debe ser un archivo INF universal. Para obtener más información, consulte Usar un archivo INF universal.

Para obtener información sobre cómo agregar software mediante archivos INF, vea Using a Component INF File and DCH Design Principles and Best Practices.

Envío de archivos INF componentes

Los paquetes inf de APO deben enviarse al Centro de partners por separado del paquete de controladores base. Para obtener más información sobre cómo crear paquetes, consulte Introducción a Windows HLK.

Archivos INF componentes de SYSVAD

Para ver un ejemplo de archivos INF componentes, examine sysvad/TabletAudioSample, en GitHub.

Nombre de archivo Descripción
ComponentizedAudioSample.inf Archivo INF de audio de ejemplo con componentes base.
ComponentizedAudioSampleExtension.inf Controlador de extensión para la base sysvad con personalizaciones de OEM adicionales.
ComponentizedApoSample.inf Un archivo INF de extensión de ejemplo de APO.

Los archivos INF tradicionales siguen estando disponibles en el ejemplo SYSVAD.

Nombre de archivo Descripción
tabletaudiosample.inf Un archivo INF monolítico de escritorio que contiene toda la información necesaria para instalar el controlador.

Parámetros de ajuste específicos del proveedor de APO y configuración de características

Todos los valores de configuración, parámetros y optimización específicos del sistema de APO deben instalarse a través de un paquete INF de extensión. En muchos casos, esto se puede realizar de forma sencilla con la directiva AddReg de INF. En casos más complejos, se puede usar un archivo de optimización. 

Los paquetes de controladores base no deben depender de estas personalizaciones para funcionar (aunque por supuesto se puede reducir la funcionalidad). 

API de configuración de audio para UWP

Para implementar una interfaz de usuario final, use una aplicación de soporte técnico de hardware (HSA) para un controlador de audio universal de Windows. Para obtener más información, consulte Aplicación de soporte técnico de hardware (HSA): Pasos para desarrolladores de controladores.

Inicio de aplicaciones de soporte técnico de hardware para UWP mediante programación

Para iniciar mediante programación una aplicación de soporte técnico de hardware para UWP, basada en un evento de controlador (por ejemplo, cuando se conecta un nuevo dispositivo de audio), use las API de Windows Shell. Las API de Shell de Windows 10 admiten un método para iniciar la interfaz de usuario de UWP en función de la activación de recursos o directamente a través de IApplicationActivationManager. Puedes encontrar más detalles sobre el inicio automatizado para aplicaciones para UWP en Automatizar el inicio de aplicaciones para UWP de Windows 10. 

Uso del proveedor de controladores de dispositivo y APO de la API AudioModules

La API de módulos de audio/DDI está diseñada para estandarizar el transporte de comunicación (pero no el protocolo) para los comandos pasados entre una aplicación para UWP o un servicio en modo de usuario a un módulo de controlador de kernel o bloque de procesamiento DSP. Los módulos de audio requieren un controlador que implemente la DDI correcta para admitir la enumeración y la comunicación del módulo. Los comandos se pasan como binarios y la interpretación o definición se dejan al creador. 

Los módulos de audio no están diseñados actualmente para facilitar la comunicación directa entre una aplicación para UWP y un APO SW que se ejecuta en el motor de audio.

Para obtener más información sobre los módulos de audio, consulte Implementación de la comunicación del módulo de audio y Configuración y consulta de módulos de audio.

Construcción de cadenas HWID de APO

Los identificadores de hardware de APO incorporan información estándar y cadenas definidas por el proveedor.

Se construyen de la siguiente manera:

SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)

Donde:

  • v(4) es el identificador de 4 caracteres para el proveedor de dispositivos de APO. Microsoft administrará esto. 
  • a(4) es el identificador de 4 caracteres para el APO, definido por el proveedor de APO. 
  • n(4) es el identificador asignado por SIG de 4 caracteres para el proveedor del subsistema para el dispositivo primario. Normalmente, este es el identificador de OEM.
  • s(4) es el identificador del subsistema definido por el proveedor de 4 caracteres para el dispositivo primario. Normalmente, este es el identificador del producto OEM.

Plug and Play INF versión y evaluación de fechas para la actualización del controlador

El sistema Windows Plug and Play evalúa la fecha y la versión del controlador para determinar qué unidad instalar cuando existen varios controladores. Para obtener más información, vea Cómo clasifica Windows Drivers.

Para permitir que se use el controlador más reciente, asegúrese de actualizar la fecha y la versión para cada nueva versión del controlador.

Clave del Registro del controlador de APO

En el caso de las claves del Registro de controlador de audio o APO definidas por terceros, use HKR.

Usar un servicio de Windows para facilitar la comunicación con UWP <:> APO

Un servicio de Windows no es estrictamente necesario para la administración de componentes en modo de usuario, como las API. Sin embargo, si el diseño incluye un servidor RPC para facilitar la comunicación con UWP <:> APO, se recomienda implementar esa funcionalidad en un servicio de Windows que, a continuación, controla el APO que se ejecuta en el motor de audio. 

Compilación del ejemplo de audio universal de Sysvad para Windows 10 Desktop

Complete los pasos siguientes para compilar el ejemplo sysvad para el escritorio de Windows 10.

  1. Busque el archivo inf de escritorio (tabletaudiosample.inf) y establezca el nombre del fabricante en un valor como "Contoso".

  2. En Explorador de soluciones, seleccione y mantenga presionada (o haga clic con el botón derecho) Solución "sysvad" y elija Configuration Manager. Si va a implementar en una versión de 64 bits de Windows, establezca la plataforma de destino en x64. Asegúrese de que la configuración y la configuración de la plataforma son las mismas para todos los proyectos.

  3. Compile todos los proyectos de la solución sysvad.

  4. Busque el directorio de salida de la compilación a partir de la compilación. Por ejemplo, podría encontrarse en un directorio como este:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Copie los siguientes archivos en el sistema que desea instalar el controlador sysvad:

Archivo Descripción
TabletAudioSample.sys El archivo del controlador.
tabletaudiosample.inf Archivo de información (INF) que contiene información necesaria para instalar el controlador.
sysvad.cat El archivo de catálogo.
SwapAPO.dll Una extensión de controlador de ejemplo para una interfaz de usuario para administrar las API.
KeywordDetectorAdapter.dll Detector de palabras clave de ejemplo.

Instalación y prueba del controlador

Siga estos pasos para instalar el controlador mediante PnpUtil en el sistema de destino.

  1. Abra y el símbolo del sistema administrador y escriba lo siguiente en el directorio al que copió los archivos del controlador.

    pnputil -i -a tabletaudiosample.inf

  2. La instalación del controlador sysvad debe completarse. Si hay algún error, puede examinar este archivo para obtener información adicional: %windir%\inf\setupapi.dev.log

  3. En Administrador de dispositivos, en el menú Ver, elija Dispositivos por tipo. En el árbol de dispositivos, busque Dispositivo de audio virtual de Microsoft (WDM): ejemplo de Sysvad. Suele estar bajo el nodo Controladores de sonido, vídeo y juegos.

  4. En el equipo de destino, abra Panel de control y vaya a Hardware and Sound Manage audio devices (Administrar dispositivos de audio y hardware y sonido>). En el cuadro de diálogo Sonido, seleccione el icono del altavoz etiquetado como Dispositivo de audio virtual de Microsoft (WDM) - Ejemplo sysvad y, a continuación, seleccione Establecer valor predeterminado, pero no seleccione Aceptar. Esto mantendrá abierto el cuadro de diálogo Sonido.

  5. Busque un archivo MP3 u otro archivo de audio en el equipo de destino y haga doble clic para reproducirlo. A continuación, en el cuadro de diálogo Sonido, compruebe que hay actividad en el indicador de nivel de volumen asociado con el controlador microsoft Virtual Audio Device (WDM) - Sysvad Sample.