2017-08-08 103 views
2

繼執行睡眠狀態S1是代碼把系統處於睡眠狀態S3,我正在尋找一種方式來進行睡眠狀態S1如何使用WINAPI(C++)

bool PerformS3() { 
    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)) 
    { 
     return false; 
    } 

    if(0 == SetSuspendState(FALSE, FALSE, FALSE)) 
    { 
     return false; 
    } 
    return true; 
} 
+0

你可以在https://msdn.microsoft.com/en-us/library/windows/desktop/aa373229(v=vs.85).aspx找到說明。 –

回答

1

簡短的回答:在Windows中,沒有S1或S3,只有「睡眠模式」。它的實現取決於許多因素,並且是硬件和軟件特定的。您只能在某種程度上通過重新配置控制面板和BIOS設置中的電源設置來更改該設置。


當你的文章鏈接,System Power States (Windows),提示,Windows電源管理不公開ACPI電源狀態,而是使用它自己的狀態。一個更明確的聲明是在Standby Explained (S1, S3) – Omar Shahine – MSDN Blogs

這些映射到ACPI的方式取決於主板功能,驅動程序功能和系統/ BIOS設置。

特別是,睡眠模式用於映射到S1或S3(取決於BIOS設置),而較新版本的Windows也可以使用「混合睡眠」或「離開模式」。

根據Which sleep mode should I use? S1 or S3? - Tom's Hardware和我的個人經驗,S1/S3開關具體是BIOS設置選項或主板上的跳線。

從你的問題公式來看,你可能會對「離開模式」很好。