Eventos de reactivación del sistema
La siguiente información se aplica a las reactivaciones de suspensión (S3) y hibernación (S4). Para las reactivaciones desde el modo de espera moderno (S0 bajo consumo de energía), consulte transición entre estados inactivos y activos.
La aplicación puede restaurar un equipo que está en estado de suspensión al estado de trabajo mediante un temporizador programado o un evento de dispositivo. Esto se conoce como un evento de reactivación . Use un objeto de temporizador de espera para especificar el momento en el que el sistema debe reactivarse. Para crear el objeto, use la funciónCreateWaitableTimer. Para establecer el temporizador, use la funciónSetWaitableTimer. El parámetro pDueTime especifica cuándo se señalará 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 reactiva automáticamente debido a un evento (distinto del conmutador de energía 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ónsetThreadExecutionStatepara 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 reactiva automáticamente (es decir, no hay ninguna actividad de usuario presente), se cierra tan pronto como expire el temporizador de inactividad desatendido, suponiendo que no se haya llamado a ninguna aplicación SetThreadExecutionState para indicar que se requiere el sistema.
- Las reactivaciones basadas en dispositivos desencadenan el temporizador de inactividad desatendido de forma predeterminada a menos que el controlador del 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 reactiva 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 reactiva 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, retransmite 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 reactiva 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 cerró cuando el sistema entró en suspensión y prepararse para la entrada del usuario.
Temas relacionados