我有一个与用户模式模块一起运行的服务应用程序。该软件允许执行专门的电源操作,用户模式代码首先注销 Windows 用户,然后服务应用程序将系统置于睡眠模式。
这种情况在某些系统上运行良好,但在其他系统上睡眠操作失败。有时睡眠会成功,但是当我唤醒系统并尝试再次执行它时,睡眠 API (SetSuspendState) 挂起并且永远不会返回,而系统仍在运行。
在进行测试时,我设置了一个硬编码延迟(使用 Sleep(5000) API),这似乎可以解决大多数系统上的问题,但在其他系统上我仍然得到相同的结果。在这种情况下,我讨厌引入更长的延迟,因为它并没有真正解决问题,或者回答为什么它首先发生的问题。另外,我敢肯定那里有一个“慢”系统,即使是 10 秒也不够……
那么,有谁知道如何在 sleep API 中修复这些故障?
PS。我在最新版本的 Windows 7 上运行测试。