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 分です。 0 を指定すると、既定の間隔が使用されます。

指定した間隔で ApplicationRecoveryInProgress 関数を呼び出して、まだアクティブに回復していることを ARR に示す必要があります。それ以外の場合、WER は復旧を終了します。 通常、ループ内で復旧を実行し、各イテレーションが ping 間隔を超えなくなります。 各イテレーションでは、復旧作業ブロックの後に ApplicationRecoveryInProgress の呼び出しが実行されます。 また、ApplicationRecoveryInProgress を使用してユーザーが回復を取り消すかどうかを判断するため、より少ない間隔を考慮する必要があるため、多くの作業を不必要に実行しないようにしてください。

[in] dwFlags

将来利用するために予約されています。 0 に設定します。

戻り値

この関数は、成功 したS_OK 、または次のいずれかのエラー コードを返します。

リターン コード 説明
E_FAIL
内部エラー。登録に失敗しました。
E_INVALIDARG
ping 間隔は 5 分を超えることはできません。

解説

アプリケーションで未処理の例外が発生した場合、または応答しなくなる場合は、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

関連項目

ApplicationRecoveryCallback

ApplicationRecoveryInProgress

RegisterApplicationRestart

UnregisterApplicationRecoveryCallback