最近,Windows 在进入睡眠状态时开始挂起,然后自动关闭。奇怪的是,这种情况并不总是发生。我刚启动时它可以正常睡眠,没有问题,但过了一段时间它就无法睡眠了。
显示器关闭,这似乎表明它通过了图形驱动程序,但随后有某种东西阻止它关闭。我连接的唯一外部连接设备是 USB、鼠标、耳机和 Logitech 游戏手柄。
这个问题似乎是在我对组件进行轻微返工(移动电源、更改风扇配置)后开始的,但如果是硬件问题(例如电缆松动或连接不良),它应该始终存在,所以即使我刚开机也无法入睡。
有没有什么方法可以记录 Windows 在睡眠时所做的事情?
编辑:
我对事件查看器进行了一些调查。当我让电脑进入睡眠状态时,Windows 开始干扰系统时间大约 3 次,然后似乎崩溃了。
第一个事件是这样的:
The system time has changed to 2023-05-11T16:11:27.500000000Z from 2023-05-11T16:11:25.934263600Z.
Change Reason: System time synchronized with the hardware clock.
Process: '' (PID 4).
下一个事件是这样的:
The time provider NtpClient is currently receiving valid time data from time.windows.com,0x9 (ntp.m|0x9|0.0.0.0:123->168.61.215.74:123).
下一个活动是:
The time zone information was refreshed with exit reason 0. Current time zone bias is 240.
时间再次改变,但只是这一次,有一个过程:
The system time has changed to 2023-05-11T16:11:39.467687100Z from 2023-05-11T16:11:41.258892800Z.
Change Reason: An application or system component changed the time.
Process: '\Device\HarddiskVolume4\Windows\System32\svchost.exe' (PID 20712).
时间已更改,与 Windows 服务器同步,崩溃前时区又刷新了 2 次。
跑步磁盘分区其次是列表卷生成以下卷列表:
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 D Nexus NTFS Partition 1863 GB Healthy Pagefile
Volume 1 C NTFS Partition 464 GB Healthy Boot
Volume 2 Recovery NTFS Partition 529 MB Healthy Hidden
Volume 3 FAT32 Partition 99 MB Healthy System
Volume 4 NTFS Partition 584 MB Healthy Hidden
D:/ 是通过 SATA 端口连接的 HDD,而 C:/ 是我的主启动驱动器。因此,根据事件查看器,一些隐藏的“卷 4”(从磁盘管理程序的角度来看,它是另一个恢复分区):
此次崩溃后,打开 PC 后会生成一个转储文件。WhoCrashed 给出了以下分析:
我不确定时间变化是否与我的问题有关,但我尝试在 PC 启动后再次将其置于睡眠状态,它不仅正常睡眠,而且唯一发生的时间变化是在我打开它之后(这是有道理的)。
编辑2:
幸运的是,在我让 Windows 进入睡眠状态后,它出现了蓝屏。这意味着我有一个可以分析的转储文件。
使用 WinDBG 分析转储文件后,我得到了以下信息(运行 !analyze -v 后):
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: ffffd50f008a22f0, Physical Device Object of the stack
Arg3: fffff8076c6f4850, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffd50f076f7de0, The blocked IRP
Debugging Details:
------------------
KEY_VALUES_STRING: 1
Key : Analysis.CPU.Sec
Value: 2
Key : Analysis.DebugAnalysisProvider.CPP
Value: Create: 8007007e on Desktop
Key : Analysis.DebugData
Value: CreateObject
Key : Analysis.DebugModel
Value: CreateObject
Key : Analysis.Elapsed.Sec
Value: 23
Key : Analysis.Memory.CommitPeak.Mb
Value: 82
Key : Analysis.System
Value: CreateObject
Key : Dump.Attributes.InsufficientDumpfileSize
Value: 1
DUMP_FILE_ATTRIBUTES: 0xc
Insufficient Dumpfile Size
Kernel Generated Triage Dump
BUGCHECK_CODE: 9f
BUGCHECK_P1: 3
BUGCHECK_P2: ffffd50f008a22f0
BUGCHECK_P3: fffff8076c6f4850
BUGCHECK_P4: ffffd50f076f7de0
DRVPOWERSTATE_SUBCODE: 3
IMAGE_NAME: pci.sys
MODULE_NAME: pci
FAULTING_MODULE: fffff8076b260000 pci
BLACKBOXBSD: 1 (!blackboxbsd)
BLACKBOXNTFS: 1 (!blackboxntfs)
BLACKBOXPNP: 1 (!blackboxpnp)
BLACKBOXWINLOGON: 1
CUSTOMER_CRASH_COUNT: 1
PROCESS_NAME: System
STACK_TEXT:
fffff807`6c6f4818 fffff807`665637a7 : 00000000`0000009f 00000000`00000003 ffffd50f`008a22f0 fffff807`6c6f4850 : nt!KeBugCheckEx
fffff807`6c6f4820 fffff807`665636c1 : ffffd50f`246a6d70 00000000`00000000 ffffd50f`1b4a41f0 00000000`00000000 : nt!PopIrpWatchdogBugcheck+0xdf
fffff807`6c6f4890 fffff807`6628bbd2 : ffffd50f`246a6da8 fffff807`641c9180 fffff807`641c9180 00000000`00000002 : nt!PopIrpWatchdog+0x31
fffff807`6c6f48e0 fffff807`6628ac4d : 00000000`00000000 fffff807`662d9485 00000000`00140001 00000000`000a5e26 : nt!KiProcessExpiredTimerList+0x172
fffff807`6c6f49d0 fffff807`6640059e : 00000000`00000000 fffff807`641c9180 fffff807`66d27a00 ffffd50f`2112e440 : nt!KiRetireDpcList+0x5dd
fffff807`6c6f4c60 00000000`00000000 : fffff807`6c6f5000 fffff807`6c6ef000 00000000`00000000 00000000`00000000 : nt!KiIdleLoop+0x9e
IMAGE_VERSION: 10.0.19041.2728
STACK_COMMAND: .thread ; .cxr ; kb
FAILURE_BUCKET_ID: 0x9F_3_POWER_DOWN_rt640x64_IMAGE_pci.sys
OSPLATFORM_TYPE: x64
OSNAME: Windows 10
FAILURE_ID_HASH: {2ce71122-4407-ac30-726e-512dc09f0103}
Followup: MachineOwner
根据转储输出,错误代码为 9F。我在Microsoft 的错误代码列表按照那里写的说明,我可以使用命令找到有问题的驱动程序!devstack ffffd50f008a22f0
,该命令给出以下输出:
0: kd> !devstack ffffd50f008a22f0
!DevObj !DrvObj !DevExt ObjectName
ffffd50f050c8050 \Driver\rt640x64 ffffd50f050c81a0 InfoMask field not found for _OBJECT_HEADER at ffffd50f050c8020
> ffffd50f008a22f0 \Driver\pci ffffd50f008a2440 Cannot read info offset from nt!ObpInfoMaskToOffset
!DevNode ffffd50f008a2c30 :
DeviceInst is "PCI\VEN_10EC&DEV_8168&SUBSYS_E0001458&REV_0C\01000000684CE00000"
ServiceName is "rt640x64"
解码该DeviceInst
值可得出供应商 ID 为 10EC 和设备 ID 为 8168。PCI查找告诉我有问题的设备是 Realtek PCIe 千兆以太网控制器。
所以现在的问题是为什么它阻止我的电脑进入睡眠状态。我目前将尝试以下操作:
- 禁用它。反正我也不使用该以太网端口,但我宁愿修复它,因为我确实打算在将来使用它。
- 更新 PCIe 驱动程序(也许已损坏?)
我将从控制面板中禁用它的简单选项开始,以查看它是否实际上是问题的原因,而不是症状。
编辑3:
似乎这是一种症状。我在控制面板中禁用了 Realtek PCIe 以太网适配器,但发生了同样的事情。唯一的区别是它完全拒绝崩溃。因此显示器关闭了,但所有风扇都在旋转。直到我将鼠标和键盘从后主板 IO 面板中拔出后,它才突然关闭。
WinDBG 仍然显示这是相同的错误(0x9F)和 0x3 参数,但现在问题出在我的 Nvidia GPU 上。
在我看来,这总体上是一个 PCIe 问题。PCIe以太网、后面板 USB 和 GPU 都通过 PCIe 以某种方式连接。我已将电源选项中的“PCIe 链路状态电源管理”设置设为关闭,但我将尝试将其设为“中等省电”,看看是否有效果。
如果您需要更多信息,请告诉我。