Advertisement

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盘。安装过程省略了。

1379525-20190918101406044-1342269748.png

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

1379525-20190918102104396-210959391.png

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

1379525-20190918102312385-1806738798.png

生成

生成

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

1379525-20190918105037186-129458932.png

调试

目标文件扩展名:.sys

调试

调试

1379525-20190918105117615-1712439326.png

配置属性

配置属性

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
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 <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;
    
 }
1379525-20190919120707155-1671199347.png

F8

F8

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

1379525-20190918123936681-166126344.png

在常规配置下,默认状态下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

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

1379525-20190919120843281-1706686284.png

如果加载过程顺利的话,则表示我们的驱动文件不存在任何问题。需要注意的是,在当前开发环境中我们采用的是32位版本程序设计,在64位操作系统环境下无法正确运行。

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

1379525-20190918110624036-1818065993.png

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

1379525-20190918110702854-582300697.png

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

1379525-20190918110811687-293025707.png

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

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

全部评论 (0)

还没有任何评论哟~