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 訊息。 如需詳細資訊,請參閱每個訊息。 回應這些訊息的逾時為五秒。 大部分可用的復原時間都位於您有 30 秒 的WM_CLOSE 訊息中。
可更新的主控台應用程式會使用CTRL_C_EVENT通知來起始復原 (以取得詳細資訊,請參閱 HandlerRoutine 回呼函式) 。 處理常式完成的逾時為 30 秒。
應用程式應考慮在定期基底上儲存資料和狀態資訊,以縮短復原所需的時間量。
規格需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |