Compartilhar via


Tutorial: Escrever um driver Universal do Windows (UMDF 2) com base em um modelo

Este artigo descreve como escrever um driver Universal do Windows usando User-Mode Driver Framework (UMDF) 2. Comece com um modelo do Microsoft Visual Studio e, em seguida, implante e instale o driver em um computador separado.

Pré-requisitos

  • Siga as etapas para instalar do Windows Driver Kit (WDK). Ferramentas de Depuração para Windows são incluídas quando você instala o WDK.

  • Instale Visual Studio 2022. Ao instalar o Visual Studio 2022, selecione a carga de trabalho Desenvolvimento desktop com C++ e, em Componentes individuais adicione:

    • MSVC v143 - VS 2022 C++ ARM64/ARM64EC bibliotecas mitigadas contra Spectre (Última versão)
    • MSVC v143 – VS 2022 C++ x64/x86 bibliotecas com mitigação de Spectre (mais recente)
    • ATL do C++ para as mais recentes ferramentas de build v143 com Mitigações de Espectro (ARM64/ARM64EC)
    • ATL do C++ para as mais recentes ferramentas de build v143 com Mitigações de Espectro (x86 & x64)
    • C++ MFC para as ferramentas de compilação v143 mais recentes com mitigações do Spectre (ARM64/ARM64EC)
    • MFC do C++ para as mais recentes ferramentas de build v143 com Mitigações de Espectro (x86 & x64)
    • Kit de Driver do Windows

Criar e compilar um driver

Observação

Ao criar um novo driver KMDF ou UMDF, você deve selecionar um nome de driver com 32 caracteres ou menos. Esse limite de comprimento é definido em wdfglobals.h.

  1. Abra o Visual Studio. No menu Arquivo, escolha Novo > Projeto.

  2. Na caixa de diálogo Criar um novo projeto, selecione C++ na lista suspensa esquerda, escolha Windows no menu suspenso do meio e escolha Driver Driver na lista suspensa à direita.

  3. Selecione o Driver do Modo de Usuário (UMDF V2) na lista de tipos de projeto. Selecione Próximo.

    Captura de tela da nova caixa de diálogo do projeto, mostrando o driver do modo de usuário selecionado.

    Dica

    Se você não encontrar modelos de projeto de driver no Visual Studio, isso significa que a extensão WDK do Visual Studio não foi instalada corretamente. Para resolver isso, execute o Instalador do Visual Studio, selecione Modificar, adicione Kits de driver do Windows na guia Componente Individual e selecione Modificar.

  4. Na caixa de diálogo Configurar seu novo projeto , insira "UmdfDriver" no campo Nome do Projeto .

    Observação

    Ao criar um novo driver KMDF ou UMDF, você deve selecionar um nome de driver com 32 caracteres ou menos. Esse limite de comprimento é definido em wdfglobals.h.  

  5. No campo Local, insira o diretório no qual você deseja criar o novo projeto.

  6. Verifique Colocar solução e projeto no mesmo diretório e selecione Criar.

    Captura de tela da caixa de diálogo de configuração do projeto.

    O Visual Studio cria um projeto e uma solução. Você pode vê-los na janela do Gerenciador de Soluções. (Se a janela do Gerenciador de Soluções não estiver visível, escolha o 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 Arquivos de Origem. Driver.c e Device.c são bons locais para começar.

    Captura de tela do gerenciador de soluções mostrando os arquivos no projeto de driver.

  7. Na janela do Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) solução 'UmdfDriver' (1 de 1 projeto) e escolha Gerenciador de Configurações. Escolha uma configuração e uma plataforma para o projeto de driver. Por exemplo, escolha Debug e x64.

  8. Na janela Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) UmdfDriver e escolha Propriedades. Navegue até Propriedades de Configuração > Configurações do Driver > Geral e observe que a Plataforma de Destino tem o padrão definido como Universal.

  9. Para compilar o driver, escolha Compilar Solução no menu Compilar. O Microsoft Visual Studio exibe o progresso da compilação na janela Saída . (Se a janela Saída não estiver visível, escolha Saída no menu Exibir .)

    Verifique se a saída de build inclui:

    >    Driver is 'Universal'.
    

    Ao verificar se a solução foi criada com êxito, você pode fechar o Visual Studio.

  10. Para ver o driver compilado, no Explorador de Arquivos, 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 do 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 Provisionar um computador para implantação e teste de driver (WDK 10). Em seguida, você está pronto para implantar, instalar, carregar e depurar seu driver.

  1. 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.

  2. Na janela do Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) UmdfDriver e escolha Propriedades.

  3. Na janela Páginas de Propriedades do UmdfDriver, acesse Propriedades de Configuração > Instalação do Driver > Implantação, conforme mostrado aqui.

  4. Marque a caixa Remover versões anteriores do driver antes da implantação.

  5. Para Nome do Dispositivo de Destino, selecione o nome do computador que você configurou para teste e depuração.

  6. Selecione Atualização de driver de ID de hardware e insira a ID de hardware do driver. Neste exercício, a ID de hardware é Root\UmdfDriver. Selecione OK.

    captura de tela das páginas de propriedades do umdfdriver, mostrando a instalação do driver de implantação selecionada

    Observação

    Neste exercício, a ID de hardware não identifica uma parte real do hardware. Ela identifica um dispositivo imaginário que receberá um lugar na árvore de dispositivos como filho do nó raiz. Para hardware real, não selecione Atualização do Driver de ID de Hardware; em vez disso, selecione Instalar e Verificar. Você pode ver a ID de hardware no arquivo INF (informações do driver). Na janela Gerenciador de Soluções, vá para Arquivos de Driver do UmdfDriver >e clique duas vezes em UmdfDriver.inf. O ID de hardware está em [Standard.NT$ARCH$].

    [Standard.NT$ARCH$]
    %DeviceName%=MyDevice_Install,Root\UmdfDriver
    
  7. No menu Depurar , escolha Iniciar Depuração ou pressione F5 no teclado.

  8. Aguarde até que o driver seja implantado, instalado e carregado no computador de destino. Isso pode levar vários minutos.

Usando o DMF (Driver Module Framework)

O DMF (Driver Module Framework) é uma extensão do WDF que permite funcionalidade extra para um desenvolvedor de driver do WDF. Ele ajuda os desenvolvedores a escrever qualquer tipo de driver WDF melhor e mais rápido.

O DMF como uma estrutura permite a criação de objetos WDF chamados Módulos DMF. O código desses módulos DMF pode ser compartilhado entre drivers diferentes. 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 driver.

O DMF não substitui o WDF. O DMF é uma segunda estrutura usada com o WDF. O desenvolvedor que usa DMF ainda usa o WDF e todos os seus primitivos para gravar drivers de dispositivo.

Para obter mais informações, consulte DMF (Driver Module Framework).