Compartir a través de


Directrices para aplicaciones

Las aplicaciones que se ejecutan en Windows Vista y Windows Server 2008 deben cumplir estas directrices para asegurarse de que el Administrador de reinicio puede apagar y reiniciar las aplicaciones si es necesario para instalar actualizaciones. Los servicios pueden usar las directrices que se describen en Directrices para servicios.

  • El Administrador de reinicio consulta las aplicaciones de GUI para el apagado mediante el envío de una notificación de WM_QUERYENDSESSION que tenga el parámetro lParam establecido en ENDSESSION_CLOSEAPP (0x1). Las aplicaciones no deben apagarse cuando reciben un mensaje de WM_QUERYENDSESSION porque es posible que otra aplicación no esté lista para apagarse. Las aplicaciones de GUI deben escuchar el mensaje de WM_QUERYENDSESSION y devolver un valor true si la aplicación está preparada para apagarse y reiniciarse. Si ninguna aplicación devuelve un valor false, el Administrador de reinicio envía un mensaje de WM_ENDSESSION con el parámetro lParam establecido en ENDSESSION_CLOSEAPP (0x1) y el parámetro wparam establecido en TRUE. Las aplicaciones solo deben apagarse cuando reciben el mensaje de WM_ENDSESSION . El Administrador de reinicio también envía un mensaje de WM_CLOSE para las aplicaciones de GUI que no se apagan al recibir WM_ENDSESSION. Si alguna aplicación de GUI responde a un mensaje de WM_QUERYENDSESSION devolviendo un valor false, se cancela el apagado. Sin embargo, si se fuerza el apagado, la aplicación finaliza independientemente.

  • Cuando una aplicación de GUI recibe un mensaje de WM_ENDSESSION , la aplicación debe prepararse para apagarse dentro del período de tiempo de espera especificado. Como mínimo, las aplicaciones deben prepararse guardando cualquier información de estado y datos de usuario que se necesite después de un reinicio. Se recomienda que las aplicaciones guarden periódicamente los datos y el estado del usuario.

  • El Administrador de reinicio envía una notificación CTRL_C_EVENT a las aplicaciones de consola que deben apagarse y reiniciarse. Cuando una aplicación de consola recibe una notificación de CTRL_C_EVENT , la aplicación debe tomar medidas necesarias para prepararse para un apagado dentro del período de tiempo de espera especificado. Como mínimo, las aplicaciones de consola deben definir una función HandlerRoutine para controlar la notificación de CTRL_C_EVENT y deben guardar los datos de usuario y la información de estado que se va a necesitar después de un reinicio. Se recomienda que las aplicaciones guarden periódicamente los datos y el estado del usuario.

  • Si alguna aplicación no se apaga en respuesta a los mensajes de apagado, los instaladores pueden usar la opción RmForceShutdown de la función RmShutdown para forzar el apagado de las aplicaciones. Cuando el instalador especifica un apagado forzado, Restart Manager intenta apagar las aplicaciones de forma limpia mediante el envío de mensajes de apagado, pero los forzará si se produce un error. Las aplicaciones de GUI y las aplicaciones de consola pueden verse obligadas a apagarse para habilitar la instalación de una actualización de seguridad crítica. Dado que esto puede provocar la pérdida de datos, las aplicaciones deben controlar los mensajes de apagado y apagarse limpiamente cuando sea necesario.

  • Las aplicaciones deben registrarse para un reinicio mediante la función RegisterApplicationRestart . El Administrador de reinicio solo puede reiniciar las aplicaciones que se han registrado para el reinicio. Esta es la única manera en que el Administrador de reinicio puede determinar el comando de línea de comandos que se va a usar al reiniciar la aplicación. Si la aplicación debe volver a abrirse con algún estado o datos guardados, esa información debe incluirse en el comando de línea de comandos que está registrado para la aplicación.

    Nota

    Si la aplicación reiniciada debe ejecutarse en el mismo directorio en el que se ejecutó antes de apagarse, la aplicación debe guardar la información del directorio y, a continuación, cambiar al directorio después de reiniciarse.

     

    Nota

    La función RmRestart no reinicia las aplicaciones que no se ejecutan como el usuario que ha iniciado sesión actualmente. Por ejemplo, la función RmRestart no reinicia las aplicaciones iniciadas con el comando Ejecutar como que no se ejecuta como el usuario que ha iniciado sesión actualmente. Estas aplicaciones deben reiniciarse manualmente.

     

  • Cuando Restart Manager determina que se requiere un reinicio del sistema para instalar una actualización, no se apagan las aplicaciones y los servicios. En su lugar, deja esto al instalador para decidir cuándo programar un reinicio del sistema e instalar la actualización. Los instaladores pueden reducir la interrupción de los usuarios causados por actualizaciones que requieren un reinicio del sistema mediante la función ExitWindowsEx con la marca EWX_RESTARTAPPS o la función InitiateShutdown con la marca SHUTDOWN_RESTARTAPPS . El uso de estas marcas garantiza que las aplicaciones registradas para reiniciar se reinician después de un reinicio del sistema, lo que minimiza el impacto en el usuario.