C++第三十七篇 -- 调试驱动程序
上一篇写的KMDF程序是通过串口进行配置的,那么我们在VS中Attach to process外,可以直接用Winbdg进行调试,winbdg.exe所在路径为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64。怎么使用它呢。
如果是串口方式配置的话:windbg.exe -b -k com:pipe,port=\\.\pipe\com_1,resets=0
如果是网络方式配置的话:WinDbg -k net:port=50000,key=1.2.3.4
虚拟机上如果有打印机的话,那么新添加的串口应该是com2,所以配置的时候得看仔细点,再说安装驱动那一块,之前在网上下载了一个驱动工具,一点用都没有,总是创建句柄失败,后来就把VS生成的inf文件拷过去,sys也拷过去,用devcon.exe的工具安装。
安装命令devcon.exe install XXX.inf root\XXX 前面的参数就是拷过去的INF文件,后面的参数是驱动的ID,在INF文件里面会写
[Standard.NT$ARCH$]
%KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, Root\KMDFDriver1
Root\KMDFDriver1就是ID,所以安装命令就是devcon.exe install KMDFDriver1.inf root\KMDFDriver1
亲测成功,不过我是在调试模式下安装的驱动。
我的操作步骤是,开启虚拟机,打开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++第三十七篇 -- 调试驱动程序的更多相关文章
- Python之路(第三十七篇)并发编程:进程、multiprocess模块、创建进程方式、join()、守护进程
一.在python程序中的进程操作 之前已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起来的python程序 ...
- 第三十七篇 入门机器学习——Numpy基础
No.1. 查看numpy版本 No.2. 为了方便使用numpy,在导入时顺便起个别名 No.3. numpy.array的基本操作:创建.查询.修改 No.4. 用dtype查看当前元素的数据类型 ...
- 第三十七篇-BottomNavigationVIew底部导航的使用
效果图: 添加底部导航和viewpaper 设置底部导航在底部 app:layout_constraintBottom_toBottomOf="parent" 新建四个fragme ...
- 第三十七篇:JS基础(this)
好家伙, 解析器(浏览器)在调用函数是每次都会响函数内部传递进一个隐含的参数, 这个隐含参数就是this,this指向的是一个对象,由浏览器传过来 这个对象我们成为函数执行的上下文对象 根据函数的调用 ...
- 《手把手教你》系列技巧篇(三十七)-java+ selenium自动化测试-日历时间控件-上篇(详解教程)
1.简介 我们在实际工作中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据.网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期.这 ...
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十七篇】:Django之【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十七篇】:Django【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...
随机推荐
- 【NX二次开发】Block UI 枚举
属性: 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 一张图理清计算机常见编码的关系。ASCII、Unicode都不是事儿
编码按适用范围可以简单分为:(本人自定义) 美国编码(ASCII)ASCII为基础编码,来源于美国:其它编码都兼容ASCII编码: 欧盟编码(ISO8859-1.WINDOWS-1252)先是ISO- ...
- css基本内容笔记(学习整理)
一.css简介 1.什么是css 层叠样式表. 层叠:层层叠加,若果有冲突应用优先级高,不冲突的部分共同作用 样式表:就是css属性样式的集合: 2.作用 a.修饰html,使得html样式更好看 b ...
- Java必学MySQL数据库应用场景
Java教程分享Java必学之MySQL数据库应用场景,在当前的后台开发中,MySQL应用非常普遍,企业在选拔Java人才时也会考察求职者诸如性能优化.高可用性.备份.集群.负载均衡.读写分离等问题. ...
- [Azure DevOps] 如何使用任务组
1. 使用 PowerShell 脚本 在上一篇文章中我们学会了怎么使用扩展在编译前实时更改版本号.有些情况下我们希望不适用扩展,例如喜欢发明轮子,或者根本没有安装扩展的权限.这时候我们可以自己写 P ...
- xshell远程连接另一台电脑的数据库,启动图形失败
1.用xshell远程连接数据库10.62.207.152,且用oracle用户直接登陆 2.执行:netca 报错: Oracle Null Service Configuration: Error ...
- zookeeper使用教程
Zookeeper 1. Zookeeper概述 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1)Zookeeper: ...
- Linux中cut,sort,uniq和wc的用法
一.cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的.1.语法格式为:cut [-bn] [fil ...
- 『动善时』JMeter基础 — 53、JMeter集合点功能的使用
目录 1.集合点介绍 2.同步定时器界面介绍 3.集合点的使用 (1)测试计划内包含的元件 (2)线程组元件内容 (3)HTTP请求组件内容 (4)同步定时器内容 (5)运行脚本查看结果 4.集合点设 ...
- 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要. 干货满满,建议收藏,欢迎大 ...