Bug 检查 0xA IRQL 您所在的位置:网站首页 错误0x0000000e Bug 检查 0xA IRQL

Bug 检查 0xA IRQL

2023-08-06 09:47| 来源: 网络整理| 查看: 265

Bug 检查 0xA:IRQL_NOT_LESS_OR_EQUAL 项目 06/15/2023

IRQL_NOT_LESS_OR_EQUAL bug 检查 值为 0x0000000A。 此 bug 检查指示 Microsoft Windows 或内核模式驱动程序在 IRQL) 的中断请求级别 (访问无效地址的分页内存。 原因通常是指针错误或页性问题。

重要

本文面向程序员。 如果你是使用计算机时收到蓝屏错误代码的客户,请参阅 蓝屏错误疑难解答。

IRQL_NOT_LESS_OR_EQUAL参数 参数 说明 1 无法访问的虚拟内存地址。

在此地址上使用 !pool 查看它是否为分页池。 其他可用于收集有关失败信息的命令包括 !pte、 !address 和 ln (List Nearest Symbols) 。

2 发生故障时的 IRQL。

值: 2 - 发生故障时已DISPATCH_LEVEL IRQL。

3 描述导致故障的操作的位字段。 请注意,位 3 仅适用于支持此报告级别的芯片集。

位 0 值: 0 - 读取操作 1 - 写入操作

第 3 位值: 0 - 不是执行操作 1 - 执行操作

位 0 和位 3 组合值: 0x0 - 尝试从参数 1 中的地址读取时出错 0x1 - 尝试写入参数 1 中的地址时出错 0x8 - 尝试从参数 1 中的地址执行代码时出错

此值由以下因素引起:

在 DISPATCH_LEVEL 调用无法在 DISPATCH_LEVEL 调用的函数。 忘记释放旋转锁。 在代码必须不可分页时将代码标记为可分页。 例如,如果代码获取一个旋转锁,或在延迟的过程调用中调用。 4 故障时的指令指针。

在此地址上使用 ln (List Nearest Symbols) 命令查看函数的名称。

原因

此 bug 检查是由使用不正确地址的内核模式设备驱动程序引起的。

此 bug 检查指示在 IRQL) 的中断请求 (级别提升时尝试访问无效地址。 原因是内存指针错误或设备驱动程序代码的页性问题。

可用于对导致 bug 检查的编码错误类型进行分类的一般准则如下:

如果参数 1 小于 0x1000,则问题可能是 NULL 指针取消引用。

如果 !pool 报告参数 1 是分页池 (或其他类型的可分页内存) ,则 IRQL 过高,无法访问此数据。 在较低的 IRQL 下运行,或在非分页池中分配数据。

如果参数 3 指示 bug 检查是尝试执行可分页代码,则 IRQL 过高,无法调用此函数。 在较低的 IRQL 下运行,或者不要将代码标记为可分页。

这可能是由释放后使用或位翻转引起的错误指针。 使用 !pte、 !address 和 ln (列表最接近的符号) 调查参数 1 的有效性。

解决方法

如果内核调试器可用,请获取堆栈跟踪。 首先运行 !analyze 调试器扩展,以显示有关 bug 检查的信息。 !analyze 扩展有助于确定根本原因。 接下来,输入其中一个 k* (显示堆栈回溯) 命令以查看调用堆栈。

收集信息

检查驱动程序的名称(如果已在蓝屏上列出)。

检查系统登录事件查看器中是否有其他错误消息,这些错误消息可能有助于查明导致错误的设备或驱动程序。 在与蓝屏相同的时间范围内查找系统日志中发生的严重错误。

驱动程序验证程序

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

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

以下代码演示了一个调试示例:

kd> .bugcheck [Lists bug check data.] Bugcheck code 0000000a Arguments 00000000 0000001c 00000000 00000000 kd> kb [Lists the stack trace.] ChildEBP RetAddr Args to Child 8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint 8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194 8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 8013ed5c 801263ba 00000000 00000000 e12ab000 8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194 kd> kv [Lists the trap frames.] ChildEBP RetAddr Args to Child 8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0]) 8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194 8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8) 8013ed5c 801263ba 00000000 00000000 e12ab000 8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194 kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.] eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10 eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0 nv up ei pl nz na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202 ErrCode = 00000000 00000000 ??????????????? [The current instruction pointer is NULL.] kd> kb [Gives the stack trace before the fault.] ChildEBP RetAddr Args to Child 8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint 8013ef74 fe5620d2 fe5620da ff690268 80404690 NDIS!_EthFilterIndicateReceiveComplete+0x31 8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0 注解

生成此 bug 检查的错误通常在安装有故障的设备驱动程序、系统服务或 BIOS 之后发生。

如果在升级到较新版本的 Windows 时遇到 bug 检查 0xA,则错误可能是由设备驱动程序、系统服务、病毒扫描程序或与新版本不兼容的备份工具引起的。

解决硬件问题: 如果最近在系统中添加了硬件,请将其删除以查看错误是否再次出现。 如果现有硬件出现故障,请卸下或更换故障部件。 运行系统制造商提供的硬件诊断。 有关这些过程的详细信息,请参阅计算机的用户手册。

解决故障系统服务问题: 禁用服务并确认这样做是否解决了错误。 如果可以,请联系系统服务的制造商以了解可能的更新。 如果在系统启动期间发生错误,请调查 Windows 修复选项。 有关详细信息,请参阅 Windows 10 中的恢复选项。

解决防病毒软件问题: 禁用程序并确认这样做是否解决了错误。 如果是,请与程序制造商联系,了解可能的更新。

有关 Bug 检查故障排除的一般信息,请参阅 蓝屏数据。

另请参阅

Bug 检查代码参考



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有