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:
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
(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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de