共用方式為


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

傳回碼 描述
E_FAIL
內部錯誤;註冊失敗。
E_INVALIDARG
Ping 間隔不能超過五分鐘。

備註

如果應用程式遇到未處理的例外狀況或變得沒有回應,Windows 錯誤報告 (WER) 呼叫指定的復原回呼。 您應該使用回呼來儲存資料和狀態資訊。 如果您也呼叫 RegisterApplicationRestart 函式來要求 WER 重新開機應用程式,您可以使用此資訊。

如果安裝程式想要更新應用程式的元件,WER 將不會呼叫您的復原回呼。 若要在更新案例中儲存資料和狀態資訊,您應該處理 WM_QUERYENDSESSIONWM_ENDSESSION 訊息。 如需詳細資訊,請參閱每個訊息。 回應這些訊息的逾時為五秒。 大部分可用的復原時間都位於您有 30 秒 的WM_CLOSE 訊息中。

可更新的主控台應用程式會使用CTRL_C_EVENT通知來起始復原 (以取得詳細資訊,請參閱 HandlerRoutine 回呼函式) 。 處理常式完成的逾時為 30 秒。

應用程式應考慮在定期基底上儲存資料和狀態資訊,以縮短復原所需的時間量。

規格需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

ApplicationRecoveryCallback

ApplicationRecoveryInProgress

RegisterApplicationRestart

UnregisterApplicationRecoveryCallback