(一)NT驱动基础——Hello World

本文介绍了如何使用C语言编写一个简单的Windows内核模式驱动程序,包括编写HelloWorld示例代码、DbgPrint的使用及调试信息输出控制方法,并详细讲解了如何设置MakeFile和Sources文件进行编译。

我习惯使用C++写驱动,好处很多,但是代码会复杂一点,所以以下代码都用C来写

 

Hello World作为所有编程语言的起始阶段,不要轻视它,回避它。

一、示例代码

//Hello World.c

NTSTATUS DriverEntry( PDRIVER_OBJECT pDriver,PUNICODE_STRING pRegistryPath)
{


  DbgPrint("DriverEnter end/n");


  return STATUS_SUCCESS;
}

 

二、分析

1.DriverEntry是驱动程序的入口函数,相当于用户模式下的main

 

2.DbgPrint是在内核模式下printf,并且打印信息不是通过控制输出的,但可以在软件DbgView下显示。

事实上我们更习惯于,将DbgPrint包装起来,如下:

#if DBG
#define KdPrint(a) DbgPrint(a)
#else
#define KdPrint(a)
#endif

很明显这是想让驱动代码在非调试模式下,不输出信息。

 

3.STATUS_SUCCESS表示返回NTSTATUS类型的成功值,它的错误类型后边会说

 

三、编译

1.准备

编译前还需要两个文件MakeFile和Sources

 

MakeFile内容如下:

!INCLUDE $(NTMAKEENV)/makefile.def

 

Sources内容如下:

TARGETNAME=Hello World

TARGETTYPE=DRIVER
TARGETPATH=obj
  

SOURCES = Hello World.c

 

2.打开WDK

根据驱动运行的平台选择编译器

 

 

3编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值