Fonction WerRegisterRuntimeExceptionModule (werapi.h)
Inscrit un gestionnaire d’exceptions de runtime personnalisé qui est utilisé pour fournir des Rapport d'erreurs Windows personnalisés (WER) pour les incidents.
Syntaxe
HRESULT WerRegisterRuntimeExceptionModule(
[in] PCWSTR pwszOutOfProcessCallbackDll,
[in, optional] PVOID pContext
);
Paramètres
[in] pwszOutOfProcessCallbackDll
Nom de la DLL du gestionnaire d’exceptions à inscrire.
[in, optional] pContext
Pointeur vers des informations de contexte arbitraires transmises aux fonctions de rappel du gestionnaire.
Valeur retournée
Cette fonction retourne S_OK en cas de réussite ou un code d’erreur en cas d’échec, y compris les codes d’erreur suivants.
Code de retour | Description |
---|---|
WER_E_INVALID_STATE | L’état du processus n’est pas valide. Par exemple, le processus est en mode de récupération d’application. |
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) | Le nombre de modules d’exception runtime inscrits dépasse la limite. Un processus peut inscrire jusqu’à WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES gestionnaires. |
Remarques
Le gestionnaire d’exceptions est une DLL hors processus que le service WER charge en cas d’incident ou d’exception non prise en charge. La DLL doit implémenter et exporter les fonctions suivantes :
- OutOfProcessExceptionEventCallback
- OutOfProcessExceptionEventSignatureCallback
- OutOfProcessExceptionEventDebuggerLaunchCallback
(La DLL doit également inclure le point d’entrée DllMain .)
L’utilisation d’un gestionnaire d’exceptions est plus sécurisée et fiable pour la création d’informations sur les incidents que la fonctionnalité actuelle de création de rapports d’événements en cours. En outre, la fonctionnalité de rapport d’événements générique actuelle est adaptée uniquement pour le signalement d’erreurs non irrécupérables.
Cette fonction nécessite que la DLL pwszOutOfProcessCallbackDll soit incluse dans la liste des modules du gestionnaire d’exceptions WER dans le Registre. Après avoir inscrit un gestionnaire d’exceptions, si le processus se bloque ou déclenche une exception non prise en charge, le service WER charge votre gestionnaire d’exceptions et appelle la fonction de rappel OutOfProcessExceptionEventCallback ., que vous utilisez pour indiquer votre revendication sur l’incident et fournir le nom de l’événement et le nombre de paramètres de rapport. Notez que si le processus inscrit plusieurs gestionnaires d’exceptions, le service appelle chaque gestionnaire jusqu’à ce que l’un des gestionnaires demande le blocage. Si aucun gestionnaire ne revendique l’incident, WER utilise par défaut le rapport d’incident natif.
Si un gestionnaire d’exceptions revendique l’exception, le service WER appelle la fonction de rappel OutOfProcessExceptionEventSignatureCallback , qui fournit les paramètres de création de rapports qui définissent le problème de manière unique. Ensuite, le service WER appelle le rappel OutOfProcessExceptionEventDebuggerLaunchCallback pour déterminer s’il faut offrir à l’utilisateur la possibilité de lancer un débogueur ou de lancer automatiquement le débogueur. Le gestionnaire peut également spécifier une chaîne de lancement de débogueur personnalisée, qui remplacera la chaîne par défaut (la valeur par défaut est le débogueur spécifié dans la clé de Registre AeDebug).
Une fois que le gestionnaire a fourni le nom de l’événement, les paramètres de création de rapports et les paramètres de lancement du débogueur, le reste du flux de rapports d’erreurs continue de la manière habituelle.
Vous devez appeler la fonction WerUnregisterRuntimeExceptionModule pour supprimer l’inscription avant la fin de votre processus. Un processus peut inscrire jusqu’à WER_MAX_REGISTERED_RUNTIME_EXCEPTION_MODULES gestionnaires.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | werapi.h |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |