700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 九七的Windows内核驱动开发 WIN10-+VS+WDK驱动开发环境安装及配置

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

时间:2020-05-23 20:44:35

相关推荐

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

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

一、定义介绍

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

二、操作步骤

必须先安装VS

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

1.下载VS

如果不想麻烦(狗头),可以直接网上搜索一下下载。

如果支持正版,可以通过官网VS官网下载(找下载链接也得找一会,这里就直接提供了)下载(但可能需要VPN和微软账号)。

2.安装VS

大部分下载的VS只是个安装器(不然也不能那么小),如图所示

双击运行,自己一直下一步,直到如下图所示界面,勾选上红框部分。

稍微解释一下,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的版本一致!!!右击此电脑——属性即可查看到版本信息,如下图

我这里使用的是版本的WDK,对应我的SDK版本。

2.安装WDK

双击WDK安装程序,如下图

选择红框部分

继续,直到如下图所示,选择红框部分

点击上图Close会自动弹出VSIX(签名)安装,安装即可

到此,所有安装都已经完成,现在已经可以正常创建驱动项目了。

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

1.打开VS创建驱动项目

此时已经可以创建驱动项目,如果不行请仔细对照步骤检查,尤其是WDK和SDK版本对照问题。

接下来就创建新项目,按照如下图所示进行选择。这里注意一下虽然是C++项目,但因为我们建立的是空项目,可以自己建立c文件,所以你自己建立c或c++文件都不影响,但两者代码有些区别,只要后面代码写对就行。

项目名称,项目放哪个文件夹就不再赘述。

创建完成后VS显示如下图,只有几个文件夹,没有文件

我们保存的项目路径中多了几个文件,如下图

2.修改配置

(1)创建驱动源文件

先在VS右侧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内核驱动开发

作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。