Функция 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 обработчиков.

Комментарии

Обработчик исключений — это внепроцессная библиотека DLL, которая загружается службой WER при возникновении сбоя или необработанного исключения. Библиотека DLL должна реализовывать и экспортировать следующие функции:

(Библиотека DLL также должна содержать точку входа DllMain .)

Использование обработчика исключений является более безопасным и надежным для создания отчетов о сбоях, чем текущая функция создания отчетов о событиях внутри процесса. Кроме того, текущая универсальная функция создания отчетов о событиях подходит только для сообщения о неустранимых ошибках.

Эта функция требует, чтобы библиотека DLL pwszOutOfProcessCallbackDll была включена в список модулей обработчика исключений WER в реестре. После регистрации обработчика исключений, если процесс завершает работу или вызывает необработанное исключение, служба WER загружает обработчик исключений и вызывает функцию обратного вызова OutOfProcessExceptionEventCallback ., которая используется для указания утверждения при сбое и предоставления имени события и количества параметров отчета. Обратите внимание, что если процесс регистрирует несколько обработчиков исключений, служба вызывает каждый обработчик до тех пор, пока один из обработчиков не затверит сбой. Если обработчики не утверждают о сбое, wer по умолчанию использует собственные отчеты о сбоях.

Если обработчик исключений утверждает исключение, служба WER вызывает функцию обратного вызова OutOfProcessExceptionEventSignatureCallback , которая предоставляет параметры отчетов, однозначно определяющие проблему. Затем служба WER вызывает обратный вызов OutOfProcessExceptionEventDebuggerLaunchCallback , чтобы определить, следует ли предложить пользователю возможность запуска отладчика или автоматического запуска отладчика. Обработчик также может указать настраиваемую строку запуска отладчика, которая переопределит строку по умолчанию (по умолчанию это отладчик, указанный в разделе реестра AeDebug).

После того как обработчик предоставит имя события, параметры отчетов и параметры запуска отладчика, остальная часть потока отчетов об ошибках продолжается обычным способом.

Необходимо вызвать функцию WerUnregisterRuntimeExceptionModule , чтобы удалить регистрацию перед завершением процесса. Процесс может зарегистрировать до WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES обработчиков.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header werapi.h
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Отчеты об ошибках Windows