c++ - 如何使用WINAPI (C++) 执行 sleep 状态S1

标签 c++ winapi visual-c++ sleep

以下是将系统置于 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/

相关文章:

c++ - 写入 C :\Program Files 中包含的文件夹的文件名

c++ - 在 Matlab 中调用 c++ 例程

c++ - 如何在 C/C++ 中以编程方式查找 "Saved Games"文件夹?

c++ - 如何在 Python 中实现 C++ 类,以供 C++ 调用?

winapi - Windows 7 SDK安装失败

c++ - 在 cpp 文件中定义模板函数 - 不适用于 VC6

c - Visual C++ 将 C 文件作为 C 处理

c++ - C/C++ 优化编译器因使用模板而损坏

c++ - std::array 可以在 constexpr 类中使用吗?

c++ - 混淆了堆的两种不同实现