Utilisation de WER

À compter de Windows Vista, Windows fournit par défaut des rapports d’erreur sur les incidents, les non-réponses et les erreurs du noyau sans nécessiter de modifications pour votre application. Le rapport inclura des informations de minidump et de vidage du tas si nécessaire. Les applications utilisent plutôt l’API WER pour envoyer des rapports de problèmes spécifiques à l’application à Microsoft.

Étant donné que Windows signale automatiquement les exceptions non gérées, l’application ne doit pas gérer les exceptions irrécupérables. Si le processus d’erreur ou de non-réponse est interactif, WER affiche une interface utilisateur informant l’utilisateur du problème. Une application est considérée comme ne répondant pas si elle ne répond pas aux messages Windows pendant cinq secondes pendant que l’utilisateur tente d’interagir avec l’application.

Rapport d'erreurs Windows flux pour les incidents, la non-réponse et les erreurs de noyau

L’exemple suivant montre les étapes qui se produisent en cas d’incident d’application, de non-réponse ou d’erreur du noyau.

  1. L’événement de problème se produit.
  2. Le système d’exploitation appelle WER.
  3. WER collecte les données, génère un rapport et invite l’utilisateur à donner son consentement (si nécessaire).
  4. WER envoie le rapport à Microsoft (Watson Server) si l’utilisateur y a consenti.
  5. Si le serveur Watson demande des données supplémentaires, WER collecte les données et invite l’utilisateur à donner son consentement (si nécessaire).
  6. Si l’application est inscrite pour la récupération et le redémarrage, WER exécute les fonctions de rappel inscrites pendant que les données sont compressées et envoyées à Microsoft (si l’utilisateur y a consenti).
  7. Si une réponse au problème est disponible auprès de Microsoft, l’utilisateur en est averti.

Les applications peuvent utiliser les fonctions suivantes pour personnaliser le contenu du rapport envoyé à Microsoft. Les fonctions d’inscription indiquent à WER d’inclure les fichiers et blocs de mémoire spécifiques dans le rapport d’erreurs qu’il crée.

flux Rapport d'erreurs Windows pour la création de rapports d’événements génériques

Les étapes suivantes montrent comment les applications peuvent obtenir un rapport d’erreurs pour une condition d’erreur non irrécupérable.

  1. L’événement de problème non fatal se produit.
  2. L’application reconnaît l’événement et utilise la séquence suivante d’appels de fonction pour générer le rapport.
    1. Appelez la fonction WerReportCreate pour créer le rapport.
    2. Appelez la fonction WerReportSetParameter pour définir les paramètres du rapport.
    3. Appelez la fonction WerReportAddFile pour ajouter des fichiers au rapport.
    4. Appelez la fonction WerReportAddDump pour ajouter un minidump au rapport (si nécessaire).
    5. Appelez la fonction WerReportSubmit pour envoyer le rapport.
    6. Appelez werReportCloseHandle pour libérer des ressources.
  3. Selon les options spécifiques utilisées lors de l’appel des fonctions à l’étape 2, WER termine le rapport d’erreurs. WER garantit que la création de rapports est effectuée conformément aux stratégies définies par l’utilisateur. Par exemple, WER envoie le rapport à Microsoft, met en file d’attente le rapport et affiche les interfaces utilisateur appropriées à l’utilisateur.

Exclusion d’une application de Rapport d'erreurs Windows

Pour exclure votre application du rapport d’erreurs Windows, utilisez la fonction WerAddExcludedApplication . Pour restaurer le rapport d’erreurs pour votre application, utilisez la fonction WerRemoveExcludedApplication .

Récupération automatique des données et redémarrage d’une application défaillante

Une application peut utiliser la récupération d’application et le redémarrage pour enregistrer les données et les informations d’état avant la fermeture de l’application en raison d’une exception non prise en charge ou lorsque l’application cesse de répondre. L’application est également redémarrée, si nécessaire. Pour plus d’informations, consultez Récupération et redémarrage des applications.

API héritée

Une application peut signaler une erreur en appelant la fonction ReportFault . Toutefois, vous ne devez pas utiliser la fonction ReportFault , sauf si vous avez une exigence très spécifique que le comportement de rapport d’erreurs par défaut du système d’exploitation ne peut pas remplir.

Si le rapport d’erreurs est activé, le système affiche une boîte de dialogue à l’utilisateur indiquant que l’application a rencontré un problème et se ferme. S’il existe un débogueur configuré dans la cléHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug , l’utilisateur a la possibilité de lancer le débogueur. L’utilisateur a également la possibilité d’envoyer un rapport à Microsoft. Si l’utilisateur envoie le rapport, le système affiche une autre boîte de dialogue remerciant l’utilisateur pour le rapport et fournissant un lien vers plus d’informations.

Le système de rapports d’erreurs prend en charge les modes de fonctionnement suivants.

Mode de fonctionnement Description
Rapports de mémoire partagée Si le contexte de sécurité de l’application est identique au contexte de sécurité de l’utilisateur connecté, le système de rapports d’erreurs utilise un bloc de mémoire partagée pour la communication. Ce mode ne peut pas être utilisé avec le mode de création de rapports de manifeste.
Création de rapports de manifeste Si le contexte de sécurité de l’application n’est pas le même que le contexte de sécurité de l’utilisateur connecté, le système de rapports d’erreurs utilise un fichier pour la communication. Ce mode est également utilisé pour signaler les applications qui ne répondent pas et les erreurs du noyau. Ce mode ne peut pas être utilisé avec le mode de création de rapports de mémoire partagée.
Rapports Internet Le système de rapports d’erreurs envoie toutes les données à Microsoft via Internet. Ceci est le mode de fonctionnement par défaut. Il ne peut pas être utilisé avec le mode création de rapports d’entreprise. Ce mode est utilisé lorsqu’aucun chemin de chargement d’entreprise n’est spécifié par l’administrateur.
Rapports d’entreprise Le système de rapports d’erreurs envoie toutes les données à un partage de fichiers au lieu de les charger directement sur Microsoft. Cela permet aux responsables informatiques de l’entreprise d’examiner les données avant d’être envoyées à Microsoft. Ce mode est utilisé lorsqu’un chemin de chargement d’entreprise est spécifié par l’administrateur. Il ne peut pas être utilisé avec le mode de création de rapports Internet.
Création de rapports sans tête Le système de rapport d’erreurs n’affiche aucune boîte de dialogue pour l’utilisateur. Cela permet aux responsables informatiques d’entreprise de collecter des rapports d’erreurs de leurs employés à tout moment. Ce mode est utilisé lorsque la création de rapports est activée par l’administrateur, mais que la notification est désactivée. Il peut être utilisé uniquement avec le mode création de rapports d’entreprise.

Pour exclure votre application du rapport d’erreurs, utilisez la fonction AddERExcludedApplication .