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 は、次の関数を実装してエクスポートする必要があります。
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
(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 |