Compartir a través de


Función RmShutdown (restartmanager.h)

Inicia el apagado de las aplicaciones. Solo se puede llamar a esta función desde el instalador que inició la sesión del Administrador de reinicio mediante la función RmStartSession .

Sintaxis

DWORD RmShutdown(
  [in]           DWORD                    dwSessionHandle,
  [in]           ULONG                    lActionFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

Parámetros

[in] dwSessionHandle

Identificador de una sesión existente del Administrador de reinicio.

[in] lActionFlags

Una o varias opciones de RM_SHUTDOWN_TYPE que configuran el apagado de los componentes. Un operador OR puede combinar los siguientes valores para especificar que las aplicaciones y los servicios que no responden deben verse obligados a apagarse si, y solo si todas las aplicaciones se han registrado para reiniciarse.

Valor Significado
RmForceShutdown
0x1
Forzar que las aplicaciones y los servicios no respondan se apaguen después del período de tiempo de espera. Una aplicación que no responde a una solicitud de apagado se ve obligada a apagarse en un plazo de 30 segundos. Un servicio que no responde a una solicitud de apagado se ve obligado a apagarse después de 20 segundos.
RmShutdownOnlyRegistered
0x10
Apague las aplicaciones si y solo si todas las aplicaciones se han registrado para reiniciarse mediante la función RegisterApplicationRestart . Si no se pueden reiniciar procesos o servicios, no se cierra ningún proceso o servicio.

[in, optional] fnStatus

Puntero a una función RM_WRITE_STATUS_CALLBACK que se usa para comunicar el estado detallado mientras se ejecuta esta función. Si es NULL, no se proporciona ningún estado.

Valor devuelto

Este es el error más reciente recibido. La función puede devolver uno de los códigos de error del sistema definidos en Winerror.h.

Valor Significado
ERROR_SUCCESS
0
Todas las operaciones de apagado, reinicio y devolución de llamada se completaron correctamente.
ERROR_FAIL_NOACTION_REBOOT
350
No se realizaron acciones de apagado. Uno o varios procesos o servicios requieren un reinicio del sistema para apagarse. Este código de error se devuelve cuando el Administrador de reinicio detecta que se requiere un reinicio del sistema antes de apagar cualquier aplicación.
ERROR_FAIL_SHUTDOWN
351
Algunas aplicaciones no se pudieron apagar. Las appStatus de las estructuras de RM_PROCESS_INFO devueltas por la función RmGetList contienen información de estado actualizada.
ERROR_CANCELLED
1223
La función RmShutdown devuelve este valor de error cuando la solicitud para cancelar una operación se realiza correctamente.
ERROR_SEM_TIMEOUT
121
Una función Restart Manager no pudo obtener una exclusión mutua de escritura del Registro en el tiempo asignado. Se recomienda reiniciar el sistema porque es probable que se produzca un error en el uso posterior del Administrador de reinicios.
ERROR_BAD_ARGUMENTS
160
Uno o más argumentos son incorrectos. La función Restart Manager devuelve este valor de error si se pasa un puntero NULL o 0 en un parámetro que requiere un valor distinto de NULL y distinto de cero.
ERROR_WRITE_FAULT
29
Una operación no pudo leer o escribir en el Registro.
ERROR_OUTOFMEMORY
14
No se pudo completar una operación del Administrador de reinicio porque no hay suficiente memoria disponible.
ERROR_INVALID_HANDLE
6
No existe ninguna sesión del Administrador de reinicio para el identificador proporcionado.

Comentarios

La función RmShutdown llama a RmGetList y actualiza la lista de procesos que actualmente usan recursos registrados antes de intentar apagar los procesos. A continuación, la función RmShutdown intenta apagar los procesos mediante recursos registrados en la lista más reciente. La función RmShutdown actualiza el miembro AppStatus de las estructuras de RM_PROCESS_INFO que devuelve la función RmGetList con información detallada de estado.

El Administrador de reinicio respeta los privilegios que separan diferentes sesiones de usuario o terminal. Un instalador que se ejecuta como servicio con privilegios LocalSystem no puede apagar ni reiniciar ninguna aplicación en otra sesión de usuario o terminal. Los instaladores deben implementar métodos personalizados para apagar y reiniciar aplicaciones que se ejecutan en otras sesiones. Un método sería iniciar un nuevo proceso de instalador en la otra sesión para realizar operaciones de apagado y reinicio.

Los instaladores siempre deben reiniciar la aplicación y los servicios mediante la función RmRestart incluso cuando la función RmShutdown devuelve un error que indica que no todas las aplicaciones y servicios podrían apagarse.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado restartmanager.h
Library Rstrtmgr.lib
Archivo DLL Rstrtmgr.dll

Consulte también

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart