2013-08-08 2 views
0

Позвольте мне объяснить мою проблему о:SetSuspendState (API) никогда не возвращается в Win8

В моем проекте 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; 
     } 

Система собирается спать (монитор становится выключен).
Здесь я хочу вернуться из состояния сна после вызова API SetSuspendState(). Но я вижу, что вызов SetSuspendState() совсем не возвращается. Элемент управления будет поражен этим вызовом SetSuspendState() & не возвращается.

Однако, если я принудительно верну систему обратно к власти, я вижу, что она возвращается, но функция «SetSuspendState()» не возвращается обратно в мой код.

Может кто-нибудь, пожалуйста, помогите мне выяснить, почему SetSuspendState() не возвращается обратно & как исправить эту проблему. Заранее спасибо.

PS: Я использую VS удаленный отладчик для достижения этого состояния сна.

ответ

3

Я предполагаю, что вызов SetSuspendState приводит к выходу удаленного отладочного сервера. Когда вы вызываете SetSuspendState, система запускает выключение, и это включает в себя уведомление всех приложений, которые система спускается. Когда это произойдет, ожидается, что эти приложения прекратятся. Поэтому вы можете потерять соединение с удаленным отладчиком.

+0

Да, удаленный отладчик VS был проблемой. Но я вижу, что API SetSuspendState() не заставляет систему спать. Вместо этого он спящий. Было бы очень полезно, если бы я знал, как заставить систему спать и как я программирую свой код, чтобы он автоматически возвращался из сна через некоторый промежуток времени? – codeLover

+0

Думаю, вам нужно задать новый вопрос. Я не могу помочь вам прямо сейчас, и никто, кроме меня, не прочтет ваш комментарий. –