WerRegisterRuntimeExceptionModule 函式 (werapi.h)
註冊自定義運行時間例外狀況處理程式,用來提供自定義 Windows 錯誤報告 ( WER) 當機。
語法
HRESULT WerRegisterRuntimeExceptionModule(
[in] PCWSTR pwszOutOfProcessCallbackDll,
[in, optional] PVOID pContext
);
參數
[in] pwszOutOfProcessCallbackDll
要註冊的例外狀況處理程式 DLL 名稱。
[in, optional] pContext
傳遞至處理程式回呼函式之任意內容資訊的指標。
傳回值
此函式會在成功或失敗時傳回錯誤碼 S_OK ,包括下列錯誤碼。
傳回碼 | Description |
---|---|
WER_E_INVALID_STATE | 進程狀態無效。 例如,此程式處於應用程式恢復模式。 |
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) | 已註冊的運行時間例外狀況模組數目超過限制。 進程最多可以註冊WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES處理程式。 |
備註
例外狀況處理程式是當機或未處理的例外狀況發生時,WER 服務載入的跨進程 DLL。 DLL 必須實作並匯出下列函式:
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
(DLL 也必須包含 DllMain 進入點。)
使用例外狀況處理程式比目前進程內事件報告功能更安全且可靠的報告損毀資訊。 此外,目前的一般事件報告功能僅適用於報告非嚴重錯誤。
此函式需要將 pwszOutOfProcessCallbackDll DLL 包含在 登錄的 WER 例外狀況處理程式模組清單中 。 註冊例外狀況處理程序之後,如果行程當機或引發未處理的例外狀況,WER 服務會載入您的例外狀況處理程式,並呼叫 OutOfProcessExceptionEventCallback 回 呼函式,讓您用來在當機時陳述宣告,並提供事件名稱和報告參數計數。 請注意,如果進程註冊多個例外狀況處理程式,服務會呼叫每個處理程式,直到其中一個處理程式宣告損毀為止。 如果沒有處理程式宣告當機,WER 預設為原生損毀報告。
如果例外狀況處理程式宣告例外狀況,WER 服務會呼叫 OutOfProcessExceptionEventSignatureCallback 回 呼函式,以提供可唯一定義問題的報告參數。 然後,WER 服務會呼叫 OutOfProcessExceptionEventDebuggerLaunchCallback 回 呼,以判斷是否要為使用者提供啟動調試程式或自動啟動調試程式的選項。 處理程式也可以指定自定義調試程序啟動字串,這會覆寫預設字元串, (預設值是 AeDebug 登錄機碼中指定的調試程式) 。
在處理程式提供事件名稱、報告參數和調試程序啟動設定之後,其餘的錯誤報告流程會以一般方式繼續。
您必須呼叫 WerUnregisterRuntimeExceptionModule 函式,才能在程序結束之前移除註冊。 進程最多可以註冊WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES處理程式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | werapi.h |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |