博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS2013+WDK8.1 驱动开发环境配置
阅读量:5117 次
发布时间:2019-06-13

本文共 2620 字,大约阅读时间需要 8 分钟。

Windows Driver Kit 是一种完全集成的驱动程序开发系统,它包含Windows Driver Device Kit (DDK),用于测试 Windows 驱动器的可靠性和稳定性,本次实验使用的是WDK8.1 其支持 Windows 7, Windows 8,Windows 10等系统的驱动开发。

WDK环境的搭建研究了很长时间今天总算搭建出来了,而且编译的驱动文件能够被内核加载,这里就把搭建方法分享出来,首先介绍一下我的实验环境:

操作系统:Windows 10 LTSC 2019 企业版

驱动测试环境:Windows 7 x32 企业版
编译器版本:Visual Studio Express 2013
驱动框架版本:Windows Driver Kit 8.1

驱动工具打包: 链接: 提取码:9se4

1.首先你需要安装 WDK工具包,这里我就把它安装在了 F:\Windows Kits 这个盘符下,默认是安装在C盘,安装过程略过,下一步下一步。

1379525-20190918101406044-1342269748.png

2.接着打开VS并新建一个空项目,在空项目中新建wdk文件夹。

1379525-20190918102104396-210959391.png

3.选择解决方案视图 -> 选择源文件 -> 添加新建项 或者直接按下 (Ctrl + shift + a) 快捷打开,并创建一个 wdk.cpp文件。

1379525-20190918102312385-1806738798.png

4.修改配置管理器,添加配置管理,选择【生成】 -> 【配置管理器】 -> 【新建】,此处可自定义命名。

1379525-20190918105037186-129458932.png

5.修改配置属性,菜单栏选择【调试】->【wdk属性】 -> 【配置配置】 ->【常规】 -> 修改【 目标文件扩展名:.sys】

1379525-20190918105117615-1712439326.png

6.配置可执行文件路径与导入库路径,这里选择 【配置属性】 -> 【VC++目录】,依次将如下信息填入配置项,如果需要编译64位驱动只需要将x86改为x64即可,以x86为例最终配置结果如下。

可执行文件:F:\Windows Kits\8.1\bin\x86F:\Windows Kits\8.1\bin包含目录:F:\Windows Kits\8.1\Include\kmF:\Windows Kits\8.1\Include\umF:\Windows Kits\8.1\Include\winrtF:\Windows Kits\8.1\Include\shared引用目录+库目录F:\Windows Kits\8.1\Lib\win7\km\x86

1379525-20190918105322943-2132461426.png

7.配置C/C++优化选项:配置属性 -> C/C++ -> 所有选项 -> 依次修改下方几个关键,如果需要编译X64驱动需将调用约定改为__fastcall (/Gr)然后将预处理器定义中的_X86_改为_AMD64_即可,以X86为例。

安全检查:禁用安全检查 (/GS-)将警告视为错误:是 (/WX)警告等级:等级 3 (/W3)启用C++异常:否调用约定:__stdcall (/Gz)优化:已禁用 (/Od)预处理器到文件:否运行库:多线程调试 (/MTd)预处理器定义: _X86_;_DDK_;_WIN32_WINNT=0x0501;WINVER=0x0501;_NDEBUG;DBG=0;%(PreprocessorDefinitions)

1379525-20190918105555924-1323604504.png

8.配置连接器选项,选择连接器 -> 所有选项 -> 依次修改下方几个关键。

附加选项:/IGNORE:4078 /safeseh:no附加依赖项:ntoskrnl.lib;ndis.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib固定基址:此处需要为空忽略所有默认库:是 (/NODEFAULTLIB)启用增量链接:否 (/INCREMENTAL:NO)驱动程序:驱动程序 (/Driver)入口点:DriverEntry生成清单:否 (/MANIFEST:NO)生成调试信息:是 (/DEBUG)生成映射文件:是 (/MAP)数据执行保护:是 (/NXCOMPAT)随机基址:此处需要清空子系统:本机 (/SUBSYSTEM:NATIVE)

1379525-20190918105800210-2021042302.png

9.上方的配置已经基本完成了,接着我们编写一段驱动初始化代码,然后编译发现此时驱动已经编译成功了。

#include 
VOID UnDriver(PDRIVER_OBJECT driver){ DbgPrint(("Uninstall Driver Is OK \n"));}NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver,PUNICODE_STRING RegistryPath){ DbgPrint(("hello lyshark \n")); Driver->DriverUnload = UnDriver; return STATUS_SUCCESS;}

1379525-20190919120707155-1671199347.png

10.启动虚拟机中的Win7系统,在开机时按下【F8】,选择禁止强制签名,或者调试模式都可。

1379525-20190918123936681-166126344.png

11.默认情况下Win7下的 DbgView 不显示内核调试信息,为了方便测试,我们需要修改一下注册表,新建一个reg.reg文件,然后运行并注册,期间需要重启机器。

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]"DEFAULT"=dword:0000000f

1379525-20190918124210052-234934778.png

12.将生成的驱动文件 wdk.sys 拖入到虚拟机中,然后同通过工具加载,看是否能够被加载成功,注意:可能导致蓝屏。

1379525-20190919120843281-1706686284.png

加载成功的话,说明我们的驱动文件没有问题了,由于我们编写的是32位驱动,64位系统中是无法运行的。

13.模板文件的生成 -> 依次选择文件 -> 导出模板 -> 项目模板

1379525-20190918110624036-1818065993.png

直接点击完成即可导出,我们可以将模板备份一下,模板路径是 \Visual Studio 2013\My Exported Templates

1379525-20190918110702854-582300697.png

14.重新启动VS,然后新建项目,就能够直接使用我们定制的驱动开发模板文件了。

1379525-20190918110811687-293025707.png

不断尝试,最终才成功的(qaqa~头发都掉光了),转载请添加出处,谢谢!

转载于:https://www.cnblogs.com/LyShark/p/11539892.html

你可能感兴趣的文章
timeline时间轴进度“群英荟萃”
查看>>
python if else elif statement
查看>>
网络编程
查看>>
文本隐藏(图片代替文字)
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
@property中 retain 详解
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
同步代码时忽略maven项目 target目录
查看>>
MVC.NET:提供对字体文件.woff的访问
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>