Windows驱动学习(一)-- 环境搭建

时间:2024-06-08 06:57:44

教程参考自:https://www.bilibili.com/video/av26193169/?p=1
代码地址:https://github.com/G4rb3n/Windows-Driver/tree/master/MT-Test

1.安装WDK

在Microsoft官网上下载WDK最新版本,按步骤安装就行了。
Windows驱动学习(一)-- 环境搭建

2.创建驱动项目

WDK安装成功后会在Visual Studio上显示驱动类项目,在Visual C++目录下的Driver目录中(我这里不知道什么bug,被移到测试目录下了)。接下来点击创建Empty WDM Driver项目。
Windows驱动学习(一)-- 环境搭建

然后在刚创建的项目MTDriver_Test的源文件文件夹上右键,添加新建项。选择C++文件,取名为main.c。
Windows驱动学习(一)-- 环境搭建

下面是一个测试代码,首先需要包含头文件<ntddk.h>,然后编写驱动入口函数,驱动的入口函数为DriverEntry,Drvier为默认的驱动对象,RegPath为对应的注册表位置。代码功能如下。
Windows驱动学习(一)-- 环境搭建

代码写好了,下面来介绍两个坑,第一个,要在项目->属性->Driver Setting中选择要安装驱动的操作系统的类型,我要在32位Win7下测试,所以选择Windows7。
Windows驱动学习(一)-- 环境搭建

然后在C/C++中将支持仅我的代码调试,和将警告视为错误都设置为“否”。
Windows驱动学习(一)-- 环境搭建

编译成功后,就生成了我们的驱动文件MTDriver_Test.sys了。
Windows驱动学习(一)-- 环境搭建

3.测试机环境准备

开始讲解测试机的环境准备,需要两个软件,Dbgview和DriverMonitor,Dbgview用来查看调试信息,DriverMonitor用来加载和卸载驱动。
Windows驱动学习(一)-- 环境搭建

DbgView需要勾选Capture Kernel和Enable Verbose Kernel Output选项。
Windows驱动学习(一)-- 环境搭建

4.开始测试

使用DriverMonitor加载驱动MTDriver_Test.sys,然后点击Start Driver,便会开始运行驱动。随着驱动运行成功,DbgView也捕捉到了我们的调试信息(打印注册表路径)。
Windows驱动学习(一)-- 环境搭建

卸载驱动时,驱动会调用DriverUnload函数,DbgView也捕捉到了调试信息“This driver is unloading”。
Windows驱动学习(一)-- 环境搭建