Programación de controladores NT (drivers)
Easy Code
versión 1.06.0.0001
y posteriores incorporan el nuevo tipo de
proyecto Driver NT
clásico (sys), el
cual le permite introducirse
en la programación de controladores (drivers)
de 32 bits.
Cuando se
elige un
proyecto del tipo Driver NT
clásico (sys),
se crea la estructura básica y también se
agregan los mínimos archivos
que se necesitan (ntddk.inc,
ntoskrnl.inc
y ntoskrnl.lib).
Este
código predeterminado de driver
se puede
compilar sin errores, pero simplemente no hace
nada. AVISO:
El archivo ntddk.inc es incluido SIEMPRE
por Easy Code en los proyectos driver, incluso
si se quita del Explorador del Proyecto.
Además de
los archivos .inc
usuales que se encuentran en la carpeta
\Masm32\Include,
la programación
de drivers
requiere algunos archivos .inc
adicionales que pueden encontrarse en la
carpeta \EasyCode.Ms\Include.
En consecuencia, y para evitar errores en
la programación de drivers,
tenga en
cuenta las siguientes consideraciones:
Aunque Easy Code proporciona el soporte necesario,
la programación de drivers
no es nada fácil,
especialmente a la hora
de depurar el código, y la mayoria de errores
de programación acaban produciendo una pantalla
azul (BSOD). Si desea iniciarse
en ese tipo de programación,
puede encontrar un buen tutorial para principiantes en la web Kernel Mode
Drivers.
También puede encontrar un
simple ejemplo de driver
de 32 bits (ECPDriver),
que obtiene todos los procesos que hay en marcha
en el sistema, y un pequeño programa para
probarlo (ECPDrvTest).
Ambos han sido
programados por Héctor A. Medina y se
encuentran en la carpeta
\EasyCode.Ms\Examples.
Puede obtener más ejemplos
de drivers
de 32 bits,
clicando el siguiente enlace:
Puesto que el proyecto predeterminado
de driver
generado por Easy Code hace uso de la macro TextAddrW,
la opción Macros de
Easy Code (en las Propiedades
del proyecto) debe estar marcada
para que el proyecto pueda ser
generado sin errores.
OBSERVACIONES:
El tipo de
proyecto driver
de Easy Code solamente contempla la
programación de
drivers
NT de 32 bits (.sys)
para Windows NT y posteriores, por lo cual no hay
ningún soporte para drivers
de Windows 95/98/ME
(.vxd).
Sin embargo, puede diseñar y generar
drivers
NT en Windows 95/98/ME, aunque no podrá probarlos
porque no funcionan en ninguno de esos tres sistemas
operativos.
AGRADECIMIENTOS: Héctor Antonio Medina, quien con su constante trabajo, ayuda y asesoramiento ha hecho posible que Easy Code incluya el soporte necesario para la programación de drivers.
MUY
IMPORTANTE:
La
librería ntoskrnl.lib
que viene con las versiones anteriores
a MASM32 v11, referencia todas sus llamadas al
archivo ntoskrnl.dll en lugar de ntoskrnl.exe
(ntoskrnl.dll no existe en el sistema). En
consecuencia, los proyectos generados con esa
librería no pueden funcionar nunca. Para solucionar este
problema, solamente debe hacer un clic en el enlace
indicado más abajo para descargar la librería
ntoskrnl.lib
debidamente modificada que
funciona correctamente, y moverla a la carpeta
\Masm32\Lib
sobreescribiendo la existente (ningún otro proyecto
se verá afectado por este cambio). Sin embargo, este
cambio NO SERÁ
necesario
si está utilizando MASM32 v11 o
posterior.