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
恢复 ping 间隔(以毫秒为单位)。 默认情况下,间隔为 5 秒 (RECOVERY_DEFAULT_PING_INTERVAL) 。 最大间隔为 5 分钟。 如果指定零,则使用默认间隔。
必须在指定的时间间隔内调用 ApplicationRecoveryInProgress 函数,以向 ARR 指示你仍在主动恢复;否则,WER 将终止恢复。 通常,在循环中执行恢复,每次迭代的持续时间不超过 ping 间隔。 每次迭代执行一个恢复工作块,然后调用 ApplicationRecoveryInProgress。 由于还使用 ApplicationRecoveryInProgress 来确定用户是否要取消恢复,因此应考虑较小的间隔,这样就不会不必要地执行大量工作。
[in] dwFlags
保留供将来使用。 设置为零。
返回值
此函数返回 成功时S_OK 或以下错误代码之一。
返回代码 | 说明 |
---|---|
|
内部错误;注册失败。 |
|
ping 间隔不能超过五分钟。 |
注解
如果应用程序遇到未经处理的异常或变得无响应,Windows 错误报告 (WER) 调用指定的恢复回调。 应使用回调来保存数据和状态信息。 如果还调用 RegisterApplicationRestart 函数来请求 WER 重启应用程序,则可以使用该信息。
如果安装程序想要更新应用程序的组件,WER 不会调用恢复回调。 若要在更新案例中保存数据和状态信息,应处理 WM_QUERYENDSESSION 并 WM_ENDSESSION 消息。 有关详细信息,请参阅每条消息。 响应这些消息的超时为 5 秒。 大部分可用恢复时间都位于有 30 秒 的WM_CLOSE 消息中。
可更新的控制台应用程序使用CTRL_C_EVENT通知启动恢复 (有关详细信息,请参阅 HandlerRoutine 回调函数) 。 处理程序完成的超时为 30 秒。
应用程序应考虑定期保存数据和状态信息,以缩短恢复所需的时间。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |