通过网络唤醒唤醒的计算机大约 100 秒后进入睡眠状态

通过网络唤醒唤醒的计算机大约 100 秒后进入睡眠状态

我有一台计算机(Dell Optiplex 170L,Windows XP),正在测试局域网唤醒功能。我有一个脚本,可以使用 Linuxwakeonlan程序成功唤醒它,然后执行 ping。但是,唤醒后 100 多秒,它又进入睡眠状态,中断或阻止了我想要唤醒它的操作。

答案1

我注意到 Windows7 笔记本电脑也有同样的情况。似乎如果使用 WoL 唤醒笔记本电脑,Windows 会以不同的方式处理它。如果 2 分钟内机器没有输入,Windows 会将其重新置于睡眠状态。

解决方案是在唤醒机器后立即告诉 Windows,它不应该将机器转换为低功耗状态。

设置线程执行状态是您需要调用的函数,用于阻止 Windows 将其转换为低功耗模式。根据您调用该函数时使用的标志,效果会有所不同。

你基本上必须打电话

SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED);

当 Windows 启动时调用

SetThreadExecutionState(ES_CONTINUOUS);

一旦你的工作完成了。

ES_SYSTEM_REQUIRED 向 Windows 暗示系统需要处于唤醒状态。ES_CONTINUOUS 表示机器已设置为的状态(即始终保持唤醒状态)需要保持,直到通过调用带有不同参数的相同函数进行其他更改。完成工作后,进行第二次调用。此调用仅使用 ES_CONTINUOUS。通过不指定 ES_SYSTEM_REQUIRED,您将状态重置为默认状态,即允许 Windows 管理电源状态。并且由于 ES_CONTINUOUS,它将保持此状态,直到发生其他更改。

顺便说一句,第一次调用只会阻止 Windows 管理电源。如果您有任何其他管理电源的软件,它仍会转换机器。

我知道,这个问题的答案是在最初的问题提出好几个月后才出现的,但我发布这个答案是希望它能够帮助下一个出现的人。

答案2

我找到了这个地点它有一个名为 StayAwake 的软件,可以防止这种在 WOL 后不活动而进入睡眠状态的行为。不幸的是,它会完全阻止计算机进入睡眠状态,从而覆盖电源选项。但是,我可以安排一项任务,明确告诉计算机在一天中的某个小时进入睡眠状态,而 Wake-On-Lan 仍然会将其唤醒,至少在理论上是这样。正如您在我提出的问题中看到的,我仍然对 WOL 有一些问题,但这可能是与硬件相关的。

相关内容