电脑提示DRIVER_IRQL_NOT_LESS_OR_EQUAL蓝屏修复方法

2023-07-27 08:41 点击:

蓝屏代码0x000000D1代表"DRIVER_IRQL_NOT_LESS_OR_EQUAL",这意味着一个驱动程序在请求更高的IRQL(中断请求级别)时发生了一个问题。通常情况下,这是由于驱动程序与其他驱动程序或操作系统内核之间的冲突或错误引起的。

要解决这个问题,可以尝试以下方法:

方法一:检查硬件冲突

有时候驱动程序与其他硬件设备产生冲突,尝试禁用或卸载最近安装的硬件设备,然后重新启动计算机,查看是否仍然出现蓝屏错误。

方法二:禁用或删除最近添加的驱动程序或服务

如果在安装某个特定驱动程序或服务后出现了蓝屏错误,可以尝试禁用或删除该驱动程序或服务,然后观察问题是否解决。

方法三:检查病毒或恶意软件

运行安全软件进行全面系统扫描,确保系统没有受到病毒或恶意软件的感染。

方法四:使用一键修复工具助手(强烈推荐

1、首先你的电脑必须下载与完成安装完成快快蓝屏修复助手。如果你还没有安装点击下方链接下载。

下载地址:>>><<<

提示:安装路径不要选择C盘,避免产生问题造成损失。

2、找到你电脑中的快快蓝屏修复助手,点击进入。看到首页后,点击首页一键扫描按钮开始扫描。等待几分钟,就能获取你急切想要的结果。

3、扫描完成后会显示电脑的所有蓝屏记录以及蓝屏的详细信息。

4、解决方案页面显示了导致该次蓝屏的具体原因和解决方案,点击右上角的一键修复进行修复。

5、切记,当修复完成之后我们还是需要重新启动计算机的。毕竟一切修复的结果,需要重新后,才能被系统认可。

当你完成重启后,你电脑的蓝屏问题已经基本解决了。相信小编,不要急需卸载快快蓝屏修复助手。毕竟它强大的功能是你未来的一个保障,可以随时随地为你服务,让你再次遇到蓝屏问题不在抓狂。

其他相关信息:

DRIVER_IRQL_NOT_LESS_OR_EQUAL bug 检查 的值为 0x000000D1。 这表示内核模式驱动程序在进程 IRQL 过高时尝试访问可分页内存。

DRIVER_IRQL_NOT_LESS_OR_EQUAL参数

原因

若要确定原因,需要 Windows 调试器、编程经验和对故障模块源代码的访问权限。

通常,发生此错误时,驱动程序尝试访问可分页 (地址或) 完全无效的地址,而中断请求级别 (IRQL) 过高。 这可能是由于:

在 DISPATCH_LEVEL 或更高级别执行时,取消引用错误指针(例如 NULL 或释放的指针)。

在 DISPATCH_LEVEL 或更高级别访问可分页数据。

在 DISPATCH_LEVEL 或更高级别执行可分页代码。

如果可以识别出导致错误的驱动程序,则其名称将打印在蓝屏上,并存储在 内存中 KiBugCheckDriver (PUNICODE_STRING) 位置。 可以使用 dx (显示调试器对象模型表达式) (调试器命令)来显示此对象: dx KiBugCheckDriver

此 bug 检查通常是由使用不正确的内存地址的驱动程序引起的。

页面错误的可能原因包括以下事件:

函数标记为可分页,并在提升的 IRQL (运行,其中包括获取锁) 。

函数调用是向另一个驱动程序中的函数进行的,并且该驱动程序已卸载。

该函数是使用作为无效指针的函数指针调用的。

有关 Windows IRQL 的详细信息,请参阅由 Pavel Yosifovich、Mark E. Russinovich、David A. Solomon 和 Alex Ionescu 撰写的 Windows Internals 第 7 版第 1 部分 。

解决方法

如果问题是由你正在开发的驱动程序引起的,请确保在出现 bug 时执行的函数检查为:

未标记为可分页 不调用任何其他可以分页的内联函数。

!analyze 调试程序扩展显示有关 bug 检查的信息,有助于确定根本原因。 下面的示例是 !analyze 的输出。

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high.  This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: fffff808add27150, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000000, value 0 = read operation, 1 = write operation
Arg4: fffff808adc386a6, address which referenced memory

如果可以识别出导致错误的驱动程序,则其名称将打印在蓝屏上,并存储在 内存中 KiBugCheckDriver (PUNICODE_STRING) 位置。 可以使用一个调试器命令 dx(显示调试器对象模型表达式)来显示此内容:dx KiBugCheckDriver

0: kd> dx KiBugCheckDriver
KiBugCheckDriver                 : 0xffffc6092de892c8 : "Wdf01000.sys" [Type: _UNICODE_STRING *]

如果转储文件中提供了陷阱帧,请使用 .trap 命令将上下文设置为提供的地址。

若要开始调试此类 bug 检查,请使用 kkbkckdkpkPkv (显示堆栈回溯) 命令来检查堆栈跟踪。

在调试器中,运行 !irql 命令,在调试器中断之前显示有关目标计算机上处理器 IRQL 的信息。 例如:

0: kd> !irql
Debugger saved IRQL for processor 0x0 -- 2 (DISPATCH_LEVEL)

在大多数此类 bug 检查的情况下,问题不在于 IRQL 级别,而在于正在访问的内存。

由于此 bug 检查通常是由使用不正确内存地址的驱动程序引起的,因此请使用参数 1、3 和 4 进一步调查。

使用 ln (列出参数 4) 最近的符号 以查看调用的函数的名称。 此外,检查 !analyze 输出以查看是否已识别出错误代码。

使用参数 1 地址上的 !pool 查看它是否为分页池。 使用 !address 和高级 !pte 命令了解有关此内存区域的详细信息。

使用 显示内存 命令检查参数 1 中的命令中引用的内存。

使用 uubuu (unassemble) 命令查看引用参数 4 中内存的地址中的代码。

使用 命令 lm t n 列出内存中加载的模块。 使用 !memusage 和 检查系统内存的一般状态。

驱动程序验证程序

驱动程序验证程序是一个实时运行的工具,用于检查驱动程序的行为。 例如,驱动程序验证程序检查内存资源(如内存池)的使用。 如果在执行驱动程序代码时标识错误,它会主动创建一个异常,以允许进一步检查该部分驱动程序代码。 驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows 电脑上使用。

若要启动驱动程序验证程序管理器,请在命令提示符下键入 验证程序 。 你可以配置要验证的驱动程序。 验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。 有关详细信息,请参阅驱动程序验证程序。

备注

如果你没有能力使用 Windows 调试器来解决此问题,则可以使用一些基本的故障排除技术。

在系统登录事件查看器中查看其他错误消息,这些错误消息可能有助于识别导致此 bug 的设备或驱动程序检查。

如果驱动程序标识在错误检查消息中,禁用该驱动程序或咨询驱动程序更新的制造商。

确认安装的任何新硬件都与已安装的 Windows 版本兼容。 例如,可以在Windows 10规范中获取有关所需硬件的信息。

有关其他常规疑难解答信息,请参阅蓝屏数据。