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 入口点.)

与当前的进程内事件报告功能相比,使用异常处理程序报告崩溃信息更安全、更可靠。 此外,当前的通用事件报告功能仅适用于报告非致命错误。

此函数要求 将 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

另请参阅

Windows 错误报告