VS2013+WDK8.1 驱动开发环境配置
Windows Driver Kit 是一套全面集成的驱动程序开发工具,在软件层面实现了对硬件资源的有效管理与优化配置。其中 Windows Driver Device Kit(DDK)被用于评估 Windows 驱动器的稳定性和可靠性。本次实验中采用的是WDK8.1版本,并支持包括Windows 7、Windows 8以及Windows 10在内的系统进行驱动开发。
为了构建WDK开发环境,作者耗时较长终于完成了搭建工作.其中编译生成的驱动程序能够成功加载到内核中,现将本次搭建的经验与实现方法进行介绍.接下来先介绍本次实验所使用的软硬件环境:
操作系统类型为Windows 10 Special Edition(2019年版)的企业版系统
驱动测试环境设置为Windows 7 x32的企业版系统
编译器版本设定为Visual Studio Express系列软件的2013年版本
驱动框架版本设定为 Windows Driver Kit 系列软件的第8.1版
驱动工具打包: 链接:https://pan.baidu.com/s/18VIXKdFdfu7ZuKOql7Z_Iw 提取码:9se4
为了更好地进行后续操作,请您先完成WDK工具包的配置,并将其指定位置设置为 F:\Windows Kits ,通常会默认安装于C盘。安装过程省略了。

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

进入解决方案视图后,请您依次执行以下操作:首先打开源文件位置;然后创建新项目位置;最后通过快捷键启动,并快速创建一个 wdk.cpp 文件。

生成
生成
调整配置管理设置并执行相关操作:首先进入生成模块,在其下拉菜单中选择【配置管理器

调试
目标文件扩展名:.sys
调试
调试

配置属性
配置属性
VC++项目根目录
VC++项目根目录
VC++项目根目录
可执行文件:
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

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)

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)

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;
}

F8
F8
开启虚拟机中的Win7系统,在开机时按下【F8

在常规配置下,默认状态下DbgView不会展示内核调试信息。为了便于后续测试工作,请您按照以下步骤操作:首先编辑注册表参数,在其中新建一个名为reg.reg的配置文件;随后启动相关程序并完成注册流程,在这一操作过程中可能需要重启计算机以确保正常运行。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:0000000f

生成的驱动文件 wdk.sys 已经复制到虚拟机中。随后,请检查是否能成功地通过安装或加载工具进行加载。请注意:操作可能会导致系统出现蓝屏现象。

如果加载过程顺利的话,则表示我们的驱动文件不存在任何问题。需要注意的是,在当前开发环境中我们采用的是32位版本程序设计,在64位操作系统环境下无法正确运行。
13.模板文件的生成 -> 依次选择文件 -> 导出模板 -> 项目模板

轻点即可自动生成输出文档。建议将模板文件保存至指定位置。具体路径位于Visual Studio 2013软件根目录下的MyExportedTemplates文件夹内。

重启VS之后创建项目,则会方便地调用我们定制的驱动开发模板文件。

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