You are on page 1of 6

Instalar um driver

Documentação do WDK
• WDK Viewer
– Start ї All Programs ї Windows Drivers Kits ї
WDK 6001.18002 ї Help ї WDK Documentation
– Microsoft Document Explorer viewer
– Consultar “WDK Samples” ї KMDF Samples

• CHM Release of the WDK Documentation


– Download:
• na página do WDK, em baixo, em “Resources”, ou
• google “WDK documentation”

TC2 Sérgio Lopes 2


Construção de um programa
• Do código fonte ao programa em execução

Código Fonte Compiler Código Assembler Código Objecto


(*.c, *.h, *.c++) Assembly (*.obj, *.o, *.lib)
(*.asm)
Incluindo

Linker
PreͲ
Processador

Programa em Executável
Loader
execução (processo) (*.exe, *.dll, *.sys)
Memória principal (RAM)

TC2 Sérgio Lopes 3

Estrutura de Directórios do WDK


• bin\
– Executáveis (compiler, linker, ...) e procedimentos de linha de comandos (ficheiros .bat e
.cmd) que suportam os ambientes de construção (build)
– Normalmente não são utilizados directamente
• debug\
– Versões “checked” do SO e HAL e ficheiros de símbolos associados
– Úteis para fazer “debug”
• help\
– Ficheiros com a documentação utilizados pelo MDE em formato próprio da MS
• inc\ e lib\
– Respectivamente, ficheiros .h e .inc, e bibliotecas (.lib), utilizados pelos ambientes de
construção para construir os drivers
• redist\
– Componentes redistribuíveis que suportam a instalação de drivers, incluindo o KMDF CoͲ
installer e componentes do DIFx.
• src\
– Source code for numerous sample Windows drivers and driverͲrelated utilities
• tools\
– executáveis para testar drivers, ferramentas de verificação e utilitários

TC2 Sérgio Lopes 4


Ambientes de construção de drivers
• Conjunto de variáveis que controla a construção de drivers para
diferentes arquitecturas de µP e diferentes SOs
• EncontramͲse em
– Start ї All Programs ї Windows Drivers Kits ї WDK 6001.18002 ї
Build Environments
• Escolha
– Windows XP ї x86 Checked
• Análise
– Conhecer as variáveis
• Executar o comando “set” em dois ambientes diferentes
– Utilizar variáveis na linha de comandos
• Executar “cd %ProgramFiles%”
– Mudar/Criar uma variável
• Executar “set MYVAR=Qualquer Coisa”
• Executar “set m”

TC2 Sérgio Lopes 5

Configurar a construção do driver


• Código fonte (ficheiros .c e .h)
• O ficheiro “sources”
– Lista os ficheiros a compilar e estabelece o valor de certas
macros
– Um em cada pasta com ficheirosͲfonte
– Ver “Utilizing a sources File Template”
• O ficheiro “makefile”
– Redireciona o “nmake” para o “makefile.def” geral do WDK
– Um em cada pasta com ficheiro “sources”
– Copiar de um dos exemplos
• O ficheiro opcional “dirs”
– Para compilar automaticamente código em subdirectorias
– Um em cada pasta com subpastas

TC2 Sérgio Lopes 6


Utilizar o ambiente de construção
• Preparar o ambiente de construção
– Start ї All Programs ї Windows Drivers Kits ї WDK
6001.18002 ї Build Environments ї Windows XP ї x86
Checked
• DeslocarͲse para a pasta do driver
– Escrever “cd \drivers\mydriver”
– Este caminho não pode ter espaços
• Lançar a ferramenta de construção
– Escrever “build –cZg”
• Resultado
– Ficheiro de driver, que é uma DLL com a extensão .sys
– Colocados em “%windir%\system32\drivers”

TC2 Sérgio Lopes 7

Instalar o Driver
• Driver Package (componentes de software que
suportam a instalação do dispositivo):
– Ficheiros de driver (.sys)
– Ficheiros de instalação
• A informação de configuração do dispositivo (ficheiro .inf)
• O catálogo de driver (ficheiro .cat)
• Opcionalmente coͲinstaladores (DLLs de assistência à
instalação; tipicamente quando a instalação requer leituras
do registry, pedidos de informação ao utilizador, ou outros
dados dinâmicos; de dispositivo, ou de classe)
– Outros ficheiros
• E.g., programa de instalação, property pages...

TC2 Sérgio Lopes 8


Ficheiro .INF
• Informação necessária para instalar e carregar o driver
• Guardado em “%windir%\inf” para posterior update do driver
• Modificar um dos exemplos do WDK (verificar com
“%public_root%\Tools\chkinf\ChkINF . /o chkinf_log”)
• Estrutura
– Organizado por secções com nome que contêm entradas (directivas,
quando começam com palavras predefinidas)
– Entradas podem fornecer informação ou apontar para outras secções
– Secção “Version”
– Secção “Manufacturer”
com directivas ї
• Seccções “Models”
com directivas ї
– Secções “DDInstall”

TC2 Sérgio Lopes 9

Ficheiro .cat
• Mistura encriptada de excertos de cada um dos ficheiros
no driver package
• Guardado em “%windir%\system32\CatRoot“
• Gerado com inf2cat
– “inf2cat /drv:. /os:XP_x86,Vista_x86 /v”
• Garante a autenticidade, integridade e confiança do driver
package, quando assinado digitalmente
• Assinatura de drivers em desenvolvimento:
– Dispensada em 2000, XP e Server 2003 (controlo da instalação
de dispositivos PnP em “System Properties ї Hardware ї
Driver Signing”)
– Requerida em Vista e posteriores (utilizaͲse a ferramenta
“MakeCert”)

TC2 Sérgio Lopes 10


Trabalho Prático
• Comentar o ficheiro “Sources”
• Construir o ficheiro .sys
• Comentar o ficheiro .inf
• Verificar o ficheiro .inf
• Construir um gráfico com todas as
dependências (explícitas e da doc. do WDF)
entre secções INF
• Construir o ficheiro .cat
TC2 Sérgio Lopes 11

You might also like