九七的Windows内核驱动开发 WIN10-2004+VS2019+WDK驱动开发环境安装及配置

WIN10-2004+VS2019+WDK驱动开发环境安装及配置

一、定义介绍

  本节介绍如何在Windows10系统(2004版本,操作步骤中有如何查看版本)中安装VS2019及WDK开发包,并进行相应环境配置、修改,使我们可以在WIN10中进行驱动开发。

二、操作步骤

必须先安装VS2019

(一)下载并安装VS2019(包括其组件)

1.下载VS2019

如果不想麻烦(狗头),可以直接网上搜索一下下载。
如果支持正版,可以通过官网VS2019官网下载(找下载链接也得找一会,这里就直接提供了)下载(但可能需要VPN和微软账号)。
在这里插入图片描述

2.安装VS2019

大部分下载的VS2019只是个安装器(不然也不能那么小),如图所示
在这里插入图片描述
双击运行,自己一直下一步,直到如下图所示界面,勾选上红框部分。
稍微解释一下,C++桌面开发是必须的,不需要多说;Windows 10 SDK(我这里用的是10.0.18352.0)是安装WDK的前提,因为WDK用到了Windows SDK中的东西;MSVC是Microsoft的Visual C/C++编译器。
!!!注意:Windows SDK的版本必须和WDK保持版本平衡,如果用错了版本就没法成果安装WDK。!!!
在这里插入图片描述

(二)下载并安装WDK

1.下载WDK

进入官网链接WIN WDK下载下载WDK安装程序,如下下图所示
这里的WDK的版本必须和WIN10的版本一致!!!右击此电脑——属性即可查看到版本信息,如下图
我这里使用的是2004版本的WDK,对应我的SDK版本。
在这里插入图片描述

在这里插入图片描述

2.安装WDK

双击WDK安装程序,如下图
在这里插入图片描述
选择红框部分
在这里插入图片描述
继续,直到如下图所示,选择红框部分
在这里插入图片描述
点击上图Close会自动弹出VSIX(签名)安装,安装即可
在这里插入图片描述
到此,所有安装都已经完成,现在已经可以正常创建驱动项目了。

(三)创建驱动项目并配置

1.打开VS2019创建驱动项目

此时已经可以创建驱动项目,如果不行请仔细对照步骤检查,尤其是WDK和SDK版本对照问题。
接下来就创建新项目,按照如下图所示进行选择。这里注意一下虽然是C++项目,但因为我们建立的是空项目,可以自己建立c文件,所以你自己建立c或c++文件都不影响,但两者代码有些区别,只要后面代码写对就行。
在这里插入图片描述
项目名称,项目放哪个文件夹就不再赘述。

创建完成后VS2019显示如下图,只有几个文件夹,没有文件
在这里插入图片描述

我们保存的项目路径中多了几个文件,如下图
在这里插入图片描述

2.修改配置
(1)创建驱动源文件

先在VS2019右侧source目录下创建一个空的点c文件,命名为“HelloDriver.c”,如下图。其实,驱动大部分都是由c写的(因为Windows操作系统就是C写的,也可以是C++),驱动和别的程序的区别无非就在于①.多了几个库(内核库等)②.编译方式不同。这样去理解驱动你就会发现高深莫测的内核驱动其实也不过如此。
在这里插入图片描述

(2)打开项目属性,如图

在这里插入图片描述

(3)修改警告等级

在“C/C++——常规”中修改警告等级为“3”;警告视为错误设为“否”,如图
在这里插入图片描述

(4)关闭Spectre缓解

在“C/C++——代码生成器”中找到并关闭Spectre缓解,如图所示,设置Spectre Mitigation为“Disable”。Spectre缓解是一种硬件漏洞的软件规避方法,安装了WDK之后会导致Spectre缓解被默认打开了,如果没有安装带Spectre缓解的库,编译就会失败。
在这里插入图片描述

(5)设置警告模式

在“Driver Signing——General”中修改“Sign Mode”为“Off”,如图
在这里插入图片描述

(6)排除inf文件

在Drvier Files文件夹中找到.inf文件,右击从项目中排除
在这里插入图片描述

(7)修改目标版本

根据你要生成的项目用于什么环境,在“Driver Setting——General”中修改目标系统版本“Target OS Version”选项,可以选择Win7、Win8、Win10等等,此外,Debug和配置管理器(就是那个修改X86还是X64项目的下拉栏)根据不同的需求自己定制
在这里插入图片描述
到此,一般该配置的东西都已经配置完成了,下面就可以写代码并编译了。

(四)项目测试

1.编写源码

在“HelloDriver.c”中编写驱动程序,这里给出个小例子,初学者照抄就行。

/*
FileName:HelloDriver.c
*/

#include <ntddk.h>

void DriverUnload(PDRIVER_OBJECT pDriverObject);

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath)
{
	DbgPrint("HelloDriver DriverEntry\n");
	NTSTATUS status = STATUS_SUCCESS;
	pDriverObject->DriverUnload = DriverUnload;

	return status;
}

void DriverUnload(PDRIVER_OBJECT pDriverObject)
{
	DbgPrint("HelloDriver DriverUnload\n");

	return STATUS_SUCCESS;
}

2.编译生成SYS

第一次生成就点击“生成解决方案”
以后修改过代码后就点击“重新生成解决方案”
最下面没报错说明就生成成功了,如图
在这里插入图片描述
之后,我们在Debug文件夹下的MyDriver1文件夹下就可以看到.sys文件了,如图
在这里插入图片描述
至此,整个环境已经配置完毕,测试案例也已经通过编译并成功生成sys驱动文件。

来自:九七的Windows内核驱动开发
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nines~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值