Tutorial: Escrever um driver Universal do Windows (UMDF 2) com base em um modelo
Este tópico descreve como escrever um de driver
Pré-requisitos
Siga as etapas para instalar Windows Driver Kit (WDK). Ferramentas de Depuração para Windows estão incluídas quando o utilizador instala o WDK.
Instale Visual Studio 2022. Ao instalar o Visual Studio 2022, selecione a carga de trabalho Desenvolvimento de área de trabalho com C++ e, em seguida, em Componentes individuais adicione:
- MSVC v143 - VS 2022 C++ ARM64/ARM64EC bibliotecas mitigadas contra Spectre (Mais recente)
- MSVC v143 - VS 2022 C++ x64/x86 bibliotecas mitigadas contra Spectre (Mais recente)
- C++ ATL para as mais recentes ferramentas de compilação v143 com Spectre Mitigations (ARM64/ARM64EC)
- C++ ATL para as mais recentes ferramentas de compilação v143 com Spectre Mitigations (x86 & x64)
- C++ MFC para as mais recentes ferramentas de compilação v143 com Spectre Mitigations (ARM64/ARM64EC)
- C++ MFC para as mais recentes ferramentas de compilação v143 com Spectre Mitigations (x86 & x64)
- Windows Driver Kit
Criar e desenvolver um driver
Observação
Ao criar um novo driver KMDF ou UMDF, você deve selecionar um nome de driver que tenha 32 caracteres ou menos. Este limite de comprimento é definido em wdfglobals.h.
Abra o Visual Studio. No menu Arquivo, escolha Novo > Projeto.
Na caixa de diálogo Criar um novo projeto, selecione C++ na lista suspensa esquerda, escolha Windows no meio e escolha Driver na lista suspensa direita.
Selecione driver de modo de usuário (UMDF V2) na lista de tipos de projeto. Selecione Avançar.
Dica
Se você não conseguir encontrar modelos de projeto de driver no Visual Studio, a extensão WDK Visual Studio não foi instalada corretamente. Para resolver isso, inicie
Visual Studio Installer , selecioneModificar , adicionede Kits de Driver do Windows na guia Componente Individual e selecione Modificar .Na caixa de diálogo Configurar o seu novo projeto, digite "UmdfDriver" no campo nome do projeto.
Observação
Ao criar um novo driver KMDF ou UMDF, você deve selecionar um nome de driver que tenha 32 caracteres ou menos. Este limite de comprimento é definido em wdfglobals.h.
No campo Local, insira o diretório onde você deseja criar o novo projeto.
Marque Colocar solução e projeto no mesmo diretório e selecione Criar.
Visual Studio cria um projeto e uma solução. Você pode vê-los na janela Explorador de Soluções. (Se a janela Gerenciador de Soluções não estiver visível, escolha Gerenciador de Soluções no menu Exibir.) A solução tem um projeto de driver chamado UmdfDriver. Para ver o código-fonte do driver, abra qualquer um dos arquivos em Source Files. Driver.c e Device.c são bons lugares para começar.
Na janela do
Gerenciador de Soluções, selecione e mantenha pressionado (ou clique com o botão direito do mouse) Solução 'UmdfDriver' (1 de 1 projeto) e escolhaConfiguration Manager . Escolha uma configuração e plataforma para o projeto de driver. Por exemplo, escolha Depurar e x64.Na janela Explorador de Soluções, selecione e segure (ou clique com o botão direito) UmdfDrivere escolha Propriedades. Navegue até Propriedades de Configuração > Configurações de Driver >Geral e observe que Plataforma de Destino tem como padrão Universal.
Para criar o driver, selecione Build Solution no menu Build. O Microsoft Visual Studio exibe o progresso da compilação na janela Output. (Se a janela Output não estiver visível, escolha Output no menu View.)
Verifique se a saída da compilação inclui:
> Driver is 'Universal'.
Quando você tiver verificado que a solução criada com êxito, você pode fechar o Visual Studio.
Para ver o driver compilado, no Explorador de Ficheiros, vá para a pasta UmdfDriver e, em seguida, para x64\Debug\UmdfDriver. O diretório inclui os seguintes arquivos:
- UmdfDriver.dll -- o arquivo de driver de modo de usuário
- UmdfDriver.inf -- um arquivo de informações que o Windows usa quando você instala o driver
Implantar e instalar o driver Universal do Windows
Normalmente, quando você testa e depura um driver, o depurador e o driver são executados em computadores separados. O computador que executa o depurador é chamado de computador hoste o computador que executa o driver é chamado de computador de destino. O computador de destino também é chamado de computador de teste .
Importante
Até agora, você usou o Visual Studio para criar um driver no computador host. Agora você precisa configurar um computador de destino. Siga as instruções em Preparar um computador para implantação e teste de driver (WDK 10). Em seguida, você estará pronto para implantar, instalar, carregar e depurar seu driver.
No computador host, abra sua solução no Visual Studio. Você pode clicar duas vezes no arquivo de solução, UmdfDriver.sln, na pasta UmdfDriver.
Na janela Explorador de Soluções, selecione e segure (ou clique com o botão direito) UmdfDrivere escolha Propriedades.
Na janela Páginas de Propriedades do UmdfDriver, vá para Propriedades de Configuração > Instalação do Driver > Implementação, conforme mostrado aqui.
Verifique Remover versões anteriores do driver antes da implantação.
Para Nome do Dispositivo de Destino, selecione o nome do computador que você configurou para teste e depuração.
Selecione Atualização de Driver por ID de Hardwaree insira o ID de Hardware para o seu driver. Neste exercício, a ID de hardware é Root\UmdfDriver. Selecione OK.
Nota Neste exercício, o ID de hardware não identifica uma peça real de hardware. Identifica um dispositivo imaginário que será colocado na árvore de dispositivos como filho do nó raiz. Para hardware físico, não selecione Atualização do Driver ID de Hardware; em vez disso, selecione Instalar e Verificar. Você pode ver o ID do hardware no arquivo de informações do driver (INF). Na janela Solution Explorer, vá para UmdfDriver > Driver Filese clique duas vezes em UmdfDriver.inf. O ID do hardware está em [Standard.NT$ARCH$].
[Standard.NT$ARCH$] %DeviceName%=MyDevice_Install,Root\UmdfDriver
No menu Depurar, escolha Iniciar Depuraçãoou pressione F5 no teclado.
Aguarde até que o driver tenha sido implantado, instalado e carregado no computador de destino. Isso pode levar vários minutos.
Usando o Driver Module Framework (DMF)
O Driver Module Framework (DMF) é uma extensão do WDF que permite funcionalidade extra para um desenvolvedor de WDF. Ele ajuda os desenvolvedores a escrever qualquer tipo de driver WDF melhor e mais rápido.
DMF como uma estrutura permite a criação de objetos WDF chamados DMF Modules. O código para esses módulos DMF pode ser compartilhado entre diferentes drivers. Além disso, o DMF agrupa uma biblioteca de módulos DMF que desenvolvemos para nossos drivers e achamos que forneceria valor para outros desenvolvedores de drivers.
O DMF não substitui o WDF. DMF é uma segunda estrutura que é usada com WDF. O desenvolvedor que aproveita o DMF ainda usa WDF e todas as suas primitivas para escrever drivers de dispositivo.
Para obter mais informações, consulte DMF (Driver Module Framework) .
Tópicos relacionados
Desenvolvimento, teste e implantação de drivers