学习windows内核有几个月了,买了本书,随便看看,还有视频,也跳着看,没什么条例。所以决定把学习的历程,发上来,自己欣赏一下。
刚开始搞,当然是helloworld了,头一次写个helloworld,用C,还出了点问题,让我不太明白,不过感觉和内核没关,是C的特性吧。
就这段,居然注册的卸载回调函数写在driverEntry函数的后面,vs2010不能编译成功。。。可能是我没经验吧,一直就会eclipse。井底之蛙了。拷上来,编译成功。哦,我说为什么用C写程序,在开始要注册函数名,可能有点关系!
#include <ntddk.h>
VOID wori(
PDRIVER_OBJECT driver
)
{
KdPrint(("ooooooooooooooooooover!"));
}
NTSTATUS DriverEntry(
PDRIVER_OBJECT driver,
PUNICODE_STRING reg_path
)
{
KdPrint(("bbbbbbbbbbbbbbbbbbbbbbegin!"));
driver->DriverUnload = wori;
return STATUS_SUCCESS;
}
编译,成功。哦对了,开始设置vs2010,让他能编译内核,生成个.sys文件,也费了不少劲,查了一堆资料。顺便吐槽一下,这编辑器,写博客还不让用tab缩进,不习惯啊!!
脱到虚拟机中,用monitor加载,打开debugView,内核信息过滤显示工具(名字不是很准确了,反正是我知道他有哪些功能就在名字上体现一下),在服务的启动和停止时,打印的调试信息就在窗口中显示出来。
虽然看起来是麻烦版的helloworld,但是让我很兴奋啊,哈哈!
我靠,我写了个
int a=5;
然后打印a都能行,内核也认识int类型么?
写个汇编试试啊,_asm的