系统唤醒事件
以下信息适用于从 睡眠(S3)和休眠(S4)唤醒。 有关新式待机(S0 低功率空闲)的唤醒,请参阅 空闲状态与活动状态之间的切换。
应用程序可以使用计划的计时器或设备事件将处于睡眠状态的计算机还原到工作状态。 这称为 唤醒事件。 使用 可等待的计时器对象 指定系统应唤醒的时间。 若要创建对象,请使用 CreateWaitableTimer 函数。 若要设置计时器,请使用 setWaitableTimer函数。 pDueTime 参数指定何时发出计时器信号。 若要指定系统在发出计时器信号时应唤醒,请将 fResume 参数设置为 TRUE。
当系统因事件(电源开关或用户活动以外的)自动唤醒时,系统会自动将无人参与的空闲计时器设置为至少 2 分钟。 此计时器为应用程序提供足够的时间来调用 SetThreadExecutionState 函数,以指示它们正忙。 这一次使系统能够在不再需要计算机后快速返回到睡眠状态。 以下条件确定系统是否返回睡眠状态:
- 如果系统自动唤醒(即不存在用户活动),则在无人参与的空闲计时器过期后立即关闭,前提是没有应用程序调用 SetThreadExecutionState 以指示系统是必需的。
- 除非设备驱动程序指示用户状态,否则基于设备的唤醒默认会触发无人参与的空闲计时器。 如果驱动程序指示用户状态,则使用系统空闲计时器。
- 如果系统自动唤醒,但用户在处理事件时提供新输入,则系统不会根据无人参与的空闲计时器自动返回睡眠状态。 相反,系统会根据系统空闲计时器返回到睡眠状态。
- 如果系统由于用户活动而唤醒,则系统不会根据无人参与的空闲计时器自动返回睡眠状态。 而是根据系统空闲计时器返回睡眠状态。
当系统自动唤醒时,它将 PBT_APMRESUMEAUTOMATIC 事件广播到所有应用程序。 由于用户不存在,因此大多数应用程序都不应执行任何作。 事件处理应用程序(如传真服务器)应处理其事件。 若要确定系统是否处于此状态,请调用 IsSystemResumeAutomatic 函数。 系统自动唤醒时,不会自动打开显示器。
如果系统由于用户活动而唤醒,系统将首先广播 PBT_APMRESUMEAUTOMATIC 事件,然后广播 PBT_APMRESUMESUSPEND 事件。 此外,系统将打开显示器。 应用程序应重新打开系统进入睡眠状态并准备用户输入时关闭的文件。
相关主题