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:
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
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 |