(三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行

文章目录

  • 1. 驱动开发环境搭建
  • 2. 驱动开发新建项目及项目属性配置和编译
  • 3. 双机调试环境搭建
    • 3.1 安装虚拟机VMware
    • 3.2 配置Dbgview.exe工具
    • 3.3 基于Windbg的双机调试
  • 4. 内核驱动的运行
    • 4.1 临时关闭系统驱动签名校验
    • 4.2 加载驱动

1. 驱动开发环境搭建

请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133341733

2. 驱动开发新建项目及项目属性配置和编译

请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133376458

3. 双机调试环境搭建

3.1 安装虚拟机VMware

准备好安装包,勾选将VMware Workstation控制台工具添加到系统PATH。

在这里插入图片描述

输入秘钥:ZF71R-DMX85-08DQY-8YMNC-PPHV8,如果失效,勾选试用30天。

在这里插入图片描述

下载完成后,以管理员身份打开VMware,新建虚拟机,选择自定义:

在这里插入图片描述

未提及页面默认下一步

选择稍后安装操作系统:

在这里插入图片描述

选对应要安装的系统

在这里插入图片描述

系统安装路径自己设定,但不能安装在VMware文件路径下

在这里插入图片描述

改为BIOS引导设备:

在这里插入图片描述

将虚拟磁盘拆分成多个文件:

在这里插入图片描述

自定义硬件:

在这里插入图片描述

选择你的ISO映像文件路径:(系统安装镜像文件)

在这里插入图片描述

完成。开启此虚拟机:

在这里插入图片描述

安装你的操作系统:

在这里插入图片描述

在虚拟机系统中安装VMWare Tool:(在虚拟机选项卡的下拉菜单中)

安装该工具后才能实现主机与虚拟机之间的文件共享,支持自由拖拽的功能

在这里插入图片描述

3.2 配置Dbgview.exe工具

安装好VMWare之后就可以把Dbgview.exe工具复制到虚拟机系统中:

Dbgview是windows下的一款调试工具,可以捕获程序输出的日志,分为64位和32位,支持应用层和内核层的日志捕获,利用它排除bug是个不错的选择。一般程序日志记录可以输出到文件进行查看,但是使用Dbgview不会自动输出到文件,它的日志信息是驻留在进程内存中。

该工具可以很方便的观察DbgPrint的日志。

在 “Capture” 菜单中,可以选择三种不同的日志记录模式:

  • Capture Win32: 监听所有应用程序产生的调试输出。
  • Capture Global Win32: 监听全局系统级别的调试输出。
  • Capture Kernel: 监听内核级别的调试输出。

开始监听并显示日志:点击 “Capture” 菜单中的 “Start”,Dbgview 将开始监听相应模式下产生的调试输出信息,并将其实时显示在窗口中。

过滤和配置选项:在 “Edit” 菜单中,你可以设置过滤器来仅显示特定进程或线程生成的调试信息。此外,你还可以配置其他选项,如字体、颜色等。

停止监听和保存日志:当你需要停止监听时,在 “Capture” 菜单中点击 “Stop”。如果想要保存当前窗口中显示的日志内容,可以选择 “Log to File” 或者 “Log to Pipe”。

Dbgview 提供了一种方便的方式来查看和分析应用程序的调试输出信息,特别适合于调试和故障排除。请注意,使用 Dbgview 需要以管理员权限运行,并且在某些情况下可能会受到安全软件的阻止。

在这里插入图片描述

在虚拟机中以管理员身份运行该工具,在菜单上选择Capture,勾选如下选项:

查看内核日志

在这里插入图片描述

3.3 基于Windbg的双机调试

选用COM口作为连接

在虚拟机系统中,以管理员权限打开cmd输入:

Bcdedit /debug on 回车
Bcdedit /dbgsettings serial baudrate:115200 debugport:1 回车

在这里插入图片描述

  配置完成后,请关闭虚拟机内的操作系统,然后在Vmware的配置界面,新增一个串口设备,设置该串口使用“命名管道”,名字为:\.\pipe\com_1 ,具体配置如下图所示:
在这里插入图片描述

到此为止,被调试机所需设置已全部完成。

接下来开始配置Windbg

在调试机中(自己主机)运行Windbg工具:

选择File下的Kernel Debugging,配置COM口

在这里插入图片描述

配置完成,开启虚拟机,打开自己主机Windbg,启动后就会去连接被调试机器。

4. 内核驱动的运行

  驱动的运行通过服务来实现,微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上。开发的驱动没有签名,需要加载运行就要临时关闭系统驱动签名校验。

4.1 临时关闭系统驱动签名校验

Windows 7:开机在键盘按下F8,选择禁用驱动程序签名强制。

Windows 10+:在高级启动中设置,具体操作为:“开始菜单”-“设置”-“更新与安全”-“恢复”,在高级启动下点击“立即重启”按钮,然后在出现的界面中选择“疑难解答”-“高级选项”-“启动设置”,点击“重启”按钮,系统开始重启,在重启过程中会显示启动选项,在键盘上输入数字7,即选择“禁用驱动程序强制签名”。
在这里插入图片描述

4.2 加载驱动

在虚拟机系统中临时关闭系统驱动签名校验,然后把生成的.sys驱动放到虚拟机系统的C盘下,接着在虚拟机系统内使用管理员权限运行CMD
(1)创建服务,注册驱动:sc create FirstDriver binPath= “c:\FirstDriver.sys” type= kernel

请注意上面命令,等号(=)后面需要有一个空格,FirstDriver是服务名,binPath后面是要加载的驱动的路径

(2)启动服务:sc start FirstDriver

出现如下界面说明你的驱动成功加载:

在这里插入图片描述
如果出现error,说明你未禁用驱动签名

(3)停止驱动服务:sc stop FirstDriver

(4)删除已注册和创建的服务:sc delete FristDriver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7. Cesium中的Primitive

1. Primitive 介绍 在 Cesium 中,Primitive 是一种基本的图元,用于呈现 3D 场景中的几何形状、材质和其他属性。 Primitive 由两个部分组成,一个是几何形状(Geometry),用于定义 Primitive 的结构&#xf…

Guava-RateLimiter详解

简介: 常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请…

Unity Spine 指定导入新Spine动画的默认材质

指定导入新Spine动画的默认材质 找到Spine的Editor导入配置如何修改方法一: 你可以通过脚本 去修改Assets/Editor/SpineSettings.asset文件方法二:通过面板手动设置 找到Spine的Editor导入配置 通常在 Assets/Editor/SpineSettings.asset 配置文件对应着 Edit/Prefe…

wxPython 布局调试技巧

在Show()与MainLoop()直接加入以上代码 import wx.lib.inspection ...frame.Show() wx.lib.inspection.InspectionTool().Show() app.MainLoop()启动后会弹出布局查看工具

蓝桥杯每日一题2032.10.24

蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由于布局为两个字节为一行&#xff0c;那我们输入两个数就为一行&#xff0c;但是这两个数全部得用二进制进行表示使用bitset bitset:将一个数转化为二进制 bitset<8>:将一个数转化为8位…

【Unity3D】Unity与Android交互

1 Unity 发布 apk 1.1 安装 Android Build Support 在 Unity Hub 中打开添加模块窗口&#xff0c;操作如下。 选择 Android Build Support 安装&#xff0c;如下&#xff08;笔者这里已安装过&#xff09;。 创建一个 Unity 项目&#xff0c;依次点击【File→Build Settings→…

springboot maven项目环境搭建idea

springboot maven项目环境搭建idea 文章目录 springboot maven项目环境搭建idea用到的软件idea下载和安装java下载和安装maven下载和安装安装maven添加JAVA_HOME路径&#xff0c;增加JRE环境修改conf/settings.xml&#xff0c;请参考以下 项目idea配置打开现有项目run或build打…

什么是WMS系统条码化管理

WMS系统是一种用于仓库管理的信息化系统&#xff0c;旨在提高仓库操作的效率和准确性。而在WMS系统中&#xff0c;条码化管理是一项关键的技术和方法&#xff0c;它通过将商品和物料打上条码&#xff0c;并利用扫描设备进行数据采集和处理&#xff0c;实现了仓库管理的全面自动…

深度学习模型笔记

加载和保存模型参数 保存模型参数 net MLP() # 此处省略训练过程&#xff0c;在训练之后&#xff0c;保存模型参数 # 保存字典格式的模型参数&#xff0c;模型参数名 torch.save(net.state_dict(), mlp.params) 加载模型参数 clone MLP() # 加载模型参数 clone.load_state…

用 Rust 和 cURL 库制作一个有趣的爬虫

目录 一、介绍 二、准备工作 三、代码实现 四、解析 HTML 并提取特定元素示例 总结 本文将介绍如何使用 Rust 编程语言和 cURL 库制作一个有趣的网络爬虫。我们将通过实例代码来展示如何抓取网页内容、处理数据和解析 HTML 结构。同时&#xff0c;还将探讨爬虫技术的原理、…

uniapp 自定义导航栏

自定义导航栏 修改 pages.json 在 pages.json 中将 navigateionStyle 设为 custom 新建 systemInfo.js systemInfo.js 用来获取当前设备的机型系统信息&#xff0c;放在 common 目录下 /*** 此 js 文件管理关于当前设备的机型系统信息*/ const systemInfo function() {/***…

Linux系统安装redis并配置为服务

一、Linux环境 1、下载 官网提供的源码下载地址&#xff1a; https://github.com/redis/redis/archive/7.0.5.tar.gz 2、将源码上传至服务器 3、解压缩 # 将解压缩后的文件放置在同目录的source文件夹下 tar -zxvf redis-7.0.5.tar.gz -C ./source4、编译安装 对源码进行编…

echarts插件-liquidFill(水球图)

echarts插件-liquidFill&#xff08;水球图&#xff09; 1.下载2.引入&#xff1a;3.使用 1.下载 echarts.js下载&#xff1a;https://cdnjs.com/libraries/echarts echarts-liquidfill.js下载&#xff1a;https://github.com/ecomfe/echarts-liquidfill 2.引入&#xff1a; …

error: the following arguments are required: --model, --data 解决方法

错误原因&#xff1a;Windows下需要缺乏配置参数&#xff0c;需要进行相关参数配置。 解决办法&#xff1a;在Pycharm的编辑设置&#xff0c;加上–model--model ****,其中****为指定的模型名称&#xff0c;按照自己实际报错进行添加&#xff0c;比如我这里要跑的模型为bert&am…

获取Android签名文件的MD5和SHA1指纹

以前在App中集成百度地图时&#xff0c;需要在百度地图的开发者网站上绑定应用的包名和签名&#xff0c;以预防自己的key被别人乱用。 最近公司的一个球机产品也搞了类似的做法&#xff0c;我们要访问它的摄像头功能需要使用厂家提供的aar库&#xff0c;但是你要想正常调用它的…

如何批量给视频添加logo水印?

如果你想为自己的视频添加图片水印&#xff0c;以增强视频的辨识度和个性化&#xff0c;那么你可以使用固乔剪辑助手软件来实现这一需求。下面就是详细的操作步骤&#xff1a; 1.下载并打开固乔剪辑助手软件&#xff0c;这是一款简单易用的视频剪辑软件&#xff0c;功能丰富&am…

一起学数据结构(12)——归并排序的实现

1. 归并排序原理&#xff1a; 归并排序的大概原理如下图所示&#xff1a; 从图中可以看出&#xff0c;归并排序的整体思路就是把已给数组不断分成左右两个区间&#xff0c;当这个区间中的数据数量到达一定数值时&#xff0c;便返回去进行排序&#xff0c;整体的结构类似二叉树…

在 Mac M1 上运行 Llama 2 并进行训练

在 Mac M1 上运行 Llama 2 并进行训练 Llama 2 是由领先的人工智能研究公司 Meta &#xff08;前Facebook&#xff09;开发并发布的下一代大型语言模型 (LLM)。 它基于 2 万亿个公共数据 token 进行了预训练&#xff0c;旨在帮助开发人员和企业组织构建基于人工智能的生成工具和…

云音乐Android Cronet接入实践

背景 网易云音乐产品线终端类型广泛&#xff0c;除了移动端&#xff08;IOS/安卓&#xff09;之外&#xff0c;还有PC、MAC、Iot多终端等等。移动端由于上线时间早&#xff0c;用户基数大&#xff0c;沉淀了一些端侧相对比较稳定的网络策略和网络基础能力。然而由于各端在基础…