Windows驱动开发之环境搭建,长期Waiting for connecting...思路

news2024/11/16 6:32:04

Windows驱动开发之环境搭建

1、前期准备

  • Vmware虚拟机软件

  • Windows10 iso安装包

  • Visual Studio2022 IDE软件

  • SDK安装(一定要勾选上debug选项,windbg在里面)

  • WDK(Windows驱动程序工具包)

WDK安装请参考官方文档:下载 Windows 驱动程序工具包 (WDK) - Windows drivers | Microsoft Learn

第一步:开发环境搭建

注意事项:在安装完WDK后,VisualStudio2022还不能开发驱动程序,因为还未向VisualStudio2022安装WDK的扩展包;需要在WDK安装目录下或使用everything全局搜索“WDK.vsix”文件,安装即可。

请添加图片描述

打开VisualStudio IDE “新建项目” 后出现上图“Driver”字样说明我们的开发环境搭建完成啦!恭喜完成第一步。

第二步:调试环境搭建

配置虚拟机;

为虚拟机添加一个串行端口

请添加图片描述

注:添加串口后需要修改串口配置;”使用命名的管道“,配置管道名,修改”另一端是应用程序“(另一端是windbg,故而是应用程序)

配置windbg;

创建一个windbg的桌面快捷方式,设置目标为:“xxx/xxx/windbg.exe” -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

上面的xxx/xxx/windbg.exe替换为自己的windbg.exe路径即可

配置虚拟机中Windows10系统;

需要开启Vmware中的Windows10系统(前期准备里面应该已经安装完成啦!!!)

请添加图片描述

Windows键,输入“msconfig”,会出现“系统配置”应用,打开即可

请添加图片描述

打开“引导”标签页,点击“高级选项”按钮,勾选“调试”复选框,选择“COM1”调试端口,调整波特率为“115200”。

请添加图片描述

后续按下面顺序进行执行即可(内容同其他博客)

  1. 以管理身份打开"cmd"

  2. 输入”bcdedit“
    请添加图片描述

  3. 设置端口1,命令如下:

    bcdedit /dbgsettings serial baudrate:115200 debugport:1
    
  4. 复制一个开机选项,命名为“DebugEntry”(可任意命名)。命令如下:

    bcdedit /copy {current} /d DebugEntry
    
  5. 增加一个开机引导项

    bcdedit /displayorder {current} {ID}
    

    注:这个ID要填写上一条命令生成的一串数字或字母。

  6. 激活Debug

    bcdedit /debug {ID} ON
    

    注:ID以生成的数字或字母串代替。

  7. 重启虚拟机,选择“DebugEntry[debug]”作为启动项

  8. 选择好启动项后,立即回到主机,启动windbg。只有在虚拟器系统启动过程中,才能连接上!!!(真的!真的!真的!)否则windbg会一直在下面这个界面上

    ***请添加图片描述


永远都停留在”Waiting to reconnect…“,永远…

最后效果展示

请添加图片描述

windbg使虚拟机中的操作系统中断啦,只需要在kd> 文本框中输入"g",系统便可继续执行。

请添加图片描述

选择我们上面配置的“DebugEntry”引导项,系统继续运行;若系统再次卡住,说明又被Windbg给打断啦,输入“g”继续。

windbg在“*BUSY*Debuggee is running”状态时,可以使用“Ctrl + Pause(键盘右上角寻找)”进行打断操作,进行打断点或者后面我们查看当前的PC所有的驱动(kd> lm n t)。

请添加图片描述

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

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

相关文章

人人都可配置的大屏可视化

大屏主要是为了展示数据和酷炫的效果,布局大部分是9宫格,或者在9宫格上做的延伸,现在介绍下 泛积木-低代码 提供的大屏可视化配置。 首先查看效果展示 泛积木-低代码大屏展示。 创建页面之后,点击进入编辑页面,在可视…

初识命令执行【简介、工作原理和利用方式】

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、前言 本文看完如果想对应实战相关内容,可…

openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表

文章目录 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表211.1 禁止操作211.2 高危操作 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表 各项操作请严格遵守指导书操作,同时避免执行如下高危操作。 211.1 禁止操作 表1中描述在产品的操…

纯html+css+js静态汽车商城

首页代码 <!DOCTYPE html> <html class"no-js" lang"zxx"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

Datawhale 组队学习之大模型理论基础Task9 大模型法律

第11章 大模型法律 11.1 简介 此内容主要探讨法律对大型语言模型的开发和部署有何规定。 先看看法律的特点&#xff1a; 法律就如我国法律教材所给出的一样&#xff0c;有依靠国家强制力保证实施的特点。 而法律在大模型中也是不可或缺的&#xff0c;缺少了法律的约束&…

【复现】Ivanti Connect Secure命令注入漏洞(CVE-2024-21887)_33

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Ivanti Connect Secure&#xff08;9.x、22.x&#xff09;和 Ivanti Policy Secure&#xff08;9.x、22.x&#xff09;的 Web 组件…

java8 Duration类学习

Duration类 官网地址 基于时间的时间量&#xff0c;例如“34.5秒”。 此类以秒和纳秒为单位对时间的量或量进行建模。它可以使用其他基于持续时间的单位访问&#xff0c;如分钟和小时。此外&#xff0c;可以使用DAYS单位&#xff0c;并将其视为完全等于24小时&#xff0c;从…

如何利用故障根因分析快速定位故障原因?

「 背 景 」 众所周知&#xff0c;变更是线上环境不稳定的⾸要因素&#xff0c;有研究表明&#xff0c;线上70%的故障都是由某种变更⽽触发的。因此&#xff0c;当⽣产环境发⽣故障产⽣告警时&#xff0c;管理员第⼀直觉是怀疑近期是否发⽣过变更。此时&#xff0c;我们往往需…

Linux ---- Shell编程之正则表达式

一、正则表达式 ​ 由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c;类似于增强版的通配符功能&#xff0c;但与通配符不同&#xff0c;通配符功能是用…

C++ 数论相关题目 博弈论:拆分-Nim游戏

给定 n 堆石子&#xff0c;两位玩家轮流操作&#xff0c;每次操作可以取走其中的一堆石子&#xff0c;然后放入两堆规模更小的石子&#xff08;新堆规模可以为 0 &#xff0c;且两个新堆的石子总数可以大于取走的那堆石子数&#xff09;&#xff0c;最后无法进行操作的人视为失…

如何在win系统部署Apache服务并实现无公网ip远程访问

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

MySQL解决 恢复从备份点到灾难点之间数据(不收藏找不到了)

CSDN 成就一亿技术人&#xff01; 今天分享一期 mysql中 备份之后发生灾难造成数据丢失 那么如何恢复中间的数据呢&#xff1f; 数据库数据高于一切&#xff08;任何数据是不能丢失的&#xff09; CSDN 成就一亿技术人&#xff01; 目录 1.准备测试数据库 2.备份数据库 观…

CCF-CSP 202312-1 仓库规划(Java、C++、Python)

文章目录 仓库规划问题描述输入格式输出格式样例输入样例输出子任务 满分代码JavaCPython 仓库规划 问题描述 西西艾弗岛上共有 n n n 个仓库, 依次编号为 1 ⋯ n 1 \cdots n 1⋯n 。每个仓库均有一个 m m m 维向量的位置编码, 用来表示仓库间的物流运转关系。 具体来说,…

机器学习 | 掌握 K-近邻算法 的理论实现和调优技巧

目录 初识K-近邻算法 距离度量 K值选择 kd树 数据集划分 特征预处理 莺尾花种类预测(实操) 交叉验证与网格搜索 初识K-近邻算法 K-近邻算法&#xff08;K-Nearest Neighbor&#xff0c;KNN&#xff09;是一种基本的分类和回归算法。它的基本思想是通过找出与新对象最近…

git远程仓库基本操作

目录 gitremote &#xff08;查看远程仓库&#xff09; git remote add [仓库名] [url] git clone [url]&#xff08;克隆远程仓库到本地&#xff09; git push [名][分支名]&#xff08;提交到远程仓库&#xff09;​编辑 git pull [名][分支名]从远程仓库拉取​编辑 注意操作…

SpringBoot拉取高德行政区域数据

SpringBoot拉取高德行政区域数据 一、账号申请 1.整体流程 行政区域文档&#xff1a;https://lbs.amap.com/api/webservice/guide/api/district 整体流程可参考&#xff1a;https://lbs.amap.com/api/webservice/guide/create-project/get-key 2.注册账号 注册地址&#…

js padEnd方法介绍笔记

padEnd() 是 JavaScript 字符串的方法之一&#xff0c;它用于在当前字符串的末尾添加指定数量的字符&#xff0c;直到字符串达到指定的长度。 padEnd() 方法接受两个参数&#xff1a; 目标长度和要添加的填充字符。 如果当前字符串的长度已经等于或超过目标长度&#xff0c;则不…

你应该仅仅把useMemo作为性能优化的手段

文章概叙 本文主要通过几个简单的例子&#xff0c;讲解下useMemo这个hook&#xff0c;给诸君参考&#xff0c;也是给我自己做一个记录 关于useMemo useMemo是一个React Hook&#xff0c;它在每次重新渲染的时候能够缓存计算的结果。 相比于其他很常用的hook&#xff0c;如u…

LPC804开发(7.SPI使用)

1.前言 原本说写ADC&#xff0c;但是考虑到6已经给了串口&#xff0c;算了算了&#xff0c;还是把SPI和IIC放到7和8吧。整体用下来感觉NXP的协议比ST和TI开发的完善的&#xff0c;都可以走硬件&#xff0c;比较完善的底层开发&#xff0c;没有硬伤&#xff0c;那么接下来我们来…

教你一招轻松把模糊的照片变高清

亲爱的朋友们&#xff0c;你们是否也曾经遇到过这样的问题——精心拍摄的照片或珍藏已久的图片突然变得模糊不清&#xff0c;让人心情郁闷&#xff1f;别担心&#xff0c;我发现了解决这个问题的秘诀&#xff01;借助一些专业的图片修复工具&#xff0c;那些模糊的瞬间可以重新…