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.

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:

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.


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:

Més exemples de drivers per a Masm


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.

Descarregueu la llibreria ntoskrnl.lib corregida per a versions anteriors al MASM32 v11