Función WerRegisterRuntimeExceptionModule (werapi.h)

Registra un controlador de excepciones en tiempo de ejecución personalizado que se usa para proporcionar Informe de errores de Windows personalizados (WER) para bloqueos.

Sintaxis

HRESULT WerRegisterRuntimeExceptionModule(
  [in]           PCWSTR pwszOutOfProcessCallbackDll,
  [in, optional] PVOID  pContext
);

Parámetros

[in] pwszOutOfProcessCallbackDll

Nombre del archivo DLL del controlador de excepciones que se va a registrar.

[in, optional] pContext

Puntero a información de contexto arbitraria que se pasa a las funciones de devolución de llamada del controlador.

Valor devuelto

Esta función devuelve S_OK si se ha realizado correctamente o un código de error en caso de error, incluidos los siguientes códigos de error.

Código devuelto Descripción
WER_E_INVALID_STATE El estado del proceso no es válido. Por ejemplo, el proceso está en modo de recuperación de aplicaciones.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) El número de módulos de excepción en tiempo de ejecución registrados supera el límite. Un proceso puede registrarse hasta WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES controladores.

Comentarios

El controlador de excepciones es un archivo DLL fuera de proceso que el servicio WER carga cuando se produce una excepción de bloqueo o no controlada. El archivo DLL debe implementar y exportar las siguientes funciones:

(El archivo DLL también debe incluir el punto de entrada DllMain ).

El uso de un controlador de excepciones es más seguro y confiable para informar de información de bloqueo que la característica actual de informes de eventos en proceso. Además, la característica de informes de eventos genéricos actual solo es adecuada para notificar errores no irrecuperables.

Esta función requiere que el archivo DLL pwszOutOfProcessCallbackDll se incluya en la lista de módulos del controlador de excepciones WER en el registro. Después de registrar un controlador de excepciones, si el proceso se bloquea o genera una excepción no controlada, el servicio WER carga el controlador de excepciones y llama a la función de devolución de llamada OutOfProcessExceptionEventCallback . Tenga en cuenta que si el proceso registra más de un controlador de excepciones, el servicio llama a cada controlador hasta que uno de los controladores reclama el bloqueo. Si ningún controlador reclama el bloqueo, WER tiene como valor predeterminado informes de bloqueo nativos.

Si un controlador de excepciones reclama la excepción, el servicio WER llama a la función de devolución de llamada OutOfProcessExceptionEventSignatureCallback , que proporciona los parámetros de informes que definen de forma única el problema. A continuación, el servicio WER llama a la devolución de llamada OutOfProcessExceptionEventDebuggerLaunchCallback para determinar si se debe ofrecer al usuario la opción de iniciar un depurador o iniciar el depurador automáticamente. El controlador también puede especificar una cadena de inicio del depurador personalizado, que invalidará la cadena predeterminada (el valor predeterminado es el depurador especificado en la clave del Registro AeDebug).

Una vez que el controlador ha proporcionado el nombre del evento, los parámetros de informes y la configuración de inicio del depurador, el resto del flujo de informes de errores continúa de la manera habitual.

Debe llamar a la función WerUnregisterRuntimeExceptionModule para quitar el registro antes de que se cierre el proceso. Un proceso puede registrarse hasta WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES controladores.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado werapi.h
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Informe de errores de Windows