天天看点

VS2013+WDK8.1 驱动开发环境配置

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

驱动工具打包: 链接:https://pan.baidu.com/s/18VIXKdFdfu7ZuKOql7Z_Iw 提取码:9se4

1.首先你需要安装 WDK工具包,这里我就把它安装在了

F:\Windows Kits

这个盘符下,默认是安装在C盘,安装过程略过,下一步下一步。

VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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

可执行文件:
F:\Windows Kits\8.1\bin\x86
F:\Windows Kits\8.1\bin

包含目录:
F:\Windows Kits\8.1\Include\km
F:\Windows Kits\8.1\Include\um
F:\Windows Kits\8.1\Include\winrt
F:\Windows Kits\8.1\Include\shared

引用目录+库目录
F:\Windows Kits\8.1\Lib\win7\km\x86
           
VS2013+WDK8.1 驱动开发环境配置

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)
           
VS2013+WDK8.1 驱动开发环境配置

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)
           
VS2013+WDK8.1 驱动开发环境配置

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

#include <ntddk.h>

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;
}
           
VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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
           
VS2013+WDK8.1 驱动开发环境配置

12.将生成的驱动文件

wdk.sys

拖入到虚拟机中,然后同通过工具加载,看是否能够被加载成功,注意:可能导致蓝屏。

VS2013+WDK8.1 驱动开发环境配置

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

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

VS2013+WDK8.1 驱动开发环境配置

直接点击完成即可导出,我们可以将模板备份一下,模板路径是

\Visual Studio 2013\My Exported Templates

VS2013+WDK8.1 驱动开发环境配置

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

VS2013+WDK8.1 驱动开发环境配置

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

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

继续阅读