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 |
---|---|
|
Erro interno; o registro falhou. |
|
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 |