Rodrigo Strauss :: Blog
Como fazer drivers para Windows NT/2000/XP/2003, parte 1
A dúvida mais frequente que eu recebo pelo formulário de contato é: "como eu faço para desenvolver drivers para Windows?". Vou publicar algumas dicas aqui para quem está iniciando.
Pré requisitos
Primeiramente eu espero que você seja um bom programador, programar drivers não é fácil. :-)
Para fazer um driver, você precisa SABER programar drivers (programação kernel mode). Parece óbvio mas não é. Eu recebo todo mês pelo correio a newsletter da OSR, e a do mês passado era uma edição especial com o dobro do tamanho normal, falando sobre teste de drivers. E lá eu li algo muito interessante: em kernel mode, é impossível fazer programação cowboy. Programação cowboy é quando você não entende muito do assunto, pega um código exemplo daquilo que você quer e sai ajustando e remendando até que fique bom, e depois entrega para o cliente. Quando a coisa roda em kernel mode, isso nunca vai ficar bom, a não ser que você saiba mesmo o que está fazendo. Eu conheço uma empresa que está remendando um driver faz mais de dois anos, e até hoje não funciona direito.
Você precisa ser um bom programador C, ponto. Caso você ainda tenha dúvida sobre ponteiros ou estruturas de dados, programação de drivers é um péssimo lugar para treinar isso. O indicado é que você consiga fazer um programa Win32 com certa facilidade antes de se aventurar a programar drivers. Alguns conceitos de passagem de parâmetros IN e OUT usando estruturas e ponteiros void que viram ponteiro para estruturas mágicas também são usados em Win32. Ah, e se você não souber o que é uma lista ligada, veja antes na wikipedia, você vai usar isso muito.
(E antes que alguém pergunte, experiência com C#, VB.NET, VB6 ou Java não vai te ajudar em muita coisa além do treino em lógica de programação)
Onde encontrar informações
Agora que você já passou pelo blá-blá-blá, vamos ao que realmente interessa. Se você quer programar em kernel mode você terá que estudar bastante, e é melhor que comece o quanto antes.
Livros
Microsoft Windows Internals - Esse é o primeiro que você deve ler e reler. Não trata especificamente sobre programação kernel mode, mas descreve o funcionamento do kernel do Windows. E é ESSENCIAL que você saiba isso.
Programming the Windows Driver Model - Esse trata especificamente de programação kernel mode. Windows Driver Model (WDM) é um modelo de programação de drivers (mais voltado para drivers que controlam hardware). Caso seu driver siga as regras do WDM, seu driver pode ser compilado para Windows 2000 ou superior e Windows 98 e superior. Mesmo que seu driver não seja para um hardware (um firewall é um driver e não controla hardware), vale a pena ler esse livro, ele explica muito bem como funciona a sincronização e o I/O em kernel mode.
Existem mais livros, esses dois são os que eu tenho e uso para consulta. Procure na Amazon.
Internet
OSR Online - Empresa dos Estados Unidos que além de dar treinamentos sobre desenvolvimento kernel mode, disponibiliza bastante material sobre isso.
Windows Drivers Developer's Digest (W3D) - Artigos escritos por autoridades do assunto, como Walter Oney e Thomas Divine.
Listas de discussão - Nessa categoria temos as listas da OSR, o newsgroup da Microsoft sobre drivers e a lista da PCAUSA (específica para a parte de rede e afins).
Na continuação dessa série, falarei sobre o DDK e como colocar a mão na massa.
Em 21/11/2004 15:47, por Rodrigo Strauss





Ótimo conteúdo,muito bem explicado e o melhor totalmente em portugues.Parabens Rodrigo,e obrigado por compartilhar o seu conhecimento com os demais
flw