系统唤醒事件

以下信息适用于从 睡眠唤醒 (S3) 和休眠 (S4) 。 有关从新式待机 (S0 低功耗空闲) 唤醒,请参阅 空闲状态和活动状态之间的转换

应用程序可以使用计划的计时器或设备事件将处于睡眠状态的计算机还原到工作状态。 这称为 唤醒事件。 使用 可等待计时器对象 指定系统应唤醒的时间。 若要创建 对象,请使用 CreateWaitableTimer 函数。 若要设置计时器,请使用 SetWaitableTimer 函数。 pDueTime 参数指定何时向计时器发出信号。 若要指定系统应在计时器发出信号时唤醒,请将 fResume 参数设置为 TRUE

当系统由于电源开关或用户活动) 以外的事件 (自动唤醒时,系统会自动将无人参与空闲计时器设置为至少 2 分钟。 此计时器为应用程序提供足够的时间来调用 SetThreadExecutionState 函数,以指示它们正忙。 这一次使系统能够在不再需要计算机后快速返回到睡眠状态。 以下条件确定系统是否返回到睡眠状态:

  • 如果系统自动唤醒 (也就是说,) 不存在任何用户活动,则在无人参与的空闲计时器过期后立即关闭,假设没有应用程序调用 SetThreadExecutionState 来指示系统是必需的。
  • 默认情况下,基于设备的唤醒会触发无人参与空闲计时器,除非设备驱动程序指示用户状态。 如果驱动程序指示用户存在,则使用系统空闲计时器。
  • 如果系统自动唤醒,但用户在处理事件时提供了新输入,则系统不会根据无人参与的空闲计时器自动返回到睡眠状态。 相反,系统会根据系统空闲计时器返回到睡眠状态。
  • 如果系统由于用户活动而唤醒,则系统不会根据无人参与的空闲计时器自动返回到睡眠状态。 相反,系统会根据系统空闲计时器返回到睡眠状态。

系统自动唤醒时,会将 PBT_APMRESUMEAUTOMATIC 事件广播到所有应用程序。 由于用户不存在,因此大多数应用程序不应执行任何操作。 事件处理应用程序(如传真服务器)应处理其事件。 若要确定系统是否处于此状态,请调用 IsSystemResumeAutomatic 函数。 当系统自动唤醒时,显示器不会自动打开。

如果系统由于用户活动而唤醒,系统将首先广播 PBT_APMRESUMEAUTOMATIC 事件,然后广播 PBT_APMRESUMESUSPEND 事件。 此外,系统将打开显示器。 应用程序应重新打开系统进入睡眠状态时关闭的文件,并准备用户输入。

关于电源管理

系统睡眠条件