Partager via


Accès aux métadonnées UMDF dans les rapports WER

Cette rubrique décrit l’emplacement et le contenu des rapports Rapport d'erreurs Windows (WER) que le système d’exploitation crée lorsqu’un User-Mode Driver Framework (UMDF) se bloque.

Le système génère des rapports WER pour trois types d’événements UMDF différents : WUDFHostProblem, WUDFUnhandledException et WUDFVerifierFailure.

Lorsque le réflecteur termine le processus hôte du pilote, parfois en raison du dépassement du seuil de délai d’expiration de l’hôte , le système génère un fichier appelé Report.wer, qui contient les informations WER. Plus précisément, Report.wer contient des métadonnées UMDF qui peuvent être utiles si vous essayez de déboguer un pilote UMDF sans accès à une cible de débogage dynamique.

Dans Windows 8.1, vous trouverez le fichier Report.wer dans le répertoire C:\ProgramData\Microsoft\Windows\WER\ReportQueue. Dans ce répertoire, ouvrez le dossier NonCritical_HostProblem_* le plus récent et recherchez Report.wer.

Vous pouvez également accéder aux rapports WER pour UMDF à l’aide de la commande PowerShell suivante :

get-winevent -providername "Windows Error Reporting" | where-object {$_.Message -like "*wudf*"} | format-list | out-file UmdfReports.txt

Exemple de rapport WUDFHostProblem

Voici un exemple de rapport WER UMDF de type WUDFHostProblem. Il a été obtenu à partir du répertoire ReportQueue décrit ci-dessus. Si vous utilisez PowerShell pour récupérer les rapports, les champs peuvent être étiquetés P0, P1, P2 au lieu de Sig[0], Sig[1], Sig[2]. Sinon, les champs sont identiques et contiennent les mêmes valeurs possibles. Cet exemple a été généré à partir de l’un des exemples WDK qui utilisent la carte de référence matérielle OSR USB-FX2.

Sig[0].Name=EventClass
Sig[0].Value=HostProblem
Sig[1].Name=Problem
Sig[1].Value=HostTimeout
Sig[2].Name=DetectedBy
Sig[2].Value=2
Sig[3].Name=UMDFVersion
Sig[3].Value=6.3.9600
Sig[4].Name=ExitCode
Sig[4].Value=103
Sig[5].Name=Operation
Sig[5].Value=3
Sig[6].Name=Message
Sig[6].Value=11b00
Sig[7].Name=Status
Sig[7].Value=ffffffff
Sig[8].Name=HardwareId
Sig[8].Value=USB\VID_0547&PID_1002&REV_0000

Champs WUDFHostProblem

Le tableau suivant décrit les valeurs possibles pour les champs d’un rapport de type WUDFHostProblem.

Index Nom Valeurs
0 EventClass

L’infrastructure définit cette valeur sur HostProblem.

1 Problème

Ce champ contient l’une des valeurs suivantes :

  • HostFailure
  • SendFailure
  • HostTimeout
  • BadRequest
  • BadReply
  • HostFailure
  • Autres
  • HostDisconnect
  • LeakedHandle
  • InvalidInterruptState
  • IsrTimedOut
2 DetectedBy

Contient l’une des valeurs d’énumération suivantes :

cpp WdfComponentInvalid = 0, WdfComponentPlatform, WdfComponentReflector, WdfComponentDriverManager, WdfComponentHost, WdfComponentFramework, WdfComponentTest, WdfComponentMax
3 UMDFVersion

Spécifie la version des bibliothèques UMDF actuellement utilisées. Notez qu’il peut s’agir d’une version ultérieure à celle du système d’exploitation si l’utilisateur a pris des mesures pour mettre à jour les bibliothèques du framework.

4 ExitCode

Contient l’une des valeurs d’énumération suivantes :

cpp WdfHostExit_StillActive = 0x103, WdfHostExit_CodeUnknown = 0x70000000, WdfHostExit_InternalDriverStopReported, WdfHostExit_InternalDriverStopReportFailed, WdfHostExit_ExternalTermination

WdfHostExit_StillActive indique que le processus hôte était en cours d’exécution au moment où l’infrastructure a créé le rapport d’erreurs.

5 Opération

Contient l’une des valeurs d’énumération suivantes :

cpp WudfOperation_Invalid, WudfOperation_Init, WudfOperation_HostShutdown, WudfOperation_Pnp, WudfOperation_Cleanup, WudfOperation_Close, WudfOperation_Cancel, WudfOperation_IO, WudfOperation_Interrupt, WudfOperation_PoFx, WudfOperation_Other, WudfOperation_Max
6 Message

Le premier chiffre de ce champ est toujours 1, ce qui indique qu’un IRP est impliqué dans l’opération. Les paires de chiffres suivantes indiquent les valeurs MajorFunction et MinorFunction de l’IRP, respectivement.

Dans l’exemple de rapport ci-dessus, par exemple, ce champ contient la valeur 11b00. Cela signifie que l’opération était un IRP que le réflecteur a géré pour le compte du processus hôte du pilote avec une valeur de fonction principale de IRP_MJ_PNP et une valeur de fonction mineure de IRP_MN_START_DEVICE (1 = message IRP, 1b = IRP_MJ_PNP, 00 = IRP_MN_START_DEVICE).

7 Statut

L’infrastructure définit toujours cette valeur sur 0xffffffff.

8 HardwareId

Ce champ contient l’ID matériel de l’appareil associé au pilote qui a rencontré un problème.

Champs WUDFUnhandledException

Le tableau suivant décrit les valeurs possibles pour les champs dans un rapport de type WUDFUnhandledException.

Index Nom Valeurs
0 EventClass

Le framework définit cette valeur sur UnhandledException.

1 Composant

Ce champ contient l’une des valeurs suivantes :

  • Non valide
  • Plateforme
  • Reflector
  • DriverManager
  • Host
  • Infrastructure
  • Test
2 ExceptionCode

Raison pour laquelle l’exception s’est produite. Pour obtenir la liste des valeurs, consultez EXCEPTION_RECORD.

3 RelativeFaultingAddress

Adresse où l’exception s’est produite.

4 CrashingModuleName Nom du pilote qui a déclenché l’exception.
5 CrashingFileVersion Version framework du pilote.
6 LastDriverName Nom du premier composant de pilote non-UMDF dans la pile de pilotes.
7 LastDriverVersion Numéro de version du premier composant de pilote non-UMDF dans la pile de pilotes.
8 UMDFVersion

Spécifie la version des bibliothèques UMDF actuellement utilisées. Notez qu’il peut s’agir d’une version ultérieure à celle du système d’exploitation si l’utilisateur a pris des mesures pour mettre à jour les bibliothèques du framework.

9 HardwareId

À compter de Windows 8, l’ID matériel est fourni dans un fichier distinct. Dans ce cas, l’infrastructure définit cette valeur sur Dumped Separately.

Champs WUDFVerifierFailure

Le tableau suivant décrit les valeurs possibles pour les champs d’un rapport de type WUDFVerifierFailure.

Index Nom Valeurs
0 EventClass

L’infrastructure définit cette valeur sur VerifierFailure.

1 FoundBy

L’infrastructure définit cette valeur sur Framework.

2 Category

Ce champ contient l’une des valeurs suivantes :

  • Interne
  • Pilote
  • Appelant
  • Externe
  • UnhandledException
3 ErrorNumber À usage interne uniquement
4 Emplacement À usage interne uniquement
5 Pilote Nom du module de pilote qui a échoué.
6 CallerAddress Adresse de la routine qui a lancé la génération du rapport.
7 UMDFVersion

Spécifie la version des bibliothèques UMDF actuellement utilisées. Notez qu’il peut s’agir d’une version ultérieure à celle du système d’exploitation si l’utilisateur a pris des mesures pour mettre à jour les bibliothèques du framework.

8 HardwareId

À compter de Windows 8, l’ID matériel est fourni dans un fichier distinct. Dans ce cas, l’infrastructure définit cette valeur sur Dumped Separately.