Programació de controladors NT (drivers)
L'Easy Code
versió 1.06.0.0001
i posteriors incorporen el nou tipus de
projecte Driver NT
clàssic (sys), el
qual us permet introduir-vos
a la programació de controladors (drivers)
de 32 bits.
Quan es tria
un
projecte del tipus Driver NT
clàssic (sys),
es crea l'estructura bàsica i també s'afegeixen
els mínims fitxers que es necessiten (ntddk.inc,
ntoskrnl.inc
i ntoskrnl.lib).
Aquest
codi predeterminat de driver
es pot compilar sense
errors, però simplement no fa res. AVÍS:
El fitxer ntddk.inc és inclòs
SEMPRE
per l'Easy Code als projectes driver, fins i
tot si es treu de l'Explorador del Projecte.
A més dels fitxers .inc
usuals que es troben a la carpeta
\Masm32\Include,
la programació
de drivers
requereix alguns fitxers .inc
addicionals que es poden trobar a la
carpeta \EasyCode.Ms\Include.
En conseqüència, i per tal d'evitar errors
en la programació de drivers,
tingueu en
compte les següents consideracions:
Tot i que l'Easy Code proporciona el
suport necessari, la programació
de drivers
no és gens fàcil,
especialment a l'hora de depurar el codi, i
la majoria d'errors de programació acaben
produint una pantalla blava (BSOD).
Si voleu iniciar-vos en aquest tipus de
programació, podeu trobar un bon
tutorial per a principiants a la web Kernel
Mode Drivers.
També podeu trobar un
simple exemple de driver
de 32 bits (ECPDriver),
que obté tots els processos que hi ha
engegats al sistema, i un petit programa per
a provar-lo (ECPDrvTest).
Tots dos han estat programats per Héctor
A. Medina i es troben a la carpeta
\EasyCode.Ms\Examples.
Podeu obtenir més exemples
de drivers
de 32 bits, fent
clic a l'enllaç següent:
Atès que el projecte predeterminat de
driver
generat per l'Easy Code utilitza la macro TextAddrW,
l'opció Macros de
l'Easy Code (a les Propietats
del projecte) ha d'estar marcada
per tal que el projecte pugui ser
generat sense errors.
OBSERVACIONS:
El tipus de
projecte driver
de l'Easy Code només contempla la
programació de drivers
NT de 32 bits (.sys)
per a Windows NT i posteriors, per la qual cosa no hi ha
cap suport per a drivers
de Windows 95/98/ME (.vxd).
De tota manera, podeu dissenyar i generar drivers
NT en
Windows 95/98/ME, tot i que no podreu provar-los perquè
no funcionen en cap d'aquests tres sistemes operatius.
AGRAÏMENTS: Héctor Antonio Medina, qui amb el seu constant treball, ajuda i assessorament ha fet possible que l'Easy Code inclogui el suport necessari per a la programació de drivers.
MOLT
IMPORTANT:
La llibreria ntoskrnl.lib
que ve amb les versions anteriors al
MASM32 v11, referencia totes les seves crides al
fitxer ntoskrnl.dll enlloc de ntoskrnl.exe
(ntoskrnl.dll no existeix al sistema). En
conseqüència, els projectes generats amb
aquesta llibreria no poden funcionar mai. Per a
solucionar aquest problema, només heu de fer un
clic a l'enllaç indicat a sota per tal de
descarregar la llibreria ntoskrnl.lib
degudament
modificada que funciona correctament, i moure-la
a la carpeta \Masm32\Lib
sobreescrivint
l'existent (cap altre projecte serà afectat
per aquest canvi). Tantmateix, aquest canvi NO
SERÀ necessari
si esteu utilitzant el MASM32 v11 o posterior.