关闭 Windows 的首选方法是选择“ 开始”,然后选择关闭或关闭计算机的选项。 使用此标准方法时,操作系统将关闭所有文件,并通知正在运行的服务和应用程序,以便它们可将任何未保存的数据写入磁盘并刷新任何活动缓存。
如果计算机意外关闭,Windows 会在下次启动计算机时记录事件 ID 41。 事件文本类似于以下信息:
输出
Event ID: 41 Description: The system has rebooted without cleanly shutting down first.
此事件指示某些意外活动阻止 Windows 正确关闭。 此类关闭可能是由电源中断或停止错误引起的。 如果可行,Windows 在关闭时会记录任何错误代码。 在下一次 Windows 启动的 内核阶段 ,Windows 会检查这些代码,并在事件 ID 41 的事件数据中包含任何现有代码。
输出
EventData
BugcheckCode 159
BugcheckParameter1 0x3
BugcheckParameter2 0xfffffa80029c5060
BugcheckParameter3 0xfffff8000403d518
BugcheckParameter4 0xfffffa800208c010
SleepInProgress false
PowerButtonTimestamp 0Converts to 0x9f (0x3, 0xfffffa80029c5060, 0xfffff8000403d518, 0xfffffa800208c010)
排查意外关闭或重启问题时如何使用事件 ID 41
事件 ID 41 本身可能不包含足够的信息来显式定义所发生的情况。 通常,还必须考虑意外关闭时发生的情况 (例如电源故障) 。 使用本文中的信息来确定适合你的情况的故障排除方法:
- 方案 1:计算机由于停止错误而重启,事件 ID 41 包含停止错误 (bug 检查) 代码
- 方案 2:计算机重启,因为你按下并按住了电源按钮
- 方案 3:计算机无响应或随机重启,未记录事件 ID 41 或事件 ID 41 条目列出了错误代码值 0
方案 1:计算机由于停止错误而重启,事件 ID 41 包含停止错误 (bug 检查) 代码
当计算机因停止错误而关闭或重启时,Windows 在事件 ID 41 中包括停止错误数据作为更多事件数据的一部分。 此信息包括停止错误代码 (也称为 bug 检查代码) ,如以下示例所示:
输出
EventData
BugcheckCode 159
BugcheckParameter1 0x3
BugcheckParameter2 0xfffffa80029c5060
BugcheckParameter3 0xfffff8000403d518
BugcheckParameter4 0xfffffa800208c010
备注
事件 ID 41 包含 bug 检查十进制格式的代码。 大多数描述 bug 检查 代码的文档将代码称为十六进制值,而不是十进制值。 若要将十进制转换为十六进制,请执行以下步骤:
- 选择“开始”,在“搜索”框中键入“calc”,然后选择“计算器”。
- 在 “计算器” 窗口中,选择“ 查看>程序员”。
- 在计算器的左侧,验证是否突出显示了 “Dec ”。
- 使用键盘输入 bug 检查代码的十进制值。
- 在计算器的左侧,选择“ 十六进制”。
计算器显示的值现在是十六进制代码。
将 bug 检查代码转换为十六进制格式时,请验证“0x”指定后跟八位数字 (即,“x”后面的代码部分包含足够的零来填充) 八位数字。 例如,0x9F通常记录为0x0000009f,0xA记录为0x0000000A。 对于本文中的示例事件数据,“159”将转换为0x0000009f。
确定十六进制值后,使用以下引用继续故障排除:
- 停止错误或蓝屏错误问题的高级故障排除。
- Bug 检查代码参考。 此页面列出了指向不同 bug 检查代码的文档链接。
- 如何调试内核模式蓝屏崩溃 (初学者) 。
方案 2:计算机重启,因为你按下并按住了电源按钮
由于重新启动计算机的此方法会干扰 Windows 关闭操作,因此建议仅在没有其他选择的情况下才使用此方法。 例如,如果计算机未响应,则可能需要使用此方法。 通过按住电源按钮重启计算机时,计算机会记录事件 ID 41,其中包含 PowerButtonTimestamp 条目的非零值。
XML
<EventData>
<Data Name="BugcheckCode">0</Data>
<Data Name="BugcheckParameter1">0x0</Data>
<Data Name="BugcheckParameter2">0x0</Data>
<Data Name="BugcheckParameter3">0x0</Data>
<Data Name="BugcheckParameter4">0x0</Data>
<Data Name="SleepInProgress">0</Data>
<Data Name="PowerButtonTimestamp">131728546170882432</Data>
<Data Name="BootAppStatus">0</Data>
</EventData>
有关对无响应计算机进行故障排除时的帮助,请参阅 Windows 帮助。 请考虑使用“挂起”、“响应”或“空白屏幕”等关键字来搜索帮助。
方案 3:计算机无响应或随机重启,未记录事件 ID 41 或事件 ID 41 条目或列出错误代码值 0
此方案包括以下情况:
- 关闭无响应计算机的电源,然后重新启动计算机。
若要验证计算机是否无响应,请按键盘上的 Caps Lock 键。 如果按 Caps Lock 键时键盘上的 Caps 锁定 指示灯未更改,则计算机可能无响应 (也称为硬挂起) 。 - 计算机重启,但不会生成事件 ID 41。
- 计算机重启并生成事件 ID 41,但 BugcheckCode 和 PowerButtonTimestamp 值为零。
在这种情况下,某些内容会阻止 Windows 生成错误代码或将错误代码写入磁盘。 某些内容可能会阻止对磁盘 (的写入访问,例如计算机) 无响应,或者计算机可能关闭太快而无法写入错误代码,甚至检测到错误。
事件 ID 41 中的信息提供了一些指示,指示从何处开始检查问题:
-
不会记录事件 ID 41 或 bug 检查代码为零。 此行为可能表示电源问题。 如果计算机的电源中断,计算机可能会关闭,而不会生成停止错误。 如果它确实生成了停止错误,则可能不会完成将错误代码写入磁盘。 计算机下次启动时,它可能不会记录事件 ID 41。 或者,如果存在,则检查代码的 bug 为零。 原因可能是以下情况:
- 对于便携式计算机,电池被移除或耗尽。
- 对于台式计算机,计算机已拔出电源或发生停电。
- 电源供电不足或出现故障。
-
PowerButtonTimestamp 值为零。 如果断开了未响应输入的计算机的电源,则可能会出现此行为。 原因可能是以下情况:
- Windows 进程阻止了对磁盘的写入访问,并且你通过按住电源按钮至少四秒钟关闭了计算机。
- 已断开对无响应计算机的电源。
-
无法写入转储文件,并且所有值都为零。 例如:
XML
<EventData> <Data Name="BugcheckCode">0</Data> <Data Name="BugcheckParameter1">0x0</Data> <Data Name="BugcheckParameter2">0x0</Data> <Data Name="BugcheckParameter3">0x0</Data> <Data Name="BugcheckParameter4">0x0</Data> <Data Name="SleepInProgress">0</Data> <Data Name="PowerButtonTimestamp">0</Data> <Data Name="BootAppStatus">0</Data> </EventData>
但是,volmgr 记录的事件 ID 为 46: 故障转储初始化失败!。 如果计算机在没有配置的转储文件的情况下启动,则可能会发生此事件。 默认转储文件是页面文件。
因此,如果出现意外重启的情况,并且事件 ID 41 将所有值都设置为 0,检查如果事件 ID 为 46,则由 volmgr 提供。 如果是,检查页面文件配置。 由于 bug 检查,仍可能会发生意外的重新启动,但系统无法在事件 ID 41 中编写 bug 检查类型,也无法生成内存转储。 启动计算机时,请参阅事件 ID 46
通常,此方案中描述的症状表明存在硬件问题。 若要帮助找出问题,请执行以下步骤:
- 禁用超锁。 如果计算机已启用超锁,请禁用它。 验证当系统以正确的速度运行时是否出现此问题。
- 检查内存。 使用内存检查器确定内存运行状况和配置。 验证所有内存芯片是否以相同的速度运行,以及是否在系统中正确配置了每个芯片。
- 检查电源。 验证电源是否有足够的瓦数来适当处理已安装的设备。 如果添加了内存、安装了较新的处理器、安装了更多驱动器或添加了外部设备,则此类设备可能需要比当前电源持续提供的能量更多。 如果计算机记录的事件 ID 为 41,因为计算机的电源中断,请考虑 (UPS) 获取不间断电源,例如电池备用电源。
- 检查过热。 检查硬件的内部温度,并检查任何过热的组件。
- 如果计算机是物理计算机,则它可能已被自动服务器恢复 (ASR 重新启动,) 检测到计算机没有响应的软件。
- 如果系统在 Hyper-V 虚拟机 (VM) 中运行,并且不是群集环境的一部分,则系统可能已被 Hyper-V 检测信号功能重新启动。 如果启用此功能,并且主机未从 VM (检测到检测信号,可能是因为它没有响应) ,Hyper-V 将重启 VM。
- 如果问题发生在 Hyper-V 群集环境中,则问题可能与 “为虚拟机启用检测信号监视 ”选项有关。 当尝试从群集环境中运行的虚拟机获取完整内存转储文件时,请参阅损坏的内存转储文件。
- 如果 VMWare VM 出现问题,则可能与 VMWare 中的检测信号功能相关,或者 VM 属于某些第三方群集。
- 检查在关闭时间之前 (从应用程序和系统日志中的事件 ID 6008) 获取的任何可疑事件。
如果执行这些检查但仍无法隔离问题,请将系统设置为其默认配置,并验证问题是否仍然存在。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。