次の方法で共有


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 エラー報告