我正在使用 C++ 和 WinAPI 进行编码,为了使计算机休眠,我使用了以下调用:
SetSuspendState(TRUE, NULL, FALSE);
但是如果计算机安装了更大的 RAM 阵列,休眠会失败。
所以我想知道,如果休眠失败,Windows 会发送任何通知吗?如果没有,如何判断我的休眠请求是否失败?
最佳答案
看起来没有直接的方法来检测休眠 [更正:我错了。请参阅 Fowl 的回答。] 直到 Windows 8(请参阅 PowerRegisterSuspendResumeNotification )。但我想你可以空闲循环并观察系统时间。如果时间突然向前跳动,则您已成功休眠(并恢复!),如果这在一分钟左右内没有发生,则请求可能失败。我想你可以使用 GetTickCount64功能,它对系统时间的变化不敏感,但显然包括 sleep 时间的偏差。如果这不起作用,请使用 GetSystemTimeAsFileTime但也要注意 WM_TIMECHANGE消息。
您还可以检查有问题的系统,当休眠失败时 Windows 是否将任何内容写入事件日志。如果是这样,您的应用程序可以监视相关条目的事件日志。这将是一种更可靠的方法。
关于c++ - 休眠失败时的 Windows 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370305/