我习惯使用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编译

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

被折叠的 条评论
为什么被折叠?



