windows内核学习1

作者分享了自己学习Windows内核开发的过程,从编写简单的Hello World程序开始,遇到了C语言特性的问题,并解决了使用VS2010编译内核程序的困扰。通过调试内核,作者体验到了程序在内核环境下的运行情况,包括打印基本数据类型如整型。此外,文章还提到了设置编辑器以便于在虚拟机中进行内核开发的相关技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       学习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的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值