Partilhar via


Drivers de áudio universais do Windows

No Windows 10, você pode escrever um driver de áudio universal que funcionará em vários tipos de hardware. Este tópico discute os benefícios dessa abordagem, bem como as diferenças entre as plataformas. Além dos drivers universais do Windows para áudio, o Windows continua a oferecer suporte a tecnologias de driver de áudio anteriores, como WDM.

Introdução aos drivers universais do Windows para áudio

IHVs podem desenvolver um driver Universal do Windows que funciona em todos os dispositivos (desktops, laptops, tablets, telefones). Isso pode reduzir o tempo de desenvolvimento e o custo para o desenvolvimento inicial e posterior manutenção do código.

Estas ferramentas estão disponíveis para desenvolver drivers universais do Windows:

  • Visual Studio 2015: Defina "Plataforma de destino" igual a "Universal". Para obter mais informações sobre como configurar o ambiente de desenvolvimento de driver, consulte Documentação do desenvolvedor de hardware do Windows e Criando um driver com o WDK.

  • Ferramenta APIValidadtor: Você pode usar a ferramenta ApiValidator.exe para verificar se as APIs chamadas pelo driver são válidas para um driver Universal do Windows. Essa ferramenta faz parte do WDK (Kit de Driver do Windows) para Windows 10 e é executada automaticamente se você estiver usando o Visual Studio 2015. Para obter mais informações, consulte APIValidator.

  • Documentação de referência de DDI: A documentação de referência de DDI é atualizada para indicar quais DDIs são suportadas pelos drivers universais do Windows. Para obter mais informações, consulte Referência de dispositivos de áudio.

Criar um driver de áudio universal

Para obter orientação passo a passo, consulte Documentação do desenvolvedor de hardware do Windows e Criando um driver com o WDK. Aqui está um resumo das etapas:

  1. Carregue a amostra de sysvad de áudio universal para usar como ponto de partida para seu driver de áudio universal. Como alternativa, comece com o modelo de driver WDM vazio e adicione o código do exemplo sysvad universal conforme necessário para o driver de áudio.

  2. Nas propriedades do projeto, defina Target Platform como "Universal".

  3. Criar um pacote de instalação: se o seu destino for um dispositivo que executa o Windows 10 para edições de área de trabalho (Home, Pro, Enterprise e Education), use um arquivo INF Universal. Se o seu destino for um dispositivo que executa o Windows 10 Mobile, use PkgGen para gerar um arquivo .spkg.

  4. Crie, instale, implante e depure o driver do Windows 10 para edições de área de trabalho ou Windows 10 Mobile.

Exemplo de código

Sysvad e SwapAPO foram convertidos para serem exemplos de driver Universal do Windows. Para obter mais informações, consulte Drivers de áudio de exemplo.

Interfaces de programação disponíveis para drivers universais do Windows para áudio

A partir do Windows 10, as interfaces de programação de driver fazem parte das edições baseadas no OneCoreUAP do Windows. Usando esse conjunto comum, você pode escrever um driver Universal do Windows. Esses drivers serão executados no Windows 10 para edições de área de trabalho e no Windows 10 Mobile e em outras versões do Windows 10.

As seguintes DDIs estão disponíveis ao trabalhar com drivers de áudio universais.

Converter um driver de áudio existente em um driver universal do Windows

Siga este processo para converter um driver de áudio existente em um driver Universal do Windows.

  1. Determine se as chamadas de driver existentes serão executadas no OneCoreUAP Windows. Verifique a seção de requisitos das páginas de referência. Para obter mais informações, consulte Referência de dispositivos de áudio.

  2. Recompile seu driver como um driver Universal do Windows. Nas propriedades do projeto, defina Target Platform como "Universal".

  3. Use a ferramenta ApiValidator.exe para verificar se as DDIs chamadas pelo driver são válidas para um driver Universal do Windows. Essa ferramenta faz parte do WDK (Kit de Driver do Windows) para Windows 10 e é executada automaticamente se você estiver usando o Visual Studio 2015. Para obter mais informações, consulte APIValidator.

  4. Se o driver chama interfaces que não fazem parte do OneCoreUAP, o compilador relata erros.

  5. Substitua essas chamadas por chamadas alternativas, crie uma solução alternativa de código ou escreva um novo driver.

Criação de uma instalação de driver de áudio componentizado

Visão geral

Para criar uma experiência de instalação mais suave e confiável e oferecer melhor suporte à manutenção de componentes, divida o processo de instalação do driver nos seguintes componentes.

  • DSP (se houver) e Codec
  • APO
  • Personalizações de OEM

Opcionalmente, arquivos INF separados podem ser usados para o DSP e Codec.

Este diagrama resume uma instalação de áudio componentizada.

Diagrama de pilha de áudio componentizado com driver DSP, codec e APOs.

Um arquivo INF de extensão separado é usado para personalizar cada componente de driver base para um sistema específico. As personalizações incluem parâmetros de ajuste e outras configurações específicas do sistema. Para obter mais informações, consulte Usando um arquivo INF de extensão.

Um arquivo INF de extensão deve ser um arquivo INF universal. Para obter mais informações, consulte Uso de um arquivo INF universal.

Para obter informações sobre como adicionar software usando arquivos INF, consulte Usando um arquivo INF de componente e Princípios de design DCH e Práticas recomendadas.

Enviando arquivos INF componentizados

Os pacotes APO INF devem ser enviados ao Partner Center separadamente do pacote de driver base. Para obter mais informações sobre como criar pacotes, consulte Introdução ao Windows HLK.

Arquivos INF componentizados SYSVAD

Para ver um exemplo de arquivos INF componentizados, examine o sysvad/TabletAudioSample, no GitHub.

Nome do arquivo Descrição
ComponentizedAudioSample.inf O arquivo INF de áudio de amostra componentizado base.
ComponentizedAudioSampleExtension.inf O driver de extensão para a base sysvad com personalizações adicionais de OEM.
ComponentizedApoSample.inf Um arquivo INF de extensão de exemplo APO.

Os arquivos INF tradicionais continuam disponíveis no exemplo SYSVAD.

Nome do arquivo Descrição
tabletaudiosample.inf Um arquivo INF monolítico da área de trabalho que contém todas as informações necessárias para instalar o driver.

Parâmetros de ajuste e configuração de recursos específicos do fornecedor do APO

Todas as configurações, parâmetros e valores de ajuste específicos do sistema do fornecedor do APO devem ser instalados por meio de um pacote INF de extensão. Em muitos casos, isso pode ser realizado de maneira simples com a diretiva INF AddReg. Em casos mais complexos, um arquivo de ajuste pode ser usado. 

Os pacotes de driver base não devem depender dessas personalizações para funcionar (embora, é claro, a funcionalidade possa ser reduzida). 

APPs de configurações de áudio UWP

Para implementar uma interface do usuário final, use um aplicativo de suporte de hardware (HSA) para um driver de áudio universal do Windows. Para obter mais informações, consulte Hardware Support App (HSA): Steps for Driver Developers.

Iniciando programaticamente aplicativos de suporte de hardware UWP

Para iniciar programaticamente um Aplicativo de Suporte de Hardware UWP, com base em um evento de driver (por exemplo, quando um novo dispositivo de áudio está conectado), use as APIs do Shell do Windows. As APIs do Shell do Windows 10 oferecem suporte a um método para iniciar a interface do usuário UWP com base na ativação de recursos ou diretamente por meio de IApplicationActivationManager. Você pode encontrar mais detalhes sobre a inicialização automatizada para aplicativos UWP em Automatizar a inicialização de aplicativos UWP do Windows 10. 

Uso da API AudioModules pelo fornecedor do APO e do driver de dispositivo

A API/DDI dos módulos de áudio foi projetada para padronizar o transporte de comunicação (mas não o protocolo) para comandos passados entre um aplicativo UWP ou serviço de modo de usuário para um módulo de driver de kernel ou bloco de processamento DSP. Os módulos de áudio requerem um driver que implemente a DDI correta para oferecer suporte à enumeração e comunicação de módulos. Os comandos são passados como binários e a interpretação/definição é deixada para o criador. 

No momento, os módulos de áudio não foram projetados para facilitar a comunicação direta entre um aplicativo UWP e um APO SW em execução no mecanismo de áudio.

Para obter mais informações sobre módulos de áudio, consulte Implementando a comunicação do módulo de áudio e Configurar e consultar módulos de dispositivo de áudio.

Construção de cordas APO HWID

As IDs de hardware do APO incorporam informações padrão e cadeias de caracteres definidas pelo fornecedor.

Eles são construídos da seguinte forma:

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)

Onde:

  • v(4) é o identificador de 4 caracteres para o fornecedor do dispositivo APO. Isso será gerenciado pela Microsoft. 
  • a(4) é o identificador de 4 caracteres para o APO, definido pelo fornecedor do APO. 
  • n(4) é o identificador atribuído pelo PCI SIG de 4 caracteres para o fornecedor do subsistema do dispositivo pai. Normalmente, esse é o identificador OEM.
  • s(4) é o identificador de subsistema definido pelo fornecedor de 4 caracteres para o dispositivo pai. Normalmente, esse é o identificador do produto OEM.

Avaliação de versão e data do Plug and Play INF para atualização do driver

O sistema Windows Plug and Play avalia a data e a versão do driver para determinar qual unidade instalar quando houver vários drivers. Para obter mais informações, consulte Como o Windows classifica drivers.

Para permitir que o driver mais recente seja usado, certifique-se e atualize a data e a versão, para cada nova versão do driver.

Chave de registro do driver APO

Para chaves de registro de driver/APO de áudio definidas por terceiros, use HKR.

Usar um serviço do Windows para facilitar a comunicação UWP <-> APO

Um Serviço do Windows não é estritamente necessário para o gerenciamento de componentes de modo de usuário, como APOs. No entanto, se o design incluir um servidor RPC para facilitar a comunicação UWP <-> APO, recomendamos implementar essa funcionalidade em um Serviço do Windows que controle o APO em execução no mecanismo de áudio. 

Criando o exemplo de áudio universal do Sysvad para área de trabalho do Windows 10

Conclua as etapas a seguir para criar o exemplo sysvad para área de trabalho do Windows 10.

  1. Localize o arquivo inf da área de trabalho (tabletaudiosample.inf) e defina o nome do fabricante para um valor como "Contoso"

  2. No Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) Solução 'sysvad' e escolha Gerenciador de Configurações. Se você estiver implantando em uma versão de 64 bits do Windows, defina a plataforma de destino como x64. Certifique-se de que as configurações e as configurações da plataforma sejam as mesmas para todos os projetos.

  3. Crie todos os projetos na solução sysvad.

  4. Localize o diretório de saída para a compilação a partir da compilação. Por exemplo, ele pode estar localizado em um diretório como este:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Copie os seguintes arquivos para o sistema que você deseja instalar o driver sysvad:

Arquivo Descrição
TabletAudioSample.sys O arquivo do driver.
tabletaudiosample.inf Um arquivo de informações (INF) contendo informações necessárias para instalar o driver.
sysvad.cat O arquivo de catálogo.
SwapAPO.dll Uma extensão de driver de exemplo para uma interface do usuário gerenciar APOs.
KeywordDetectorAdapter.dll Um detector de palavras-chave de exemplo.

Instalar e testar o driver

Siga estas etapas para instalar o driver usando o PnpUtil no sistema de destino.

  1. Abra o prompt de comando do administrador e digite o seguinte no diretório para o qual você copiou os arquivos de driver.

    pnputil -i -um tabletaudiosample.inf

  2. A instalação do driver sysvad deve ser concluída. Se houver erros, você poderá examinar este arquivo para obter informações adicionais: %windir%\inf\setupapi.dev.log

  3. No Gerenciador de dispositivos, no menu Exibir, escolha Dispositivos por tipo. Na árvore de dispositivos, localize Microsoft Virtual Audio Device (WDM) - Sysvad Sample. Isso costuma estar no nó Controladores de som, vídeo e jogos.

  4. No computador de destino, abra o Painel de Controle e navegue até Hardware e Som>Gerenciar dispositivos de áudio. Na caixa de diálogo Som, selecione o ícone do alto-falante rotulado como Microsoft Virtual Audio Device (WDM) - Sysvad Sample, selecione Definir padrão, mas não selecione OK. Isso manterá a caixa de diálogo Som aberta.

  5. Localize um MP3 ou outro arquivo de áudio no computador de destino e clique duas vezes para reproduzi-lo. Em seguida, na caixa de diálogo Som, verifique se há atividade no indicador de nível de volume associado ao driver de exemplo WDM (Microsoft Virtual Audio Device) - Sysvad.