Función InitiateShutdownA (winreg.h)

Inicia un apagado y reinicio del equipo especificado y reinicia las aplicaciones que se han registrado para el reinicio.

Sintaxis

DWORD InitiateShutdownA(
  [in, optional] LPSTR lpMachineName,
  [in, optional] LPSTR lpMessage,
  [in]           DWORD dwGracePeriod,
  [in]           DWORD dwShutdownFlags,
  [in]           DWORD dwReason
);

Parámetros

[in, optional] lpMachineName

Nombre del equipo que se va a apagar. Si el valor de este parámetro es NULL, se apaga el equipo local.

[in, optional] lpMessage

Mensaje que se va a mostrar en el cuadro de diálogo de apagado interactivo.

[in] dwGracePeriod

Número de segundos que se deben esperar antes de apagar el equipo. Si el valor de este parámetro es cero, el equipo se apaga inmediatamente. Este valor se limita a MAX_SHUTDOWN_TIMEOUT.

Si el valor de este parámetro es mayor que cero y el parámetro dwShutdownFlags especifica la marca SHUTDOWN_GRACE_OVERRIDE, la función produce un error y devuelve el código de error ERROR_BAD_ARGUMENTS.

[in] dwShutdownFlags

Una o varias marcas de bits que especifican opciones para el apagado. Se definen los valores siguientes.

Valor Significado
SHUTDOWN_FORCE_OTHERS
0x00000001 (0x1)
Todas las sesiones se desactivan forzadamente. Si no se establece esta marca y los usuarios que no sean el usuario actual inician sesión en el equipo especificado por el parámetro lpMachineName , esta función produce un error con un valor devuelto de ERROR_SHUTDOWN_USERS_LOGGED_ON.
SHUTDOWN_FORCE_SELF
0x00000002 (0x2)
Especifica que la sesión de origen se ha desactivado con fuerza. Si no se establece esta marca, la sesión de origen se apaga de forma interactiva, por lo que no se garantiza un apagado aunque la función se devuelva correctamente.
SHUTDOWN_GRACE_OVERRIDE
0x00000020 (0x20)
Invalida el período de gracia para que el equipo se apague inmediatamente.
SHUTDOWN_HYBRID
0x00000200 (0x200)
A partir de InitiateShutdown que se ejecuta en Windows 8, debe incluir la marca de SHUTDOWN_HYBRID con una o varias de las marcas de esta tabla para especificar las opciones para el apagado.

A partir de Windows 8, InitiateShutdown siempre inicia un apagado completo del sistema si la marca de SHUTDOWN_HYBRID está ausente.

SHUTDOWN_INSTALL_UPDATES
0x00000040 (0x40)
El equipo instala las actualizaciones antes de iniciar el apagado.
SHUTDOWN_NOREBOOT
0x00000010 (0x10)
El equipo está apagado, pero no está apagado ni reiniciado.
SHUTDOWN_POWEROFF
0x00000008 (0x8)
El equipo está apagado y apagado.
SHUTDOWN_RESTART
0x00000004 (0x4)
El equipo está apagado y reiniciado.
SHUTDOWN_RESTARTAPPS
0x00000080 (0x80)
El sistema se reinicia con la función ExitWindowsEx con la marca EWX_RESTARTAPPS. Esto reinicia todas las aplicaciones que se han registrado para reiniciarse mediante la función RegisterApplicationRestart .

[in] dwReason

Motivo para iniciar el apagado. Este parámetro debe ser uno de los códigos de motivo de apagado del sistema. Si este parámetro es cero, el valor predeterminado es un apagado indefinido que se registra como "No se encuentra ningún título por este motivo". De forma predeterminada, también es un apagado no planeado. Dependiendo de cómo se configure el sistema, un apagado no planeado desencadena la creación de un archivo que contiene la información de estado del sistema, que puede retrasar el apagado. Por lo tanto, no use cero para este parámetro.

Valor devuelto

Si la función se realiza correctamente, devuelve ERROR_SUCCESS.

Si se produce un error en la función, devuelve uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El autor de la llamada no tiene el privilegio necesario (SE_SHUTDOWN_PRIVILEGE o SE_REMOTE_SHUTDOWN_PRIVILEGE) para realizar esta operación.
ERROR_BAD_NETPATH
El equipo especificado no existe o no es accesible.
ERROR_INVALID_COMPUTERNAME
El nombre de equipo especificado no es un nombre de equipo válido.
ERROR_INVALID_FUNCTION
El equipo especificado no admite una interfaz de apagado.
ERROR_INVALID_PARAMETER
Se pasó un conjunto no válido de parámetros. Esto incluye las siguientes combinaciones.
  • El parámetro lpMachineName especifica un equipo remoto y el parámetro dwShutdownFlags no especifica SHUTDOWN_FORCE_SELF.
  • El valor de dwGracePeriod es mayor que cero y el parámetro dwShutdownFlags no especifica SHUTDOWN_FORCE_SELF.
  • El valor de dwGracePeriod es mayor que cero y el parámetro dwShutdownFlags especifica SHUTDOWN_GRACE_OVERRIDE.
ERROR_SHUTDOWN_IN_PROGRESS
Ya se ha iniciado un apagado en el equipo especificado.
ERROR_SHUTDOWN_IS_SCHEDULED
Se ha programado un apagado para el equipo especificado, pero no se ha iniciado. Para que esta función se realice correctamente, se debe establecer la marca SHUTDOWN_GRACE_OVERRIDE .
ERROR_SHUTDOWN_USERS_LOGGED_ON
Uno o varios usuarios que no sean el usuario actual han iniciado sesión en el equipo especificado y la marca de SHUTDOWN_FORCE_OTHERS no se ha establecido.

Comentarios

Para apagar el equipo local, el subproceso que llama debe tener el privilegio SE_SHUTDOWN_NAME. Para apagar un equipo remoto, el subproceso que llama debe tener el privilegio SE_REMOTE_SHUTDOWN_NAME en el equipo remoto. De forma predeterminada, los usuarios pueden habilitar el privilegio SE_SHUTDOWN_NAME en el equipo en el que han iniciado sesión y los administradores pueden habilitar el privilegio SE_REMOTE_SHUTDOWN_NAME en equipos remotos. Para más información, consulte Ejecución con privilegios especiales.

Entre los motivos comunes del error se incluyen un nombre de equipo no válido o inaccesible o privilegios insuficientes. El error ERROR_SHUTDOWN_IN_PROGRESS se devuelve si un apagado ya está en curso en el equipo especificado. El error ERROR_NOT_READY se puede devolver si el cambio rápido de usuario está habilitado, pero ningún usuario ha iniciado sesión.

Un valor devuelto distinto de cero no significa que el logoff fue o se realizará correctamente. El apagado es un proceso asincrónico y puede producirse mucho después de que se haya devuelto la llamada API, o no en absoluto. Incluso si el valor de tiempo de espera es cero, las aplicaciones, los servicios o incluso el sistema pueden anular el apagado. El valor devuelto distinto de cero indica que la validación de los derechos y los parámetros se realizó correctamente y que el sistema aceptó la solicitud de apagado.

Nota

El encabezado winreg.h define InitiateShutdown como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winreg.h (incluya Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

Cerrando