让我解释一下我的问题陈述:

在我的VC ++项目中,我想插入一个逻辑以编程方式将我的系统(Windows 8)发送到睡眠状态并恢复。

我这样做(复制代码段)::

int wait = 100;
LARGE_INTEGER WaitTime;
    WaitTime.QuadPart = wait;
    WaitTime.QuadPart *= -10000000;

HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
        if(0 == SetWaitableTimer(hTimer, &WaitTime, 0, NULL, NULL, TRUE))
        {
            res = false;
            return res;
        }
        if(0 == SetSuspendState(FALSE, FALSE, FALSE))
        {
            res = false;
            return res;
        }


系统即将进入睡眠状态(显示器关闭)。
在这里,我想在SetSuspendState()API调用后从睡眠状态恢复。但是我看到SetSuspendState()调用根本没有返回。控件将在此SetSuspendState()调用本身处触击,并且不会返回。

但是,如果我强制使系统重新通电,则会看到它又回来了,但是函数“ SetSuspendState()”不会在我的代码中返回。

任何人都可以帮我找出SetSuspendState()为什么不返回以及如何解决此问题的原因。提前致谢。

PS:我正在使用VS远程调试器机制来实现此睡眠状态。

最佳答案

我想象对SetSuspendState的调用导致远程调试服务器被关闭。当您调用SetSuspendState时,系统开始关闭,这涉及通知所有应用程序系统正在关闭。发生这种情况时,这些应用程序将终止。因此,您可能会失去与远程调试器的连接。

09-06 21:31