Résolution des problèmes liés aux incidents du pilote UMDF 2.0
À partir de User-Mode Driver Framework (UMDF) version 2, vous pouvez utiliser un sous-ensemble des commandes d’extension du débogueur implémentées dans Wdfkd.dll pour déboguer un pilote UMDF. Cet article décrit les commandes que vous pouvez utiliser pour résoudre les problèmes de pilote UMDF.
Détermination de la raison du blocage d’un pilote UMDF 2.0
Si le processus hôte du pilote est terminé, votre pilote peut avoir un problème dans un rappel qui entraîne le dépassement du seuil de délai d’attente de l’hôte . Dans ce cas, le réflecteur met fin au processus hôte du pilote.
Pour examiner, configurez d’abord une session de débogage en mode noyau, comme décrit dans Comment activer le débogage d’un pilote UMDF. Nous vous recommandons vivement de développer et de tester votre pilote UMDF avec un débogueur de noyau attaché au système de test et d’activer application Verifier (AppVerif.exe) sur WUDFHost.exe. Utilisez la commande suivante, attachez un débogueur de noyau, puis redémarrez.
AppVerif –enable Heaps Exceptions Handles Locks Memory TLS Leak –for WudfHost.exe
Si HostFailKdDebugBreak est défini, le réflecteur bascule dans le débogueur en mode noyau lorsque le seuil de délai d’attente est dépassé. Dans la sortie du débogueur, vous voyez plusieurs suggestions sur la façon de commencer, y compris les liens que vous pouvez sélectionner. Par exemple :
**** Problem detected in UMDF driver "WUDFOsrUsbFx2". !process 0xFFFFE0000495B080 0x1f, !devstack 0xFFFFE000032BFA10, Problem code 3 **** **** Dump UMDF driver image name and stack: !wdfkd.wdfumdevstack 0x000000BEBB49AE20 **** Dump UM Irps for this stack: !wdfkd.wdfumirps 0x000000BEBB49AE20 **** Dump UMDF trace log: !wmitrace.logdump WUDFTrace **** Helpful UMDF debugger extension commands: !wdfkd.wdfhelp **** Note that driver host process may get terminated if you go past this break, making it difficult to debug the problem!
Utilisez !analyze pour afficher des informations sur l’échec et d’autres commandes d’extension UMDF que vous pouvez essayer. Cette commande peut vous aider en cas d’échecs du vérificateur UMDF ou d’exceptions non gérées par UMDF. Vous pouvez l’utiliser pour le débogage du noyau actif ou le débogage de fichiers de vidage sur incident utilisateur à partir de %ProgramData%\Microsoft\WDF.
Utilisez !process 0 0x1f wudfhost.exe pour répertorier tous les processus hôtes du pilote Wudfhost.exe, y compris les informations de pile de threads.
Vous pouvez également utiliser !wdfkd.wdfumtriage et !wdfkd.wdfldr pour afficher tous les pilotes actuellement liés à WDF. Lorsque vous sélectionnez le nom d’image d’un pilote UMDF, le débogueur affiche l’adresse du processus d’hébergement. Vous pouvez ensuite sélectionner l’adresse de processus pour afficher des informations spécifiques à ce processus.
Si nécessaire, utilisez .process /r /p Process pour basculer le contexte du processus vers celui du processus Wudfhost qui héberge votre pilote. Utilisez .cache forcedecodeuser et lmu pour vérifier que votre pilote est hébergé dans le processus actuel.
Examinez les piles d’appels de thread ( ! thread Address) pour déterminer si un rappel de pilote a expiré. Examinez le nombre de cases pour les threads. Dans Windows 8.1, le réflecteur expire après une minute.
Utilisez !wdfkd.wdfdriverinfo MyDriver.dll 0x10 pour afficher l’arborescence de l’appareil sous forme détaillée. Sélectionnez ensuite !wdfdevice. Cette commande affiche des informations détaillées sur l’alimentation, la stratégie d’alimentation et l’état de Plug-and-Play (PnP).
Utilisez !wdfkd.wdfumirps pour rechercher les IRP en attente.
Utilisez !wdfkd.wdfdevicequeues pour case activée la status des files d’attente du pilote.
Dans une session de débogage en mode noyau, vous pouvez utiliser !wmitrace.logdump WudfTrace pour afficher le journal de trace.
Affichage du journal IFR UMDF 2.0
Dans une session de débogage en mode noyau, vous pouvez utiliser la commande d’extension !wdfkd.wdflogdump pour afficher les enregistrements du journal Ifr (In-flight Recorder) windows Driver Frameworks (WDF), si disponibles.
Recherche de fichiers de vidage de mémoire
Consultez Détermination de la raison pour laquelle le réflecteur a arrêté le processus hôte pour plus d’informations sur la recherche de fichiers de vidage en mode utilisateur. Consultez Utilisation du suivi logiciel WPP dans les pilotes UMDF pour plus d’informations sur la définition de la valeur de Registre LogMinidumpType pour spécifier le type d’informations stockées dans le fichier minidump.