https://onitroad.com 更多教程
原因
此错误检查通常有三种不同的原因:
- 驱动程序无意或者故意修改了关键内核代码或者数据。Microsoft Windows Server 2003 with Service Pack 1 (SP1) 和用于基于 x64 的计算机的更高版本的 Windows 不允许修补内核,除非通过授权的 Microsoft 发起的热补丁。
- 开发人员尝试使用系统启动时未连接的内核调试器设置正常的内核断点。正常断点 (bp) 只能在调试器在启动时连接时设置。
可以随时设置处理器断点 (ba)。
- 发生硬件损坏。例如,内核代码或者数据可能已存储在失败的内存中。
CRITICAL_STRUCTURE_CORRUPTION 错误检查的值为 0x00000109.
这表明内核已检测到关键内核代码或者数据损坏。
解决方法
!analyze 调试扩展显示有关错误检查的信息,有助于确定根本原因。
详细步骤查看我们的教程 在windows 中使用WinDBG 调试dmp文件
首先,使用 k、kb、kc、kd、kp、kP、kv(显示堆栈回溯)命令检查堆栈跟踪。
我们可以指定处理器编号来检查所有处理器上的堆栈。
我们还可以在导致此停止代码的代码中设置一个断点,并尝试单步前进到出错的代码中。
有关详细信息,请参阅以下主题:
使用 Windows 调试器 (WinDbg) 进行故障转储分析
如果我们不具备使用 Windows 调试器来解决此问题的能力,则可以使用一些基本的故障排除技术。
- 检查事件查看器中的系统日志以获取可能有助于识别导致此错误检查的设备或者驱动程序的其他错误消息。
- 如果在错误检查消息中识别出驱动程序,请禁用该驱动程序或者与制造商联系以获取驱动程序更新。
- 运行 Windows 内存诊断工具来测试内存。在控制面板搜索框中,键入内存,然后选择诊断计算机的内存问题。 运行测试后,使用事件查看器在系统日志下查看结果。查找 MemoryDiagnostics-Results 条目以查看结果。
- 我们可以尝试运行系统制造商提供的硬件诊断程序。
- 确认安装的任何新硬件都与安装的 Windows 版本兼容。例如,我们可以在 Windows 10 规范中获取有关所需硬件的信息。
- 有关其他常规故障排除信息,请参阅蓝屏数据。
CRITICAL_STRUCTURE_CORRUPTION 参数
参数 | 说明 |
---|---|
1 | 保留 |
2 | 保留 |
3 | 保留 |
4 | 损坏区域的类型。(请参阅本页后面的表格。) |
参数 4 的值指示损坏区域的类型。
参数 4 | 损坏区域的类型、损坏类型或者导致损坏的操作类型 |
---|---|
0x0 | 通用数据区域 |
0x1 | 函数修改 |
0x2 | 处理器中断调度表 (IDT) |
0x3 | 处理器全局描述符表 ( GDT) |
0x4 | 1 类进程列表损坏 |
0x5 | 2 类进程列表损坏 |
0x6 | 调试例程修改 |
0x7 | 关键 MSR 修改 |
0x8 | 对象类型 |
0x9 | 处理器 IVT |
0xA | 系统服务功能修改 |
0xB | 通用会话数据区域 |
0xC | 会话功能或者 .pdata |
0xD | 修改导入表 |
0xE | 修改会话导入表 |
0xF | ps Win32 callout修改 |
0x10 | 调试开关例程修改 |
0x11 | IRP分配器修改 |
0x12 | 驱动调用调度器修改 |
0x13 | IRP完成调度器修改 |
0x14 | IRP解除分配器修改 |
0x15 | A处理器控制寄存器 |
0x16 | 临界浮点控制寄存器修改 |
0x17 | 本地APIC修改 |
0x18 | 内核通知callout修改 |
0x19 | 加载模块列表修改 |
0x1A | Type 3进程列表损坏 |
0x1B | Type 4进程列表损坏 |
0x1C | 驱动程序对象损坏 |
0x1D | 执行回调对象修改 |
0x1E | 模块填充 |
0x1F | 修改 受保护进程修改 |
0x20 | 通用数据区域 |
0x21 | 页面哈希不匹配 |
0x22 | 会话页哈希不匹配 |
0x23 | 加载配置目录修改 |
0x24 | 倒置函数表修改 |
0x25 | 会话配置修改 |
0x26 | 扩展处理器控制寄存器 |
0x27 | 类型 1 池损坏 |
0x28 | 类型 2 池损坏 |
0x29 | 类型 3 池损坏 |
0x101 | 一般池损坏 |
0x102 | win32k.sys 的修改 |
日期:2020-09-17 00:15:34 来源:oir作者:oir