以下是将系统置于 sleep 状态 S3 的代码,我正在寻找一种执行 sleep 状态 S1 的方法
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;
}
最佳答案
简短回答:在 Windows 中,没有 S1 或 S3,只有“ sleep 模式”。它的实现方式取决于许多因素,并且是特定于硬件和软件的。在某种程度上,您只能通过在控制面板和 BIOS 设置中重新配置电源设置来更改它。
作为您链接到的文章,System Power States (Windows) ,提示,Windows 电源管理不公开 ACPI 电源状态,而是使用它自己的状态。在 Standby Explained (S1, S3) – Omar Shahine – MSDN Blogs 上有一个更明确的声明。 .
这些映射到 ACPI 的方式取决于主板功能、驱动程序功能和系统/BIOS 设置。
特别是, sleep 模式用于映射到 S1 或 S3(取决于 BIOS 设置),较新版本的 Windows 也可以使用“混合 sleep ”或“离开模式”。
根据 Which sleep mode should I use? S1 or S3? - Tom's Hardware根据我的个人经验,S1/S3 开关具体是 BIOS 设置中的一个选项或主板上的跳线。
从您的问题表述来看,“离开模式”可能适合您。
关于c++ - 如何使用WINAPI (C++) 执行 sleep 状态S1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45572208/