2.增强的崩溃支持
当 Windows 遇到不可恢复的内核模式错误时(无论是由于设备驱动程序错误、硬件故障还是操作系统问题),在出现“蓝屏死机现象和将物理内存的部分或所有内容写入崩溃转储文件(如果配置为执行此操作)后,它会尝试终止系统来防止磁盘数据的损坏 。转储文件非常有用,因为当您在系统崩溃后重启时,Microsoft 在线崩溃分析 (OCA) 服务会分析这些文件找出根本原因 。如果愿意,您也可以使用面向 Windows 的 Microsoft 调试工具自已进行分析 。
不过,在以前的 Windows 版本中,只有在会话管理器 (%Systemroot%System32Smss.exe) 进程初始化分页文件后才会启用对崩溃转储文件的支持 。这意味着在此之前任何严重错误会导致蓝屏,但没有转储文件 。由于在 Smss.exe 启动之前,会出现大量的设备驱动程序初始化,所以早期的崩溃永远不会引起崩溃转储,因此使原因诊断极为困难 。
在所有引导启动设备驱动程序初始化之后,但在系统启动驱动程序加载之前,Windows Vista 通过初始化转储文件支持,可减少无转储文件生成的时间窗口 。由于这一更改,如果在引导过程开始时出现崩溃,系统就可以捕捉崩溃转储,让 OCA 帮助您解决问题 。此外,Windows Vista 使用 64KB 块将数据存储到转储文件中,而以前的 Windows 版本使用 4KB 块写入文件 。这一更改使得大型转储文件的写入速度最多可提高 10 倍 。
应用程序崩溃处理功能在 Windows Vista 中也得以改进 。在以前的 Windows 版本中,当应用程序崩溃时,它会执行未处理的异常处理程序 。处理程序启动 Microsoft 应用程序错误报告 (AER) 进程 (%Systemroot%System32Dwwin.exe),显示对话框,指明程序崩溃,并询问您是否要向 Microsoft 发送错误报告 。不过,如果崩溃时进程主线程的堆栈损坏,未处理的异常处理程序执行时会崩溃,导致内核终止进程、程序窗口立即消失,并且没有错误报告窗口 。
Windows Vista 将错误处理从崩溃进程的上下文移至新服务,即 Windows 错误报告 (WER) 。此服务由服务托管进程中的 DLL (%Systemroot%System32Wersvc.dll) 实施 。在应用程序崩溃时,它仍然会执行未处理的异常处理程序,但是该处理程序会向 WER 服务发送消息,并且服务会启动 WER 错误报告进程 (%Systemroot%System32Werfault.exe) 以显示错误报告对话框 。如果堆栈损坏并且未处理的异常处理程序崩溃,处理程序会再次执行并且再次崩溃,最终消耗所有线程的堆栈(使用内存区域),此时内核会介入,并向服务发送崩溃通知消息 。
推荐阅读
- Hex方法设置Vista开始菜单及任务栏
- 多种方法 加快Vista文件复制速度
- 实战技巧:给Windows Vista文件复制提速
- Vista系统下的内存加速技巧
- 如何完全从硬盘安装全新纯Win Vista系统?
- 中文版Vista边栏天气故障解决办法
- Vista系统小技巧:以真正的管理员登陆
- 新手必看 安装Vista时出现的错误小结
- 新手必看 Vista系统更新常见问题
- 教你如何安全卸载掉双系统中的Vista