Função RegisterApplicationRestart (winbase.h)

Registra a instância ativa de um aplicativo para reinicialização.

Sintaxe

HRESULT RegisterApplicationRestart(
  [in, optional] PCWSTR pwzCommandline,
  [in]           DWORD  dwFlags
);

Parâmetros

[in, optional] pwzCommandline

Um ponteiro para uma cadeia de caracteres Unicode que especifica os argumentos de linha de comando para o aplicativo quando ele é reiniciado. O tamanho máximo da linha de comando que você pode especificar é RESTART_MAX_CMD_LINE caracteres. Não inclua o nome do executável na linha de comando; essa função a adiciona para você.

Se esse parâmetro for NULL ou uma cadeia de caracteres vazia, a linha de comando registrada anteriormente será removida. Se o argumento contiver espaços, use aspas ao redor do argumento.

[in] dwFlags

Esse parâmetro pode ser 0 ou um ou mais dos valores a seguir.

Valor Significado
RESTART_NO_CRASH
1
Não reinicie o processo se ele terminar devido a uma exceção sem tratamento.
RESTART_NO_HANG
2
Não reinicie o processo se ele terminar devido ao aplicativo não estar respondendo.
RESTART_NO_PATCH
4
Não reinicie o processo se ele terminar devido à instalação de uma atualização.
RESTART_NO_REBOOT
8
Não reinicie o processo se o computador for reiniciado como resultado de uma atualização.

Retornar valor

Essa função retorna S_OK em caso de êxito ou um dos códigos de erro a seguir.

Código de retorno Descrição
E_FAIL
Erro interno.
E_INVALIDARG
A linha de comando especificada é muito longa.

Comentários

O registro inicial para reinicialização deve ocorrer antes que o aplicativo encontre uma exceção sem tratamento ou não responda. Em seguida, você pode chamar essa função de dentro do retorno de chamada de recuperação para atualizar a linha de comando.

Para um aplicativo do Windows que está sendo atualizado, a última oportunidade de chamar essa função é durante o processamento da mensagem WM_QUERYENDSESSION . Para um aplicativo de console que está sendo atualizado, o registro deve ocorrer antes que o instalador tente desligar o aplicativo (você precisa manter o registro atualizado; você não pode chamar essa função ao lidar com a notificação de CTRL_C_EVENT).

Se você se registrar para reiniciar e o aplicativo encontrar uma exceção sem tratamento ou não responder, o usuário terá a oportunidade de reiniciar o aplicativo; o aplicativo não é reiniciado automaticamente sem o consentimento do usuário. No entanto, se o aplicativo estiver sendo atualizado e exigir uma reinicialização, o aplicativo será reiniciado automaticamente.

Para evitar reinicializações cíclicas, o sistema só reiniciará o aplicativo se ele estiver em execução por um mínimo de 60 segundos.

Observe que, para que um aplicativo seja reiniciado quando a atualização exigir uma reinicialização do computador, o instalador deve chamar a função ExitWindowsEx com o sinalizador EWX_RESTARTAPPS definido ou a função InitiateShutdown com o sinalizador SHUTDOWN_RESTARTAPPS definido.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (incluir Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

UnregisterApplicationRestart