C++第三十七篇 -- 调试驱动程序

摘要:
安装命令devcon。exeinstallXXX infrootXXX前面的参数是复制的INF文件,后面的参数是驱动程序ID。[Standard.NT$ARCH$]%KMDFDriver1.DeviceDesc%=KMDFDriver1将写入INF文件_对于设备,RootKMDFDriver1RootKMDFDriver 1是ID,因此安装命令是devcon.exeinstallKMDFDriver1infrootKMDFDriver1.但是,我在调试模式下安装了驱动程序。我的操作步骤是:打开虚拟机,打开windg Exe,也就是运行上面的句子,然后windg会显示一些连接到虚拟机的信息。进入Windows后,使用devcon。exe工具安装驱动程序。似乎没有信息输出。

上一篇写的KMDF程序是通过串口进行配置的,那么我们在VS中Attach to process外,可以直接用Winbdg进行调试,winbdg.exe所在路径为C:Program Files (x86)Windows Kits10Debuggersx64。怎么使用它呢。

如果是串口方式配置的话:windbg.exe -b -k com:pipe,port=\.pipecom_1,resets=0

如果是网络方式配置的话:WinDbg -k net:port=50000,key=1.2.3.4

虚拟机上如果有打印机的话,那么新添加的串口应该是com2,所以配置的时候得看仔细点,再说安装驱动那一块,之前在网上下载了一个驱动工具,一点用都没有,总是创建句柄失败,后来就把VS生成的inf文件拷过去,sys也拷过去,用devcon.exe的工具安装。

安装命令devcon.exe install XXX.inf rootXXX 前面的参数就是拷过去的INF文件,后面的参数是驱动的ID,在INF文件里面会写

[Standard.NT$ARCH$]

%KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, RootKMDFDriver1

RootKMDFDriver1就是ID,所以安装命令就是devcon.exe install KMDFDriver1.inf rootKMDFDriver1

亲测成功,不过我是在调试模式下安装的驱动。

我的操作步骤是,开启虚拟机,打开windbg.exe,也就是运行上面那句话,然后windbg里面就会显示和虚拟机连接的一些信息,等进入到Windows后,就用devcon.exe工具安装驱动,好像也没什么信息输出了。其实我也不知道新建的那个驱动到底是干啥用的,就是默认的。

关闭检查驱动数字签名:管理员模式下运行

bcdedit.exe /set nointegritychecks on

开启检查驱动数字签名

bcdedit.exe /set nointegritychecks off

以管理员权限执行:

BCDEDIT -SET LOADOPTIONS DISABLE_INTEGRITY_CHECKS

BCDEDIT -SET TESTSIGNING ON

重新启动 Windows

手动安装驱动的方法

打开设备管理器,在根目录上右击,添加过时设备,下一步,安装我手动从列表中选择的硬件,下一步,下一步,从磁盘中安装,选择.inf文件的路径,确定,下一步,下一步,始终安装此驱动文件。

windbg配置符号路径:https://blog.csdn.net/counsellor/article/details/82194920

0:040> .sympath SRV*c:localsymbols*http://msdl.microsoft.com/download/symbols

0:040> .reload

免责声明:文章转载自《C++第三十七篇 -- 调试驱动程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue全家桶以及常用知识点android网络交互之DNS优化知识整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Chrome

Chrome 是 Google 出品的一款非常优秀的浏览器,其内置了开发者工具(Windows 系统中按下 F12 即可开启),可以让我们方便地对 JavaScript 代码进行调试。 为方便大家学习和使用,本文我对 Chrome 的调试技巧做个系统的总结。 一、设置断点 有两种方法可以给代码添加断点 方法1:在 Source 内容区设置 (1)找到要调...

MATLAB调用C程序、调试和LDPC译码

MATLAB是一个很好用的工具。利用MATLAB脚本进行科学计算也特别方便快捷。但是代码存在较多循环时,MATLAB运行速度极慢。如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行,可以考虑将循环较多的功能采用C编写,MATLAB调用。本文将概述这一过程。虽然本文以LDPC译码算法为例,但不懂该算法不影响本文阅读。 1. 起因    ...

gdb命令调试技巧

gdb命令调试技巧 一、信息显示1、显示gdb版本 (gdb) show version2、显示gdb版权 (gdb) show version or show warranty3、启动时不显示提示信息gdb -q exe 或者.bashrc 添加alias gdb="gdb -q",重启shell4、退出时不显示提示信息(gdb) set confirm...

基于VS Code的C++语言的构建调试环境搭建指南

基于VS Code的C++语言的构建调试环境搭建指南 1.首先安装Visual Studio Code 进入官网下载强大的VS Code,地址是:https://code.visualstudio.com 打开之后会发现界面如图所示: 环境变量配置的时候勾选添加到path即可,接下来安装中文语言包。 2.安装 the Microsoft C/C++...

Android 实现真机远程调试并适应7寸屏大小 狼人:

学 android 也有一段时间了,一直都是用 Android 提供的模拟器运行测试例子,也不知道做的东东在真机是啥效果。今天跟公司要了一个七寸屏的车载屏做真机测试。下面是我实现真机远程调试的步骤: 此方法同样适用于使用手机做真机测试 1、接入USB 选择“是”,单击下一步 单击“下一步”,去查找我们之前下载的SDK目录,找到usb_driver,如图...

iOS 项目调试

iOS 常用bug调试方法 普通操作 如图3 基本的断点操作如下 图4   点击那个黑列列就创建了一个断点,再次点击就临时取消这个断点(但是不删除),长按那个断点拖出去就删除了(mac os的系统工程师就是稀饭拖动的快感),当然也可以右键那个创建的断点,会弹出相应地菜单。当然也还可以监视某个变量!图5 在对象视图中,右键某个对象,点击“Watch ‘...