Windows 10 上的 Oracle VirtualBox 干扰系统睡眠

Windows 10 上的 Oracle VirtualBox 干扰系统睡眠

一天晚上,我在 Windows 10 笔记本电脑上打开了 Oracle VirtualBox 5.2.16,但没有启动任何虚拟机。然后我按下睡眠按钮,屏幕变黑,我也睡着了。

半夜,当我醒来时,看到笔记本电脑开着;我以为我没有按睡眠按钮,所以我再次按下它并继续睡觉。

清晨,当我醒来时,笔记本电脑仍处于开机状态,我再次按下睡眠按钮,几分钟后,笔记本电脑再次开机。

现在,我登录来检查事件日志。
我看到每隔 3-4 分钟就会循环发生如下事件:

The system has returned from a low power state. Wake Source: Timer - VBoxSVC.exe  
The system is entering sleep. Sleep Reason: System Idle  
The system has resumed from sleep.  
The bootmgr spent 0 ms waiting for user input.  
The boot type was 0x2.  
The system has returned from a low power state. Wake Source: Timer - VBoxSVC.exe  

看来,当我按下睡眠按钮时,笔记本电脑确实进入了睡眠状态,但 VirtualBox 不断将其恢复,而 Windows 10 也不断将其重新置于睡眠状态。

为什么会发生这种情况?
如果不是错误,VirtualBox 必须每隔几分钟就要运行一些代码,或者总的来说,VirtualBOx 有一些好处。

如何禁用它?
目前的解决方法是在按下睡眠按钮之前关闭 VirtualBox。

答案1

可能的原因和解决办法在这里:

https://forums.virtualbox.org/viewtopic.php?f=6&t=92523&p=445503#p445503

SetWaitableTimer 的调用带有最后一个参数 true。最后一个参数是是否恢复系统。这恰恰导致了所描述的行为。

https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Main/src-server/win/HostDnsServiceWin.cpp#L192 第 192 行。

https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-setwaitabletimer

相关内容