Eventos de reactivación del sistema
La siguiente información se aplica a las reactivaciones de suspensión (S3) e hibernación (S4). En el caso de las reactivaciones del modo de espera moderno (S0 de bajo consumo inactivo), consulte transición entre los estados inactivos y activos.
La aplicación puede restaurar un equipo que se encuentra en estado de suspensión al estado de trabajo mediante un temporizador programado o un evento de dispositivo. Esto se conoce como evento de reactivación. Utilice un objeto de temporizador de espera para especificar el momento en el que se debe reactivar el sistema. Para crear el objeto, use la función CreateWaitableTimer . Para establecer el temporizador, use la función SetWaitableTimer . El parámetro pDueTime especifica cuándo se señalizará el temporizador. Para especificar que el sistema debe reactivarse cuando se señale el temporizador, establezca el parámetro fResume en TRUE.
Cuando el sistema se activa automáticamente debido a un evento (distinto del conmutador de alimentación o la actividad del usuario), el sistema establece automáticamente un temporizador de inactividad desatendido en al menos 2 minutos. Este temporizador proporciona a las aplicaciones tiempo suficiente para llamar a la función SetThreadExecutionState para indicar que están ocupados. Esta vez permite al sistema volver al estado de suspensión rápidamente después de que el equipo ya no sea necesario. Los criterios siguientes determinan si el sistema vuelve al estado de suspensión:
- Si el sistema se activa automáticamente (es decir, no hay ninguna actividad de usuario presente), se apaga tan pronto como expire el temporizador de inactividad desatendido, suponiendo que ninguna aplicación haya llamado a SetThreadExecutionState para indicar que el sistema es necesario.
- Las reactivaciones basadas en dispositivos desencadenan el temporizador de inactividad desatendido de forma predeterminada a menos que el controlador de dispositivo indique la presencia del usuario. Si el controlador indica la presencia del usuario, se usa el temporizador de inactividad del sistema.
- Si el sistema se activa automáticamente, pero el usuario proporciona una nueva entrada mientras se controla el evento, el sistema no vuelve automáticamente a suspensión en función del temporizador de inactividad desatendido. En su lugar, el sistema vuelve a dormir en función del temporizador de inactividad del sistema.
- Si el sistema se activa debido a la actividad del usuario, el sistema no vuelve automáticamente a dormir en función del temporizador de inactividad desatendido. En su lugar, el sistema vuelve a dormir en función del temporizador de inactividad del sistema.
Cuando el sistema se activa automáticamente, difunde el evento PBT_APMRESUMEAUTOMATIC a todas las aplicaciones. Dado que el usuario no está presente, la mayoría de las aplicaciones no deben hacer nada. Las aplicaciones de control de eventos, como los servidores de fax, deben controlar sus eventos. Para determinar si el sistema está en este estado, llame a la función IsSystemResumeAutomatic . Cuando el sistema se activa automáticamente, la pantalla no se activa automáticamente.
Si el sistema se activa debido a la actividad del usuario, el sistema difundirá primero el evento PBT_APMRESUMEAUTOMATIC seguido de un evento de PBT_APMRESUMESUSPEND . Además, el sistema activará la pantalla. La aplicación debe volver a abrir los archivos que se cerraron cuando el sistema entró en suspensión y prepararse para la entrada del usuario.
Temas relacionados