Compartir a través de


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 obtener 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. Carga el ejemplo sysvad de audio universal para usarlo como punto de partida para tu 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 la 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, consulte 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.

Las siguientes interfaces de controlador de dispositivo 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 la Referencia de Dispositivos de Audio .

  2. Vuelva a compilar el controlador como controlador universal de Windows. En las propiedades del proyecto, establezca la 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 obtener 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 componentizada

Visió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.

Este diagrama resume una instalación de audio por componentes.

Diagrama de la pila de audio con componentes que incluye el controlador DSP, el códec y los APOs.

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 Utilizar un archivo INF de extensión.

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

Para obtener información sobre cómo agregar software mediante archivos INF, consulte Uso de un archivo INF de componente y Principios de diseño y mejores prácticas de DCH.

Envío de archivos INF componentizados

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

Archivos INF componentizados de SYSVAD

Para ver un ejemplo de archivos INF componentizados, examine el sysvad/TabletAudioSampleen 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 funciones

Todos los valores de configuración, parámetros y ajuste específicos del sistema del proveedor de APO deben instalarse a través de un paquete INF de extensión. En muchos casos, esto se puede realizar de manera sencilla con la directiva INF AddReg . 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). 

Aplicaciones 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 Aplicaciones para compatibilidad con 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 de la API AudioModules por parte del proveedor de controladores de dispositivo y de APO

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 dispositivos 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)

Dónde:

  • 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 de 4 caracteres asignado por PCI SIG para el proveedor del subsistema del dispositivo principal. 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.

Versión de INF de Plug and Play 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 windows clasifica los controladores.

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 de registro del controlador de APO

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

Uso de un servicio de Windows para facilitar la comunicación APO de UWP <->

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 de APO de UWP <->, se recomienda implementar esa funcionalidad en un servicio de Windows que luego 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 el 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 destinada a gestionar los APO.
KeywordDetectorAdapter.dll Detector de palabras clave de ejemplo.

Instalación y prueba del controlador

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

  1. Abra un símbolo del sistema como administrador y escriba lo siguiente en el directorio en el 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 el 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. Esto suele estar bajo el nodo Sonido, controladores de vídeo y juegos.

  4. En el equipo de destino, abra el Panel de control y vaya a hardware y sonido>Administrar dispositivos de audio. 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.