Функция RegisterApplicationRecoveryCallback (winbase.h)
Регистрирует активный экземпляр приложения для восстановления.
Синтаксис
HRESULT RegisterApplicationRecoveryCallback(
[in] APPLICATION_RECOVERY_CALLBACK pRecoveyCallback,
[in, optional] PVOID pvParameter,
[in] DWORD dwPingInterval,
[in] DWORD dwFlags
);
Параметры
[in] pRecoveyCallback
Указатель на функцию обратного вызова восстановления. Дополнительные сведения см. в разделе ApplicationRecoveryCallback.
[in, optional] pvParameter
Указатель на переменную, передаваемую функции обратного вызова. Может иметь значение NULL.
[in] dwPingInterval
Интервал проверки пинга восстановления в миллисекундах. По умолчанию интервал составляет 5 секунд (RECOVERY_DEFAULT_PING_INTERVAL). Максимальный интервал составляет 5 минут. Если указать ноль, используется интервал по умолчанию.
Необходимо вызвать функцию ApplicationRecoveryInProgress в течение указанного интервала, чтобы сообщить ARR, что вы по-прежнему активно восстанавливаетесь; в противном случае WER завершает восстановление. Как правило, восстановление выполняется в цикле, при этом каждая итерация не превышает интервал проверки связи. Каждая итерация выполняет блок работы по восстановлению, за которым следует вызов ApplicationRecoveryInProgress. Так как вы также используете ApplicationRecoveryInProgress для определения того, хочет ли пользователь отменить восстановление, следует учитывать меньший интервал, чтобы не выполнять много работы без необходимости.
[in] dwFlags
Зарезервировано для последующего использования. Задайте нулевое значение.
Возвращаемое значение
Эта функция возвращает S_OK при успешном выполнении или одном из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Внутренняя ошибка; сбой регистрации. |
|
Интервал проверки связи не может превышать пять минут. |
Комментарии
Если приложение обнаруживает необработанное исключение или перестает отвечать на запросы, отчеты об ошибках Windows (WER) вызывает указанный обратный вызов восстановления. Для сохранения данных и сведений о состоянии следует использовать обратный вызов. Эти сведения можно использовать, если вы также вызываете функцию RegisterApplicationRestart для запроса на перезапуск приложения.
WER не будет вызывать обратный вызов восстановления, если установщик хочет обновить компонент вашего приложения. Чтобы сохранить данные и сведения о состоянии в случае обновления, необходимо обрабатывать сообщения WM_QUERYENDSESSION и WM_ENDSESSION . Дополнительные сведения см. в каждом сообщении. Время ожидания ответа на эти сообщения составляет пять секунд. Большая часть доступного времени восстановления находится в WM_CLOSE сообщении, для которого у вас есть 30 секунд.
Консольное приложение, которое можно обновить, использует уведомление CTRL_C_EVENT для запуска восстановления (дополнительные сведения см. в разделе Функция обратного вызова HandlerRoutine ). Время ожидания для завершения обработчика составляет 30 секунд.
Приложениям следует рассмотреть возможность сохранения данных и сведений о состоянии на периодических базах, чтобы сократить время, необходимое для восстановления.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по