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 入口点.)
与当前的进程内事件报告功能相比,使用异常处理程序报告崩溃信息更安全、更可靠。 此外,当前的通用事件报告功能仅适用于报告非致命错误。
此函数要求 将 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 |
Library | Kernel32.lib |
DLL | Kernel32.dll |