Windows NT内核下的驱动通常称为KMD(Kernel-Mode Driver),下载并安装好DDK后,就可以编写KMD了。
编写一个KMD至少需要notepad+ddk。DDK使用C语言编写,驱动的函数有一个新的名字,例程,实际上二者没有必要刻意区分
一个KMD至少需要DriverEntry例程,和C语言中的main一样,DriverEntry是驱动程序的入口点,驱动程序加载时DriverEntry被调用。
下面程序和hello world一样,向一个终端输出字符串。不同的是,hello world输出到stdout控制台,而hello kmd输出到系统调试器,有一个工具可以检测那就是dbgView,可以查看。打开dbgView程序,加载该这个驱动就可以看到输出了
创建驱动很简单,在ddk程序菜单里面选择环境check/free,出现控制台窗口,cd到源文件目录,使用build 命令就可以了。注意源文件目录下有source和makefile文件。makefile文件可以从ddk任意一个例子里面拷贝过来
source文件里面用如下内容,具体还可以在查阅DDK文档,了解宏的意思。
TARGETNAME=hello
TARGETTYPE=DRIVER
TARGETPATH=obj
SOURCES= driver.c
#include <ntddk.h> /*DriverEntry例程*/ NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) { DbgPrint("hello kmd"); return STATUS_SUCCESS; }