Condividi tramite


Funzione WerRegisterRuntimeExceptionModule (werapi.h)

Registra un gestore di eccezioni di runtime personalizzato usato per fornire Segnalazione errori Windows (WER) personalizzati per gli arresti anomali.

Sintassi

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

Parametri

[in] pwszOutOfProcessCallbackDll

Nome della DLL del gestore eccezioni da registrare.

[in, optional] pContext

Puntatore a informazioni di contesto arbitrarie passate alle funzioni di callback del gestore.

Valore restituito

Questa funzione restituisce S_OK in caso di esito positivo o in caso di errore, inclusi i codici di errore seguenti.

Codice restituito Descrizione
WER_E_INVALID_STATE Lo stato del processo non è valido. Ad esempio, il processo è in modalità di ripristino dell'applicazione.
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) Il numero di moduli di eccezione di runtime registrati supera il limite. Un processo può registrare fino a WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES gestori.

Commenti

Il gestore eccezioni è una DLL out-of-process caricata dal servizio WER quando si verifica un arresto anomalo o un'eccezione non gestita. La DLL deve implementare ed esportare le funzioni seguenti:

La DLL deve includere anche il punto di ingresso DllMain .

L'uso di un gestore di eccezioni è più sicuro e affidabile per segnalare informazioni sugli arresti anomali rispetto alla funzionalità di report eventi in-process corrente. Inoltre, la funzionalità di segnalazione eventi generica corrente è adatta solo per la segnalazione di errori non irreversibili.

Questa funzione richiede che la DLL pwszOutProcessCallbackDll sia inclusa nell'elenco dei moduli del gestore eccezioni WER nel Registro di sistema. Dopo aver registrato un gestore di eccezioni, se il processo si arresta in modo anomalo o genera un'eccezione non gestita, il servizio WER carica il gestore delle eccezioni e chiama la funzione di callback OutOfProcessExceptionEventCallback ., che viene usata per stato dell'attestazione sull'arresto anomalo e specificare il nome dell'evento e il conteggio dei parametri del report. Si noti che se il processo registra più di un gestore di eccezioni, il servizio chiama ogni gestore fino a quando uno dei gestori dichiara l'arresto anomalo. Se nessun gestore richiede l'arresto anomalo, WER viene predefinito per la creazione di report di arresto anomalo nativo.

Se un gestore di eccezioni dichiara l'eccezione, il servizio WER chiama la funzione di callback OutOfProcessExceptionEventSignatureCallback , che fornisce i parametri di report che definiscono in modo univoco il problema. Il servizio WER chiama quindi il callback OutOfProcessExceptionEventDebuggerLaunchCallback per determinare se offrire all'utente l'opzione di avviare un debugger o avviare automaticamente il debugger. Il gestore può anche specificare una stringa di avvio del debugger personalizzata, che eseguirà l'override della stringa predefinita(il valore predefinito è il debugger specificato nella chiave del Registro di sistema AeDebug).

Dopo che il gestore ha fornito il nome dell'evento, i parametri di report e le impostazioni di avvio del debugger, il resto del flusso di segnalazione degli errori continua nel modo consueto.

È necessario chiamare la funzione WerUnregisterRuntimeExceptionModule per rimuovere la registrazione prima dell'uscita del processo. Un processo può registrare fino a WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES gestori.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione werapi.h
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Segnalazione errori Windows