dbgview 在windows 10 中关闭后再次打开时无法“capture kernel”

DbgView 是一个免费的用于抓取log 的工具,可以捕获并输出OutputDebugString()函数的输出,以及输出windows driver 中dbgprint 的log,对于windows driver 开发和调试是十分有帮助的。

但是该tool 已经很久不再更新了,最新的版本是V4.81 版本,是久远的2012年12月份release 出来的,具体下载链接为:

https://technet.microsoft.com/en-us/sysinternals/debugview.aspx?f=255&MSPPError=-2147217396

目前Dbgview.exe 使用在Windows 10 下,会有一个小问题:

开启“capture kernel” 后运行一次dbgview后关闭该AP,并再次打开时通常会无法再“capture kernel”。提示的error 如下图:

这样会导致DbgView 无法"Capture Kernel",除非重新启动PC。这样非常不方便。

在研究DbgView与“Dbgv.sys” 时发现有几个要点:

1. Dbgview.exe 在启动时,会在该exe中找到对应的resource,然后将这部分生成一个“Dbgv.sys”放在系统目录下,然后启动该sys。

2. 启动成功后就会去delete 该“Dbgv.sys”文件。所以正常在win7 等系统中是无法看到“Dbgv.sys”这个文件的。

3. 当第二次运行dbgview 时,同样会提取出“Dbgv.sys”,并重写之前的文件(如果文件存在的话)。

4. 但是在win 10 中在步骤2总delete 这个文件时会失败;而且在步骤3中进行重写时也是失败的。猜测Windows 10 是禁止重写已经运行了的sys文件。

5. 在overwrite 失败后,dbgview 认为不能正确运行“Dbgv.sys”,所以弹出上文的error message。

6. DbgView 在运行“Dbgv.sys” 时是创建并start 一个service “DBGVSVC”,但是比较奇怪的是在系统中并没发现该service。

根据上述的分析,产生一些策略去尝试避免文中所说的问题:

1. 在再次打开DbgView 前,尝试找到“DBGVSVC” service,并stop service 后再运行DbgView,但是没能找到“DBGVSVC” Service,该策略未生效;

2. 在再次打开DbgView 前,尝试去删除“Dbgv.sys” 文件,然后再运行DbgView,但是该文件未能找到有效的方法成功删除,该策略未生效;

3. 偶然发现“Dbgv.sys” 竟然可以重命名,重命名该文件后再运行DbgView 就OK了。但是该方法的缺陷是需要重启后删除重命名后的文件,否则该文件会一直存在。这个方法对于不想使用我修改后的dbgview 的用户来说,非常友善。

4. 反编译DbgView 后,将dbgview 中重写“Dbgv.sys” 失败后的代码改写,就可以在windows 10 中继续像在以前OS 中开心的玩耍了。修改后的FakeDbgView.exe 可以在https://pan.baidu.com/s/1o8TbqjC 下载。该版本是基于V4.81 版本 版本进行修改。

时间: 2024-08-06 20:05:49

dbgview 在windows 10 中关闭后再次打开时无法“capture kernel”的相关文章

[]如何在Windows 10中更改文件夹背景颜色

ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Windows 8引入的新文件管理器不兼容. 由于某些原因,这些文件夹背景更改工具在Windows 10和Windows 8/8中不起作用.1.自从Windows 10发布以来,用户一直在要求我们提出一种将图片设置为文件夹背景或至少更改文件夹背景颜色的方法,我们决定提出本指南. 如果您在Windows

[转]如何在Windows 10中更改文件夹背景颜色

ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Windows 8引入的新文件管理器不兼容. 由于某些原因,这些文件夹背景更改工具在Windows 10和Windows 8/8中不起作用.1.自从Windows 10发布以来,用户一直在要求我们提出一种将图片设置为文件夹背景或至少更改文件夹背景颜色的方法,我们决定提出本指南. 如果您在Windows

Windows 10 中的文件历史记录

什么事文件历史记录? 文件历史记录是一个备份应用程序,它会持续保护存储在库.桌面.收藏夹和联系人文件夹中的个人文件.它定期扫描(默认情况下每小时一次)文件系统中的更改并将更改的文件复制到另一位置.每当您的任何个人文件发生更改时,其副本都将存储在您选择的专用外部存储设备上.随着时间的推移,文件历史记录将会建立对任何个人文件所做更改的完整历史记录. 注意:文件历史记录只保护用户库.桌面.收藏夹和联系人.其他文件(例如操作系统文件.应用程序和设置)将不会得到备份 那么怎么在Windows 10中使用文

如何完全禁用或卸载Windows 10中的OneDrive - 51CTO.COM

OneDrive 是微软的个人云存储平台,提供了对个人用户的文件托管.存储和同步等服务,OneDrive 默认被内置在 Windows 10 操作系统当中,而且当用户使用 微软账户 登录时,OneDrive 也会默认启用. 然而,不是所有用户都会使用到 OneDrive 服务.在国内,有很多本地化服务商都推出了非常符合中国人使用习惯的云存储服务,如我个人非常喜欢的坚果云.百度云等.反而 OneDrive 在中国大陆的表现很有些水土不服,甚至一度还由于某些原因导致无法访问. 与 Windows 7

玩转 Windows 10 中的 Linux 子系统(SSH服务)

在今年的 Build 2016 上,微软向全世界介绍了他们还处于 Beta 阶段的 Windows 下的 Linux 子系统Windows Subsystem for Linux(WSL),它可以让开发者们在 Windows 10 下通过 Bash shell 运行原生的 Ubuntu 用户态二进制程序.如果你参与了 Windows Insider 计划,你就可以在最新的 Windows 10 年度升级版的 Insider 构建版中体验这个功能了.Web 开发人员们不用再苦恼所用的 Window

PowerShell:在Windows 10中为Wi-Fi网络生成QR代码

您可以使用PowerShell生成QR代码以与您的朋友或同事共享.使用QRCodeGenerator PowerShell模块生成QR码图像的示例,您的同事或来宾可使用该QR码图像连接到Wi-Fi网络(因为您不想将密码指定给每个朋友)). QRCodeGenerator模块可用于为以下对象类型生成带有QR码的PNG文件: vCard联系人卡(名片) 地理数据 Wi-Fi连接设置 您可以手动下载QRCodeGenerator模块(https://www.powershellgallery.com/

windows 10中Microsoft Edge Beta登录账户提示:以管理员身份运行 Microsoft Edge 时不支持登录。请以非管理员身份重新启动 Microsoft Edge,然后重新尝试登录。的解决方案

windows 10中Microsoft Edge Beta登录账户提示:以管理员身份运行 Microsoft Edge 时不支持登录.请以非管理员身份重新启动 Microsoft Edge,然后重新尝试登录. 解决方案: 右击edge,属性,兼容性,勾选“windows 7",确定,再双击要开即可. 打开后上述兼容性设置会还原,目前不知其解. 原文地址:https://www.cnblogs.com/sun51586/p/12083630.html

[转载]在 Windows 10 中, 如何卸载和重新安装 OneNote App

在 Windows 10 中, 如何卸载和重新安装 OneNote App 15/8/2015 使用 PowerShell 命令卸载 OneNote App 开始菜单 -> 输入 "Powershell" -> 右键点击菜单 -> 用管理员运行 -> 输入以下命令行 Get-AppxPackage *microsoft.office.onenote* | Remove-AppxPackage 使用 Windows 商店重新安装 OneNote App 打开 Wi

使用LibUsbDotNet时,当关闭后再打开USB设备就会报“已关闭safe handle”

由于项目中需要和USB设备通讯,于是用到LibUsbDotNet.dll这个开源的项目.但是在使用的时候发现关闭USB设备后再打开,过2秒就会出现异常“已关闭safe handle”,由于网上关于LibUsbDotNet的资料比较少,查了好久都查不出原因.不过用关键字“已关闭safe handle”的时候,发现很多人使用SerialPort时也遇到这个问题. 由于对底层实现不懂,所以只能猜测原因.在使用Usb.read()或者SerialPort.read()方法的时候,都会开辟一个局部变量数组