Drivers universais do Windows para áudio
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 dar suporte a tecnologias de driver de áudio anteriores, como o WDM.
Introdução aos drivers universais do Windows para Áudio
Os IHVs podem desenvolver um driver Universal do Windows que funcione em todos os dispositivos (desktops, laptops, tablets, telefones). Isso pode reduzir o tempo de desenvolvimento e o custo para o desenvolvimento inicial e a manutenção posterior do código.
Essas 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 do driver, consulte documentação do desenvolvedor de hardware do Windows e Criar um driver com o WDK.
Ferramenta APIValidator: você pode usar a ferramenta ApiValidator.exe para verificar se as APIs que seu driver chama são válidas para um driver Universal do Windows. Essa ferramenta faz parte do WDK (Windows Driver Kit) 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 da DDI é atualizada para indicar quais DDIs têm suporte por drivers Universais do Windows. Para mais informações, consulte Referência de Dispositivos de Áudio.
Criar um Driver de Áudio Universal
Para obter diretrizes passo a passo, consulte a documentação de desenvolvedor de hardware do Windows e o Criando um driver com o WDK. Aqui está um resumo das etapas:
Carregue a amostra de áudio universal sysvad para ser utilizada como ponto de partida para o seu driver de áudio universal. Como alternativa, comece com um template vazio de driver WDM e adicione o código do exemplo universal do sysvad conforme necessário para o seu driver de áudio.
Nas propriedades do projeto, defina a Plataforma de Destino como "Universal".
Crie um pacote de instalação: se o seu destino for o dispositivo que executa o Windows 10 para edições da área de trabalho (Home, Pro, Enterprise e Education), use um arquivo INF Universal. Se o seu destino for o dispositivo que executa o Windows 10 Mobile, use PkgGen para gerar um arquivo .spkg.
Crie, instale, implante e depure o driver para o Windows 10 em edições de desktop ou Windows 10 Mobile.
Código de exemplo
Sysvad e SwapAPO foram convertidos para serem exemplos universais de driver do Windows. Para mais informações, consulte Exemplos de drivers de áudio.
Interfaces de programação disponíveis para drivers universais do Windows para áudio
A partir do Windows 10, as interfaces de programação do driver fazem parte das edições baseadas em 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 da área de trabalho e no Windows 10 Mobile e em outras versões do Windows 10.
Ao trabalhar com drivers de áudio universais, os DDIs a seguir estarão disponíveis.
Converter um Driver de Áudio Existente em um driver Universal do Windows
Siga esse processo para converter um driver de áudio existente em um driver Universal do Windows.
Determine se suas chamadas de driver existentes funcionarão no Windows OneCoreUAP. Verifique a seção de requisitos das páginas de referência. Para mais informações, consulte Referência de Dispositivos de Áudio.
Recompile seu driver como um driver universal do Windows. Nas propriedades do projeto, defina a Plataforma de Destino como "Universal".
Use a ferramenta ApiValidator.exe para verificar se os DDIs que o driver chama são válidos para um driver Universal do Windows. Essa ferramenta faz parte do WDK (Windows Driver Kit) para Windows 10 e é executada automaticamente se você estiver usando o Visual Studio 2015. Para obter mais informações, consulte APIValidator.
Se o driver chamar interfaces que não fazem parte do OneCoreUAP, o compilador relatará erros.
Substitua essas chamadas por chamadas alternativas ou 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 dar melhor suporte à manutenção de componentes, divida o processo de instalação do driver nos seguintes componentes.
- DSP (se disponível) e Codec
- APO
- Personalizações OEM
Opcionalmente, arquivos INF separados podem ser usados para o DSP e o Codec.
Este diagrama resume uma instalação de áudio componentizada.
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 Usando 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 e Práticas Recomendadas DCH.
Enviando arquivos INF componentizados
Os pacotes APO INF devem ser enviados para o 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 do SYSVAD
Para ver um exemplo de arquivos INF componentizados, examine sysvad/TabletAudioSample no GitHub.
Nome do arquivo | Descrição |
---|---|
ComponentizedAudioSample.inf | O exemplo de arquivo de áudio INF de base componentizado. |
ComponentizedAudioSampleExtension.inf | O driver de extensão para a base sysvad com modificações adicionais feitas pelo OEM. |
ComponentizedApoSample.inf | Um exemplo de arquivo INF de extensão do 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. |
Configuração de recursos e parâmetros de ajuste específicos do fornecedor de 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 executado 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, naturalmente, a funcionalidade possa ser reduzida).
APPs de configurações de áudio UWP
Para implementar uma interface do usuário final, use um HSA (Aplicativo de Suporte de Hardware) para um driver de Áudio Universal do Windows. Para obter mais informações, consulte HSA (Aplicativo de Suporte a Hardware): passos para desenvolvedores de drivers.
Inicializando 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 estiver conectado), use as APIs do Windows Shell. As APIs do Shell do Windows 10 dão 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 no Automatizar a inicialização de aplicativos UWP do Windows 10.
Utilização de APO e de driver de dispositivo pelo fornecedor da API do AudioModules
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 um 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 exigem um driver implementando a DDI correta para dar suporte à enumeração e à comunicação do módulo. Os comandos são passados como binário e a interpretação/definição é deixada para o criador.
Atualmente, os Módulos de Áudio não foram projetados para facilitar a comunicação direta entre um aplicativo UWP e um SW APO em execução no mecanismo de áudio.
Para obter mais informações sobre módulos de áudio, consulte Implementando comunicação de módulos de áudio e Configurar e consultar módulos de dispositivo de áudio.
Construção de cadeias de caracteres HWID do APO
As IDs de Hardware do APO incorporam as informações padrão e as cadeias de caracteres definidas pelo fornecedor.
Eles são construídos da seguinte maneira:
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 de dispositivos 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 ao SIG PCI de 4 caracteres para o fornecedor do subsistema para o 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.
Versão do INF Plug and Play e avaliação da data 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 os 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 do registro do driver do APO
No caso de driver de áudio/chaves de registro do APO definidos por terceiros, utilize HKR.
Utilizar um Serviço do Windows para facilitar a comunicação UWP <-> APO.
Um Serviço Windows não é estritamente necessário para o gerenciamento de componentes do modo de usuário, como APOs. No entanto, se o seu design incluir um servidor RPC para facilitar a comunicação UWP <-> APO, recomendamos implementar essa funcionalidade em um Serviço do Windows, que irá então controlar o APO em execução no mecanismo de áudio.
Criação de exemplo de áudio universal Sysvad para área de trabalho do Windows 10
Conclua as etapas a seguir para criar o exemplo de sysvad para a área de trabalho do Windows 10.
Localize o arquivo inf da área de trabalho (tabletaudiosample.inf) e defina o nome do fabricante como um valor, por exemplo, "Contoso"
No Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) solução 'sysvad' e escolha o Configuration Manager. Se você estiver implantando em uma versão de 64 bits do Windows, defina a plataforma de destino como x64. Certifique-se de que a configuração e os ajustes da plataforma sejam os mesmos para todos os projetos.
Compile todos os projetos na solução sysvad.
Localize o diretório de saída para a compilação no Build. 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
Copie os seguintes arquivos para o sistema que você deseja instalar o driver sysvad:
Arquivo | Descrição |
---|---|
TabletAudioSample.sys | O arquivo de driver. |
tabletaudiosample.inf | Um arquivo INF (informações) que contém informações necessárias para instalar o driver. |
sysvad.cat | O arquivo de catálogo. |
SwapAPO.dll | Um exemplo de extensão de driver para gerenciar APOs em uma interface. |
KeywordDetectorAdapter.dll | Um detector de palavras-chave de exemplo. |
Instalar e testar o driver
Siga estes passos para instalar o driver usando o PnpUtil no sistema de destino.
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 -a tabletaudiosample.inf
A instalação do driver sysvad deve ser concluída. Se houver erros, você poderá examinar esse arquivo para obter informações adicionais:
%windir%\inf\setupapi.dev.log
No Gerenciador de Dispositivos, no menu Exibir, escolha Dispositivos por tipo. Na árvore de dispositivos, localize o WDM (Dispositivo de Áudio Virtual) da Microsoft – Exemplo de Sysvad. Isso costuma estar no nó Controladores de som, vídeo e jogos.
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 WDM (Dispositivo de Áudio Virtual da Microsoft) – Exemplo de Sysvad e, em seguida, selecione Definir Padrão, mas não selecione OK. Isso manterá a caixa de diálogo Som aberta.
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 WDM (Dispositivo de Áudio Virtual) da Microsoft – Sysvad Sample.