Escrever um driver Universal do Windows (UMDF 2) com base em um modelo
Este tópico descreve como escrever um driver Universal do Windows usando o UMDF (User-Mode Driver Framework) 2. Você começará com um modelo do Microsoft Visual Studio e, em seguida, implantará e instalará o driver em um computador separado.
Para começar, verifique se você tem a versão mais recente do Microsoft Visual Studio e o WDK (Kit de Driver do Windows). Para obter links de download, consulte Baixar o WDK (Kit de Driver do Windows).
Ferramentas de depuração para Windows é incluído quando você instala o WDK.
Criar e criar 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. Esse 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 na lista suspensa do 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.
Na caixa de diálogo Configurar 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. Esse 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.
O Visual Studio cria um projeto e uma solução. Veja-os na janela Gerenciador de Soluções. (Se o A janela Gerenciador de Soluções não está 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 Arquivos de código-fonte. Driver.c e Device.c são bons lugares para começar.
Na janela 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 Depurar e x64.
Na janela Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) UmdfDriver e escolha Propriedades. Navegue até Configurações > Gerais do Driver de Propriedades > de Configuração e observe que o padrão Plataforma de Destino é Universal.
Para criar seu driver, escolha Build Solution no menu Build . O Microsoft Visual Studio exibe o progresso da compilação na janela Saída . (Se o A janela de saída não está visível, escolha Saída no menu Exibir.)
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 criado, 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 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 host e o computador que executa o driver é chamado de computador de destino. O computador de destino também é chamado de computador de teste.
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ê 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 Gerenciador de Soluções, selecione e segure (ou clique com o botão direito do mouse) UmdfDriver e escolha Propriedades.
Na janela Páginas de Propriedades do UmdfDriver, vá para Implantação de Instalação > do Driver de Propriedades > de Configuração, conforme mostrado aqui.
Marque Remover versões anteriores do driver antes da implantação.
Em Nome do Dispositivo de Destino, selecione o nome do computador que você configurou para teste e depuração.
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.
Observação Neste exercício, a ID de hardware não identifica uma peça real de hardware. Ele identifica um dispositivo imaginário que receberá um lugar na árvore de dispositivos como um filho do nó raiz. Para hardware real, não selecione Atualização de driver de ID de hardware, em vez disso, selecione Instalar e verificar. Você pode ver a ID do hardware no arquivo de informações do driver (INF). Na janela Gerenciador deSoluções, vá para Arquivos de Driver UmdfDriver > e clique duas vezes em UmdfDriver.inf. A ID de hardware está em [Standard.NT$ARCH$].
[Standard.NT$ARCH$] %DeviceName%=MyDevice_Install,Root\UmdfDriver
No menu Depurar, escolha Iniciar Depuração ou 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 DMF (Driver Module Framework)
O DMF (Driver Module Framework) é uma extensão do WDF que permite funcionalidade extra para um desenvolvedor de driver WDF. Ele ajuda os desenvolvedores a escrever qualquer tipo de driver WDF melhor e mais rápido.
DMF como um framework permite a criação de objetos WDF chamados DMF Modules. O código para esses 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 forneceriam valor a 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 o WDF e todas as suas primitivas para gravar drivers de dispositivo.
Para obter mais informações, consulte Driver Module Framework (DMF).
Tópicos relacionados
Desenvolvimento, teste e implantação de drivers