VS2015+WDK10+Win10 Win7以上系统驱动发开环境搭建

文本主要介绍 Win10 系统下安装 VS2015 及 WDK10 驱动开发环境的搭建,搭建完成后可通过 VS2015 直接新建驱动项目并编译通过后可在 Win7 以上系统运行。无需自己制作模版等繁琐步骤(其实早在 VS2013+WDK8.1 的时候就已经支持直接从 IDE 中新建项目)。以下是相关截图:

可直接通过 VS 创建项目

2016-08-06_124501

直接在 VS 中编译:

2016-08-06_124622

安装步骤

打开 https://developer.microsoft.com/zh-cn/windows/hardware/windows-driver-kit 页面,下载 VS2015 和 WDK10。

2016-08-06_125011

2016-08-06_125353

根据你的需要下载对应版本的 VS2015,推荐下载 Community 版本,因为这个版本免费且功能齐全。安装包比较大,大概 7G 左右。下载完成后运行安装程序,选择 Visual C++Windows 10 SDK

2016-08-06_125128

2016-08-06_125154

VS2015 安装完成后,开始安装下载好的 WDK10,WDK10 是一个在线安装程序,可以直接安装也可以下载到本地再进行安装,我选择的是直接下载到本地:

2016-08-06_125711

等待下载完成后,到下载后的目录直接运行安装程序安装即可。

开发设置

VS2015 和 WDK 都安装完毕后,运行 VS2015,新建项目时就可以看到有 Windows Driver 的选项了,我们新建一个 WDK 的 Kernel Mode Driver 的空项目,然后新建一个 DriverEntry.c,里面写一些测试代码:

2016-08-06_130027

2016-08-06_131650

然后点击项目属性,修改如下几个选项:

修改警告等级为 3:

2016-08-06_130436

修改平台为 Windows7 Desktop:

2016-08-06_130512

关闭 inf2cat(详见 http://blog.csdn.net/doublestarts/article/details/37922819):

2016-08-06_130547

关闭为驱动添加数字签名

2016-08-06_130612

然后编译驱动,我选择的是 x64 平台,如无问题,则会编译成功:

1>------ 已启动生成: 项目: TestDriver, 配置: Debug x64 ------
1>  Building 'TestDriver' with toolset 'WindowsKernelModeDriver10.0' and the 'Desktop' target platform.
1>  Stamping x64\Debug\TestDriver.inf [Version] section with DriverVer=08/06/2016,13.10.36.807
1>  DriverEntry.c
1>  TestDriver.vcxproj -> d:\documents\visual studio 2015\Projects\TestDriver\x64\Debug\TestDriver.sys
1>  TestDriver.vcxproj -> d:\documents\visual studio 2015\Projects\TestDriver\x64\Debug\TestDriver.pdb (Full PDB)
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

测试驱动

找一台 Win7x64 开启了 DbgView 调试信息输出(见:修改注册表解决 Win7 DbgView 不显示调试信息)的虚拟机,开机按 F8,选择“禁用驱动程序签名强制”的选项启动系统:

2016-08-06_131237

打开 DbgView 和驱动加载工具 InstDrv,将我们写好的驱动复制到虚拟机中,加载我们的驱动,成功后会打印驱动的注册表路径信息:

2016-08-06_131805

6 comments

  1. 按照博主的步骤安装完vs2015和wdk10后,配置完项目属性在编译的时候提示无法打开 源文件 “ntifs.h”,大神求指导这可能是哪里出的问题呀?

    1. 我遇到过好像是要用新的头文件,这个 ntifs 是来版本的 ddk 里面的。新版本好像换名了。但是按这个流程下来的我好像没遇到过你提出的类似问题。

      1. 我试了下微软官网的helloworld通用程序编写(https://msdn.microsoft.com/zh-cn/library/hh439665(v=vs.85).aspx),发现里面的ntddk.h也没办法调用,可能我所有的nt头文件都找不到,是我哪里漏安装了么??该怎么解决呀?

        1. 找不到 ntddk.h 网上应该有很多类似问题,可以搜索一下按网络上的处理办法处理一下。以上步骤我是自己亲测过的,并没有遇到过类似的问题。可能是哪个步骤我们细节的操作有所不同造成的。

评论