C++内核驱动开发笔记

C++内核驱动开发笔记<1>

    • 0x1环境
    • 0x2代码
    • 0x3问题
    • 0x4解决

0x1环境

Visual Studio 2017
WDK&Windows SDK: 10.0.17763.0
OS:Windows 7
模板:Kernel Mode Driver,Empty(KDMF)

0x2代码

#include
#include

void DriverUnload(PDRIVER_OBJECT  DriverObject)
{
	DbgPrint("BYE\r\n");
	(DriverObject);
}
extern "C"
{
	NTSTATUS DriverEntry(PDRIVER_OBJECT  DriverObject, PUNICODE_STRING RegistryPath)
	{
		DriverObject->DriverUnload = DriverUnload;
		(RegistryPath);//这样不会提示未引用
		DbgPrint("HELLO\r\n");
		return STATUS_SUCCESS;
	}
}

0x3问题

加载之后直接蓝屏,Windbg捕获到了错误,go之后直接蓝屏了。

如图所示:
C++内核驱动开发笔记_第1张图片

0x4解决

这个问题困扰了我很久,知道今天闲来无事翻看项目的配置管理器时发现了问题:
链接器->高级->入口点 处看到了一个陌生的函数FxDriverEntry@8,在MSDN上找到如下解释:

在基于框架的驱动程序,系统将调用后加载驱动程序框架的内部FxDriverEntry函数。 此内部函数初始化框架,然后调用该驱动程序的功能

根据书籍上的介绍,我尝试把原有的入口点选项改为DriverEntry,重新生成后放到虚拟机中尝试,运行成功。至于其中的原理,还有待进一步研究。C++内核驱动开发笔记_第2张图片

你可能感兴趣的:(Windows内核)