Compartilhar via


Função WerRegisterRuntimeExceptionModule (werapi.h)

Registra um manipulador de exceção de runtime personalizado que é usado para fornecer WER (Relatório de Erros do Windows personalizado) para falhas.

Sintaxe

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

Parâmetros

[in] pwszOutOfProcessCallbackDll

O nome da DLL do manipulador de exceção a ser registrada.

[in, optional] pContext

Um ponteiro para informações de contexto arbitrárias que são passadas para as funções de retorno de chamada do manipulador.

Retornar valor

Essa função retorna S_OK com êxito ou um código de erro em caso de falha, incluindo os seguintes códigos de erro.

Código de retorno Descrição
WER_E_INVALID_STATE O estado do processo não é válido. Por exemplo, o processo está no modo de recuperação de aplicativo.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) O número de módulos de exceção de runtime registrados excede o limite. Um processo pode registrar até WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES manipuladores.

Comentários

O manipulador de exceção é uma DLL fora do processo que o serviço WER carrega quando ocorre uma falha ou exceção sem tratamento. A DLL deve implementar e exportar as seguintes funções:

(A DLL também deve incluir o ponto de entrada DllMain .)

O uso de um manipulador de exceção é mais seguro e confiável para relatar informações de falha do que o recurso de relatório de eventos em processo atual. Além disso, o recurso de relatório de eventos genérico atual é adequado apenas para relatar erros não fatais.

Essa função exige que a DLL pwszOutOfProcessCallbackDll seja incluída na lista de módulos do manipulador de exceção wer no registro. Depois de registrar um manipulador de exceção, se o processo falhar ou gerar uma exceção sem tratamento, o serviço WER carregará seu manipulador de exceção e chamará a função de retorno de chamada OutOfProcessExceptionEventCallback ., que você usa para declarar sua declaração sobre a falha e fornecer o nome do evento e a contagem de parâmetros de relatório. Observe que, se o processo registrar mais de um manipulador de exceção, o serviço chamará cada manipulador até que um dos manipuladores registre a falha. Se nenhum manipulador reivindicar a falha, o WER usará como padrão relatórios de falha nativos.

Se um manipulador de exceção reivindicar a exceção, o serviço WER chamará a função de retorno de chamada OutOfProcessExceptionEventSignatureCallback , que fornece os parâmetros de relatório que definem exclusivamente o problema. Em seguida, o serviço WER chama o retorno de chamada OutOfProcessExceptionEventDebuggerLaunchCallback para determinar se deseja oferecer ao usuário a opção de iniciar um depurador ou iniciar o depurador automaticamente. O manipulador também pode especificar uma cadeia de caracteres de inicialização de depurador personalizada, que substituirá a cadeia de caracteres padrão (o padrão é o depurador especificado na chave do Registro AeDebug).

Depois que o manipulador fornecer o nome do evento, os parâmetros de relatório e as configurações de inicialização do depurador, o restante do fluxo de relatório de erros continuará da maneira usual.

Você deve chamar a função WerUnregisterRuntimeExceptionModule para remover o registro antes que o processo seja encerrado. Um processo pode registrar até WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES manipuladores.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho werapi.h
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Relatório de Erros do Windows