Bug 检查 0x1:APC_INDEX_MISMATCH

APC_INDEX_MISMATCH Bug 检查的值为 0x00000001。 Bug 检查表明异步过程调用 (APC) 状态索引不匹配。

重要

这篇文章适合程序员阅读。 如果你是 Microsoft 客户,并且你的计算机显示蓝屏错误代码,请参阅对蓝屏错误进行故障排除

APC_INDEX_MISMATCH 参数

参数 说明
1 系统函数(系统调用)或辅助角色例程的地址。
2 当前线程的 ApcStateIndex 字段的值。
3 当前线程的 CombinedApcDisable 字段的值。 此字段由两个单独的 16 位字段组成:(线程 >SpecialApcDisable<< 16) | 线程> KernelApcDisable
4 调用类型:
0 - 系统调用
1 - 辅助角色例程

原因

此 Bug 检查的最常见原因是文件系统或驱动程序禁用和重新启用 APC 的调用顺序不匹配。 关键数据项是 Thread>CombinedApcDisable 字段。 CombinedApcDisable 字段由两个单独的 16 位字段组成:SpecialApcDisableKernelApcDisable。 任一字段的负值表示驱动程序已分别禁用特殊或普通 APC,而没有重新启用它们。 正值表示驱动程序启用特殊或普通 APC 的次数过多。

解决方法

可以使用 WinDbg 或基本故障排除技术解决此问题。

使用 WinDbg 进行调试

!analyze 调试程序扩展显示有关错误检查的信息,并有助于确定根本原因。

可以使用 !apc 扩展显示一个或多个 APC 内容。

还可以在此停止代码之前的代码中设置断点,并尝试单步前进到故障代码中。

有关使用 WinDbg 的详细信息,请参阅使用 Windows 调试程序 (WinDbg) 进行故障转储分析

不使用 WinDbg 进行调试

如果您不具备使用 Windows 调试器来解决此问题的能力,那么:

  • 在事件查看器中检查系统日志以获取更多错误消息,这可能有助于识别导致此 Bug 检查的设备或驱动程序。

  • 如果在 Bug 检查消息中标识了驱动程序,请禁用该驱动程序,或与制造商联系以获取驱动程序更新。

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

有关常规故障排除的更多信息,请参阅 蓝屏数据

注解

此 Bug 检查是内核中内部错误导致的结果。 退出系统调用时会出现此错误。 此 Bug 检查的可能原因是文件系统或驱动程序在进入或离开受保护区域或关键区域时的系统调用顺序不匹配。 例如,对 KeEnterCriticalRegion 的每次调用都必须具有对 KeLeaveCriticalRegion 的匹配调用。

如果您正在开发驱动程序,可以使用静态驱动程序验证程序(Windows 驱动程序工具包中提供的静态分析工具)在交付驱动程序之前检测代码中的问题。 使用 CriticalRegions 规则运行静态驱动程序验证程序,以验证源代码是否按正确的顺序使用这些系统调用。

另请参阅

错误检查代码参考