WerRegisterRuntimeExceptionModule 関数 (werapi.h)

クラッシュのカスタム Windows エラー報告 (WER) を提供するために使用されるカスタム ランタイム例外ハンドラーを登録します。

構文

HRESULT WerRegisterRuntimeExceptionModule(
  [in]           PCWSTR pwszOutOfProcessCallbackDll,
  [in, optional] PVOID  pContext
);

パラメーター

[in] pwszOutOfProcessCallbackDll

登録する例外ハンドラー DLL の名前。

[in, optional] pContext

ハンドラーのコールバック関数に渡される任意のコンテキスト情報へのポインター。

戻り値

この関数は、成功 した場合はS_OK 、失敗した場合は次のエラー コードを含むエラー コードを返します。

リターン コード 説明
WER_E_INVALID_STATE プロセスの状態が無効です。 たとえば、プロセスはアプリケーション回復モードです。
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) 登録済みのランタイム例外モジュールの数が制限を超えています。 プロセスは、最大WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULESハンドラーを登録できます。

注釈

例外ハンドラーは、クラッシュまたはハンドルされない例外が発生したときに WER サービスが読み込むアウトプロセス DLL です。 DLL は、次の関数を実装してエクスポートする必要があります。

(DLL には DllMain エントリ ポイントも含める必要があります)。

例外ハンドラーを使用すると、現在のインプロセス イベント レポート機能よりも、クラッシュ情報をレポートする方が安全で信頼性が高くなります。 また、現在の汎用イベント レポート機能は、致命的でないエラーの報告にのみ適しています。

この関数では、レジストリの WER 例外ハンドラー モジュール の一覧に pwszOutOfProcessCallbackDll DLL を含める必要があります。 例外ハンドラーを登録した後、プロセスがクラッシュまたは未処理の例外を発生させた場合、WER サービスは例外ハンドラーを読み込み、 OutOfProcessExceptionEventCallback コールバック関数を呼び出します。これは、クラッシュ時に要求を指定し、イベント名とレポート パラメーター数を指定するために使用します。 プロセスが複数の例外ハンドラーを登録する場合、いずれかのハンドラーがクラッシュを要求するまで、サービスは各ハンドラーを呼び出します。 ハンドラーがクラッシュを要求しない場合、WER は既定でネイティブ クラッシュ レポートに設定されます。

例外ハンドラーが例外を要求する場合、WER サービスは OutOfProcessExceptionEventSignatureCallback コールバック関数を呼び出します。これにより、問題を一意に定義するレポート パラメーターが提供されます。 次に、WER サービスは OutOfProcessExceptionEventDebuggerLaunchCallback コールバックを呼び出して、デバッガーを起動するか、デバッガーを自動的に起動するかをユーザーに提供するかどうかを決定します。 ハンドラーでは、既定の文字列をオーバーライドするカスタム デバッガー起動文字列を指定することもできます (既定値は AeDebug レジストリ キーで指定されたデバッガーです)。

ハンドラーがイベント名、レポート パラメーター、デバッガーの起動設定を指定すると、エラー報告フローの残りの部分は通常の方法で続行されます。

プロセスが終了する前に登録を削除するには、 WerUnregisterRuntimeExceptionModule 関数を呼び出す必要があります。 プロセスは、最大WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULESハンドラーを登録できます。

要件

要件 値
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー werapi.h
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

Windows エラー報告