Compartilhar via


Função RegisterApplicationRecoveryCallback (winbase.h)

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

Sintaxe

HRESULT RegisterApplicationRecoveryCallback(
  [in]           APPLICATION_RECOVERY_CALLBACK pRecoveyCallback,
  [in, optional] PVOID                         pvParameter,
  [in]           DWORD                         dwPingInterval,
  [in]           DWORD                         dwFlags
);

Parâmetros

[in] pRecoveyCallback

Um ponteiro para a função de retorno de chamada de recuperação. Para obter mais informações, consulte ApplicationRecoveryCallback.

[in, optional] pvParameter

Um ponteiro para uma variável a ser passada para a função de retorno de chamada. Pode ser NULL.

[in] dwPingInterval

O intervalo de ping de recuperação, em milissegundos. Por padrão, o intervalo é de 5 segundos (RECOVERY_DEFAULT_PING_INTERVAL). O intervalo máximo é de 5 minutos. Se você especificar zero, o intervalo padrão será usado.

Você deve chamar a função ApplicationRecoveryInProgress dentro do intervalo especificado para indicar ao ARR que você ainda está se recuperando ativamente; caso contrário, o WER encerrará a recuperação. Normalmente, você executa a recuperação em um loop com cada iteração que dura não mais do que o intervalo de ping. Cada iteração executa um bloco de trabalho de recuperação seguido por uma chamada para ApplicationRecoveryInProgress. Como você também usa ApplicationRecoveryInProgress para determinar se o usuário deseja cancelar a recuperação, considere um intervalo menor para não executar muito trabalho desnecessariamente.

[in] dwFlags

Reservado para uso futuro. Defina como zero.

Valor retornado

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; o registro falhou.
E_INVALIDARG
O intervalo de ping não pode ter mais de cinco minutos.

Comentários

Se o aplicativo encontrar uma exceção sem tratamento ou ficar sem resposta, Relatório de Erros do Windows (WER) chamará o retorno de chamada de recuperação especificado. Você deve usar o retorno de chamada para salvar dados e informações de estado. Você pode usar as informações se também chamar a função RegisterApplicationRestart para solicitar que o WER reinicie o aplicativo.

O WER não chamará o retorno de chamada de recuperação se um instalador quiser atualizar um componente do aplicativo. Para salvar dados e informações de estado no caso de atualização, você deve lidar com as mensagens WM_QUERYENDSESSION e WM_ENDSESSION . Para obter detalhes, consulte cada mensagem. O tempo limite para responder a essas mensagens é de cinco segundos. A maior parte do tempo de recuperação disponível está na mensagem WM_CLOSE para a qual você tem 30 segundos.

Um aplicativo de console que pode ser atualizado usa a notificação CTRL_C_EVENT para iniciar a recuperação (para obter detalhes, consulte a função de retorno de chamada HandlerRoutine ). O tempo limite para o manipulador ser concluído é de 30 segundos.

Os aplicativos devem considerar salvar dados e informações de estado em bases periódicas para reduzir o tempo necessário para a recuperação.

Requisitos

   
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

ApplicationRecoveryCallback

ApplicationRecoveryInProgress

RegisterApplicationRestart

UnregisterApplicationRecoveryCallback