c++ - 休眠失败时的 Windows 通知

标签 c++ windows winapi hibernation

我正在使用 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/

相关文章:

c++ - 我应该主要在容器上使用 shared_ptr 还是 weak_ptr?

windows - Perl 未在 Windows 10 中运行

node.js - 我应该更改环境变量以在 Windows 中的 Cygwin 下使用 npm 脚本吗?

c# - 从 Windows 8 应用程序在 Windows 资源管理器中打开文件?

C++ 守护进程静默模式

c++ - 检查我的逻辑? (平均GPA计算程序)

c++ - 如何在netbeans中创建项目依赖(c/c++插件)

.net - IntPtr、SafeHandle 和 HandleRef - 解释

c - 使用 GENERIC_ALL 访问权限在 ProjectedFS 中打开文件(投影文件系统)

unit-testing - GDI中控制图的单元测试