驱动开发及调试环境搭建
主计算机就是用来开发的计算机
目标计算机是生成的驱动要按照到的计算机, 用来调试。目标计算机可以是远端的电脑,也可以是虚拟机。
主机算计和目标计算机都必须是win10专业版
注: 双机调试,一端断开后,必须将另一端也断开,然后重新连接,否则双机调试不能使用。 如:目标计算机重启了, 就必须将主机算计上中程序进程结束,等目标计算机重启完成后, 重新"附加到进程调试"。
一个NT驱动demo及调试和安装驱动工具:https://mp.csdn.net/mp_download/creation/uploadResources/20084660
驱动分类
NT式驱动
WDM驱动
WDF驱动
一: 主计算机配置(用于开发)
参考: https://blog.youkuaiyun.com/newnewman80/article/details/90754999
报错及解决:参考书签 C语言/C++/驱动开发/报错及解决
二:目标计算机关闭’驱动强制签名验证’
在虚拟机win10中点击右下角通知,点击所有设置,点击更新和安全,然后点恢复,在右边的高级启动那里点击立即重新启动。
然后点击疑难解答、高级选项、启动设置,最后点击重启,
重启之后出现上图所示启动设置中的选项,我们这里点击数字键7或者按F7键,就会禁用驱动程序强制签名。







三:NT式的驱动就是以服务的方式,用工具SRVINSTW来安装
安装完成后需要重启目标计算机win10禁用驱动程序强制签名才能进行远程调试。
鼠标右键SRVINSTW.exe以管理员身份运行(一定要以管理员身份运行该工具)



程序路径一定要自己手工将要测试的驱动路径复制进行,因为浏览的话你只能找到.exe结尾的文件。

记得在粘贴的路径后面添加反斜杠\,再把要测试的驱动文件名复制进来。



完整路径为 C:\User\WDKRemoteUser\Desktop\RexDriverDemo01\RexDriverDemo01.sys


这里直接下一步



然后,需要重启目标计算机win10禁用驱动程序强制签名才能进行远程调试。
六:远端计算机调试
01.目标计算机配置(用于调试)
驱动调试(网络调试):
主计算机(192.168.0.102)目标计算机(192.168.0.106 )
确保两台计算机互相ping通(最简单的办法就是将防火墙关闭)
目标计算机(WIN8及以上系统):
以管理员权限运行CMD
1. 允许进行内核调试
bcdedit /set {default} DEBUG ON
bcdedit /set TESTSIGNING ON
bcdedit /debug on
( 设置后需要重启生效, 不能直接关机)
2. hostip 为主计算机ip,port为网络通讯端口,key为网络通讯所需密钥(主计算机VS2019配置驱动调试时需要填入)
bcdedit /dbgsettings net hostip:192.168.0.102 port:50000 key:1.2.3.4
3. 查看settings
bcdedit /dbgsettings
4. 将主计算机中C:\Program Files (x86)\Windows Kits\10\Remote\x64下的 WDK Test Target安装程序拷贝到目标计算机安装

5. 注: 第4步没有执行会报错:由于目标计算机积极拒绝,无法连接
6. 出现如下界面表示配置已经成功, 图中箭头指向错误并不影响正常调试

02. 主机算计调试配置





1. 设置完成后目标计算机自动登录到WDKRemoteUser用户

2. 然后配置Debugview
先导入dbgview.reg注册表
将以下写入Dbgview.reg文件中,双击Dbgview.reg导入注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT"=dword:0000000f

然后以管理员身份运行Dbgview.exe, 勾选以下选项
Capture -> Capture Kernel
Options -> Show milliseconds 可以精确到毫秒,默认精确到秒。
Options -> Clock time (快捷键 CTRL + T),可以切换时间显示方式。


最后重启,使debugView配置生效
注: 每次关闭debugView前需要去勾选"Capture -> Capture Kernel ", 除非重启电脑, 否则再次启动debugView不能再勾选"Capture -> Capture Kernel "
debugView的Capture说明

03.主机算计调试方法
1. vs2019连上虚拟机中win10系统后,在vs2019中驱动程序代码里打断点:

2. 在代码中先设置断点后再点击 '附加到进程’调试



3. 如果出现以下图"waiting to reconnect…"提示,如果没有自动重启目标计算机,需要手动重启目标计算机, 重启时要执行’目标计算机关闭"驱动签名验证"的操作 ’

04.调试过程及目标计算机的反应
1. 目标计算机重启时要执行’目标计算机关闭"驱动签名验证"的操作 ',重启完成后,目标计算机自动用WDKRemoteUser这个账号登录




2. 重启完成后,点击下图所示工具栏上的全部中断按钮,将虚拟机中断一下
这个时候可能就比较慢,vs2019会中断住虚拟机,所以比较慢,因为vs2019通过windbg中断虚拟机中win10内核,所以非常慢,中断之后虚拟机就挂住了、鼠标等都不动了,所以这个时候就证明了vs2019已经断住了。

3. 出现以下提示表示中断完成, 如果提示"是否切换"或"继续等待", 要选择"继续等待"

4. 按照提示在输入框中输入g,然后回车

5. 这时界面会切换到目标计算机,目标计算机可以动了,然后以管理员身份打开DebugView.exe
6. 打开Debugview.exe后,右键以管理员身份运行控制台窗口cmd
在控制台中执行 net start rexwdk001, rexwdk001是用SRVINSTW.exe安装的驱动, NT驱动是以服务方式存在的, 所以可以使用启动服务的方式启动驱动



这时候断点就进来了,现在按F10键单步调试或工具栏的"继续"按钮使用断点调试, 再debug和"Debugger Immediate Window"框中都可查看到输出信息

七:使用虚拟机调试
目标计算机是虚拟机
01.虚拟机安装win10
1.安装VMware 15.5
2.在VMware中安装win10专业版镜像
Win10系统序列号密钥:
VK7JG-NPHTM-C97JM-9MPGT-3V66T
NPPR9-FWDCX-D2C8J-H872K-2YT43
W269N-WFGWX-YVC9B-4J6C9-T83GX
NYW94-47Q7H-7X9TT-W7TXD-JTYPM
NJ4MX-VQQ7Q-FP3DB-VDGHX-7XM87
MH37W-N47XK-V7XM9-C7227-GCQG9
VK7JG-NPHTM-C97JM-9MPGT-3V66T
每行单独是一个密钥
3. 设置用户密码: 123456
02. 目标计算机配置(用于调试)
在虚拟机设置中把打印机移除后再添加串行端口
因为打印机默认会用串口1,所以要先把虚拟机中的打印机干掉,然后添加一个串行端口
# 管道名字
\\.\pipe\com1

该端是服务器,另一端是应用程序,这是什么意思呢?
这个虚拟机中的win10相当于是被调试的,另一端是应用程序,比如说这里的是vs2019配置,如下图。

安装WDK Test Target到目标计算机
将主计算机中C:\Program Files (x86)\Windows Kits\10\Remote\x64下的 WDK Test Target安装程序拷贝到目标计算机安装
这一步没有执行会报错:由于目标计算机积极拒绝,无法连接

其他配置
以下配置,在远端计算机中需要, 串口调试中可能并不需要。
驱动调试(网络调试):
主计算机(192.168.0.102)目标计算机(192.168.0.106 )
确保两台计算机互相ping通(最简单的办法就是将防火墙关闭)
目标计算机(WIN8及以上系统):
以管理员权限运行CMD
1. 允许进行内核调试
bcdedit /set {default} DEBUG ON
bcdedit /set TESTSIGNING ON
bcdedit /debug on
( 设置后需要重启生效, 不能直接关机)
2. hostip 为主计算机ip,debugport为串口号,key为网络通讯所需密钥(主计算机VS2019配置驱动调试时需要填入)
bcdedit /dbgsettings serial debugport:1 baudrate:115200
3. 查看settings
bcdedit /dbgsettings
03. 主机算计调试配置




设置完成后目标计算机自动登录到WDKRemoteUser用户

其他配置
其他配置和'远端计算机调试一样'
八: 使用debugView.exe辅助目标计算机调试(在目标计算机上单机调试)
在使用WDKRemoteUser用户登录的目标计算机中安装并配置debugView.exe(配置方法与"六:远端计算机调试"步骤中debugView.exe相同)
然后安装生成的驱动,执行启动和关闭等操作, 查看debugView.exe中输出信息。
这种方法的优点是灵活, 相比于双机调试速度快
参考:
https://blog.youkuaiyun.com/liny000/article/details/81260385 (可用)
https://cloud.tencent.com/developer/article/1471024
https://blog.youkuaiyun.com/zhaopeng01zp/article/details/110095391 (不能用,只作为参考)
https://blog.youkuaiyun.com/xiaoyanilw/article/details/104121162 (debugview配置)
3758



被折叠的 条评论
为什么被折叠?



