Share via


Función RegisterApplicationRecoveryCallback (winbase.h)

Registra la instancia activa de una aplicación para su recuperación.

Sintaxis

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

Parámetros

[in] pRecoveyCallback

Puntero a la función de devolución de llamada de recuperación. Para obtener más información, consulte ApplicationRecoveryCallback.

[in, optional] pvParameter

Puntero a una variable que se va a pasar a la función de devolución de llamada. Puede ser NULL.

[in] dwPingInterval

Intervalo de ping de recuperación, en milisegundos. De forma predeterminada, el intervalo es de 5 segundos (RECOVERY_DEFAULT_PING_INTERVAL). El intervalo máximo es de 5 minutos. Si especifica cero, se usa el intervalo predeterminado.

Debe llamar a la función ApplicationRecoveryInProgress dentro del intervalo especificado para indicar a ARR que todavía está recuperando activamente; de lo contrario, WER finaliza la recuperación. Normalmente, se realiza la recuperación en un bucle con cada iteración que dure más que el intervalo de ping. Cada iteración realiza un bloque de trabajo de recuperación seguido de una llamada a ApplicationRecoveryInProgress. Puesto que también usa ApplicationRecoveryInProgress para determinar si el usuario quiere cancelar la recuperación, debe considerar un intervalo más pequeño, por lo que no realiza mucho trabajo innecesariamente.

[in] dwFlags

Reservado para uso futuro. Establecer en cero.

Valor devuelto

Esta función devuelve S_OK si se ejecuta correctamente o uno de los siguientes códigos de error.

Código devuelto Descripción
E_FAIL
Error interno; error en el registro.
E_INVALIDARG
El intervalo de ping no puede ser superior a cinco minutos.

Comentarios

Si la aplicación encuentra una excepción no controlada o deja de responder, Informe de errores de Windows (WER) llama a la devolución de llamada de recuperación especificada. Debe usar la devolución de llamada para guardar los datos y la información de estado. Puede usar la información si también llama a la función RegisterApplicationRestart para solicitar que WER reinicie la aplicación.

WER no llamará a la devolución de llamada de recuperación si un instalador quiere actualizar un componente de la aplicación. Para guardar los datos y la información de estado en el caso de actualización, debe controlar los mensajes WM_QUERYENDSESSION y WM_ENDSESSION . Para obtener más información, consulte cada mensaje. El tiempo de espera para responder a estos mensajes es de cinco segundos. La mayoría del tiempo de recuperación disponible se encuentra en el mensaje WM_CLOSE para el que tiene 30 segundos.

Una aplicación de consola que se puede actualizar usa la notificación CTRL_C_EVENT para iniciar la recuperación (para obtener más información, consulte la función de devolución de llamada HandlerRoutine ). El tiempo de espera del controlador que se va a completar es de 30 segundos.

Las aplicaciones deben considerar la posibilidad de guardar datos e información de estado en una base periódica para acortar la cantidad de tiempo necesario para la recuperación.

Requisitos

   
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 winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

ApplicationRecoveryCallback

ApplicationRecoveryInProgress

RegisterApplicationRestart

UnregisterApplicationRecoveryCallback