原因
如果第一个参数是 0 或者 1,则在内核堆栈中找不到堆栈签名。
此错误可能是由有缺陷的硬件引起的,例如 内存 错误。
如果第一个参数为 2,则驱动程序堆栈返回的页面读取状态不一致。
例如,驱动程序堆栈返回成功状态,即使它没有读取整个页面。
如果第一个参数是 0、1 或者 2 以外的任何值,则第一个参数的值是驱动程序堆栈在尝试检索内核数据页面后返回的 NTSTATUS 错误代码。
我们可以从 I/O 状态代码(第二个参数)确定此错误的确切原因。
一些常见的状态代码包括:
- 0xC000009A 或者 STATUS_INSUFFICIENT_RESOURCES 表示缺少非分页池资源。此状态代码指示存储堆栈中的驱动程序错误。 (无论软件资源是否可用,存储堆栈应该始终能够检索此数据。)
- 0xC000009C,即STATUS_DEVICE_DATA_ERROR,表示硬盘上有坏块(扇区)。
- 0xC000009D 或者 STATUS_DEVICE_NOT_CONNECTED 表示布线有缺陷或者松动、端接,或者控制器看不到硬盘驱动器。
- 0xC000016A 或者 STATUS_DISK_OPERATION_FAILED,表示硬盘上的坏块(扇区)。
- 0xC0000185 或者 STATUS_IO_DEVICE_ERROR,表示 SCSI 设备上的不正确终止或者有缺陷的布线,或者两个设备正试图使用相同的 IRQ。
这些状态代码是最常见的具有特定原因的状态代码。
有关可能返回的其他可能状态代码的详细信息,请参阅 onitroad Windows 驱动程序工具包 (WDK) 中的 Ntstatus.h 文件。
病毒感染也可能导致此错误检查。
KERNEL_STACK_INPAGE_ERROR 错误检查的值为 0x00000077.
此错误检查表明无法将页面文件中请求的内核数据页面读入内存。
KERNEL_STACK_INPAGE_ERROR 参数
消息中列出的四个参数有两种可能的含义。
如果第一个参数为 0、1 或者 2,则参数含义如下。
参数 | 描述 |
---|---|
1 | 0:从页面缓存中检索内核数据页面。 1:从磁盘检索页面。 2:从磁盘检索页面,存储堆栈返回 SUCCESS,但 Status.Information 为不等于 PAGE_SIZE。 |
2 | 出现在签名应该所在的堆栈中的值。 |
3 | 0 |
4 | 签名在内核栈上的地址 |
如果第一个参数是 0、1 或者 2 以外的任何值,则参数具有以下含义。
参数 | 描述 |
---|---|
1 | 状态码 |
2 | 输入输出状态码 |
3 | 页文件号 |
4 | 页面文件的偏移量 |
解决方法
解决坏块问题:如果可以在出错后重新启动计算机,Autochk 会自动运行并尝试映射坏扇区以防止其再被使用。
如果 Autochk 没有扫描硬盘上的错误,我们可以手动启动磁盘扫描程序。
在系统分区上运行 Chkdsk /f /r。
我们必须在磁盘扫描开始之前重新启动计算机。
如果由于错误而无法启动系统,请使用故障恢复控制台并运行 Chkdsk /r 。
警告 如果系统分区是用 FAT 文件系统格式化的,如果我们使用 Scandisk 或者其他基于 MS-DOS 的硬盘工具来验证硬盘驱动器的完整性,则 Windows 操作系统使用的长文件名可能会被损坏。
MS-DOS。
始终使用与 Windows 操作系统版本匹配的 Chkdsk 版本。
解决有缺陷的硬件问题:如果 I/O 状态为 0xC0000185 并且分页文件在 SCSI 磁盘上,请检查磁盘布线和 SCSI 端接是否有问题。
解决 内存 故障问题:运行系统制造商提供的硬件诊断程序,尤其是内存扫描程序。
有关这些步骤的更多信息,请参阅计算机的用户手册。
检查计算机中的所有适配卡是否正确就位。
使用电子产品商店提供的墨水橡皮擦或者电触点处理,以确保适配卡触点清洁。
检查事件查看器中的系统日志以获取可能有助于识别导致错误的设备的其他错误消息。
我们还可以禁用 BIOS 的内存缓存以尝试解决此错误。
确保安装了最新的 Windows Service Pack。
如果上述步骤无法解决错误,请将系统主板带到维修机构进行诊断测试。
主板上的裂缝、划痕或者有缺陷的组件可能导致此错误。
解决病毒感染:使用任何最新的商业病毒扫描软件检查计算机是否有病毒,这些软件会检查硬盘的主引导记录。
所有 Windows 文件系统都可能感染病毒。