0xA0 de vérification des bogues : INTERNAL_POWER_ERROR
La INTERNAL_POWER_ERROR vérification des bogues a une valeur de 0x000000A0. Cette vérification des bogues indique que le gestionnaire de stratégie d’alimentation a rencontré une erreur irrécupérable.
Important
Cette rubrique s’adresse aux développeurs. Si vous êtes un client qui a reçu un code d’erreur d’écran bleu lors de l’utilisation de votre ordinateur, consultez Résoudre les erreurs d’écran bleu.
paramètres INTERNAL_POWER_ERROR
Le paramètre 1 indique le type de violation. La signification des autres paramètres dépend de la valeur du paramètre 1.
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause |
---|---|---|---|---|
0x1 |
1 : Un appareil a dépassé son nombre maximal de références. 2, 3 ou 4 : Un trop grand nombre d’IRP d’inrush ont été mis en file d’attente. 5 : L’IRP d’alimentation a été envoyé à un objet d’appareil de niveau passif. 6 : Le système n’a pas pu allouer un IRP d’alimentation nécessaire. |
Si le paramètre 2 a la valeur 1, le nombre maximal de références autorisées. Si le paramètre 2 a la valeur 2, 3 ou 4, le nombre maximal d’IRP en attente autorisé. Si le paramètre 2 a la valeur 6, l’objet d’appareil cible. |
Si le paramètre 2 a la valeur 6, indique s’il s’agit d’un IRP d’alimentation système (0x0) ou d’appareil (0x1). | Une erreur s’est produite lors de la gestion du paquet de demande d’E/S d’alimentation (IRP). |
0x2 |
Réservé |
Réservé |
Réservé |
Une défaillance interne s’est produite lors de la tentative de traitement d’un événement d’alimentation. Pour plus d’informations, consultez Débogage de la vérification des bogues 0xA0 lorsque le paramètre 1 est égal à 0x2. |
0x3 |
Somme de contrôle attendue |
Somme de contrôle réelle |
Numéro de ligne de l’échec |
La somme de contrôle d’une page de contexte de mise en veille prolongée ne correspond pas à sa somme de contrôle attendue. |
0x4 |
Somme de contrôle attendue |
Somme de contrôle réelle |
Numéro de ligne de l’échec |
La somme de contrôle d’une page sur le point d’être écrite dans le fichier de mise en veille prolongée ne correspond pas à sa somme de contrôle attendue. |
0x5 |
Réservé |
Réservé |
Réservé |
Un code d’arrêt inconnu a été envoyé au gestionnaire d’arrêt du système. |
0x7 |
Réservé |
Réservé |
Réservé |
Une exception non gérée s'est produite. Pour plus d’informations, consultez Débogage de la vérification des bogues 0xA0 lorsque le paramètre 1 est égal à 0x7. |
0x8 |
Ce paramètre est toujours défini sur 0x100. |
Objet d’appareil |
POWER_CHANNEL_SUMMARY |
Une erreur irrécupérable s’est produite lors du traitement d’un événement d’alimentation du système. |
0x9 |
Code d’état |
Phase de mise en miroir |
Réservé |
Une erreur irrécupérable s’est produite lors de la préparation du fichier de mise en veille prolongée. |
0xA |
0 : Une vérification des bogues a été demandée immédiatement après la reprise. 1 : Une vérification des bogues a été demandée lors du CV après que tous les appareils non paginables ont été mis sous tension. 2 : Une vérification des bogues a été demandée lors de la reprise après que tous les appareils ont été mis sous tension. |
Réservé |
Réservé |
Une vérification des bogues a été demandée lors du réveil à des fins de débogage. |
0xB |
Taille du fichier de mise en veille prolongée. |
Progression de la mise en veille prolongée avant de manquer d’espace 0 : HIBERFILE_PROGRESS_FREE_MAP 1 : HIBERFILE_PROGRESS_RESUME_CONTEXT 2 : HIBERFILE_PROGRESS_PROCESSOR_STATE 3 : HIBERFILE_PROGRESS_SECURE_RANGES 4 : HIBERFILE_PROGRESS_MEMORY_RANGES 5 : HIBERFILE_PROGRESS_TABLE_PAGES 6 : HIBERFILE_PROGRESS_MEMORY_IMAGE |
Lorsque le paramètre 2 est 4, taille des plages de mémoire restantes. |
Le fichier de mise en veille prolongée est trop petit. |
0xC |
Code d’état |
Contexte de pile de vidage |
Réservé |
L’initialisation de la pile de vidage a échoué. |
0xD |
État d’alimentation du système en transition. |
Point de contrôle de veille le plus récemment atteint. |
Pointeur vers la structure POP_POWER_ACTION. |
Le système n’a pas pu effectuer une transition d’alimentation en temps opportun. |
0xF |
État d’alimentation du système en transition. |
Point de contrôle de veille le plus récemment atteint. |
Pointeur vers le thread qui traite actuellement la demande. |
Le système n’a pas pu effectuer une transition d’alimentation en temps opportun. |
0xF0 |
État d’alimentation du système en transition. |
Point de contrôle de veille le plus récemment atteint. |
Pointeur vers le thread qui traite actuellement la demande. |
Le système n’a pas pu effectuer (suspendre) une transition d’alimentation en temps opportun. |
0xF1 |
État d’alimentation du système en transition. |
Point de contrôle de veille le plus récemment atteint. |
Pointeur vers le thread qui traite actuellement la demande. |
Le système n’a pas pu effectuer (reprendre) une transition d’alimentation en temps opportun. |
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause |
---|---|---|---|---|
0x101 |
Réservé |
Pointeur d’exception. |
Réservé |
Une exception non prise en charge s’est produite lors du traitement d’un événement d’alimentation du système. Pour plus d’informations, consultez Débogage de la vérification des bogues 0xA0 lorsque le paramètre 1 est égal à 0x101. |
0x102 |
Réservé |
DUMP_INITIALIZATION_CONTEXT |
POP_HIBER_CONTEXT |
La taille de la mémoire tampon de travail de mise en veille prolongée n’est pas alignée sur la page. |
0x103 |
Réservé |
POP_HIBER_CONTEXT |
Réservé |
Toutes les pages de travail n’ont pas pu être prises en compte pendant le processus de mise en veille prolongée. |
0x104 |
Réservé |
POP_HIBER_CONTEXT |
Réservé |
Une tentative de mappage de la mémoire de mise en veille prolongée interne a été effectuée alors que les structures de mémoire interne étaient verrouillées. |
0x105 |
Réservé |
POP_HIBER_CONTEXT |
Réservé |
Une tentative de mappage de la mémoire de mise en veille prolongée interne avec un indicateur de type de mémoire non pris en charge a été effectuée. |
0x106 |
Réservé |
Liste de descripteurs de mémoire (MDL) |
Réservé |
Une liste de descripteurs de mémoire a été créée pendant le processus de mise en veille prolongée qui décrit la mémoire qui n’est pas paginée. |
0x107 |
Réservé |
POP_HIBER_CONTEXT |
PO_MEMORY_RANGE_ARRAY |
Une incompatibilité de données s’est produite dans les structures de données de mise en veille prolongée interne. |
0x108 |
Réservé |
POP_HIBER_CONTEXT |
Réservé |
Le sous-système de disque n’a pas pu écrire correctement une partie du fichier de mise en veille prolongée. |
0x109 |
Réservé |
Somme de contrôle attendue |
Somme de contrôle réelle |
La somme de contrôle pour les données d’état du processeur ne correspond pas à la somme de contrôle attendue. |
0x10A |
Réservé |
POP_HIBER_CONTEXT |
Code d’échec NTSTATUS |
Le sous-système de disque n’a pas pu lire ou écrire correctement une partie du fichier de mise en veille prolongée. |
0x10B |
Réservé |
Progression actuelle de la mise en veille prolongée |
Réservé |
Une tentative de marquage des pages pour la phase de démarrage de la mise en veille prolongée a été effectuée au mauvais moment à l’aide de l’API PoSetHiberRange. |
0x10C |
Réservé |
Indicateurs fournis à l’API |
Longueur à marquer |
L’API PoSetHiberRange a été appelée avec des paramètres non valides. |
0x10D |
Réservé |
POP_HIBER_CONTEXT |
Code d’échec NTSTATUS |
Le sous-système de noyau sécurisé a échoué lors de la fourniture de données pour la reprise. |
0x10E |
Réservé |
Somme de contrôle incorrecte |
Somme de contrôle de la lecture du disque précédent |
Le sous-système de disque a retourné des données endommagées lors de la lecture à partir du fichier de mise en veille prolongée. |
0x10F |
Point de contrôle de veille du système actuel. |
Type d’erreur interne. 0 : Un point de contrôle a été écrit alors que la pagination a été désactivée, mais avant que Po ne désactive les interruptions sur tous les processeurs. 1 : Un processeur autre que 0 a essayé d’écrire un point de contrôle pendant la phase d’interruptions désactivée du système en veille. 2 : Un autre élément de code dans le système est l’exécution d’un service d’exécution EFI. |
Réservé |
Une erreur interne s’est produite lors de la progression de la mise en veille du système de point de contrôle. |
0x110 |
Réservé |
Réservé |
Réservé |
Le système n’a pas pu désactiver les états de mise en veille du système, mais doit le faire pour garantir l’intégrité des données. |
0x111 |
Réservé |
Réservé |
Réservé |
Un pilote a indiqué que l’utilisateur est présent et que l’utilisateur a activé une option de débogage pour capturer la pile des appels. |
0x200 |
Réservé |
DEVICE_OBJECT |
DEVICE_OBJECT_POWER_EXTENSION |
Un type d’appareil inconnu est en cours de recherche d’un état inactif. |
0x300 |
Réservé |
DEVICE_OBJECT |
IRP |
Un état inconnu a été retourné à partir d’un IRP d’alimentation de batterie. |
0x301 |
Réservé |
DEVICE_OBJECT |
IRP |
La batterie est entrée dans un état inconnu. |
0x400 |
Réservé |
IO_STACK_LOCATION |
DEVICE_OBJECT |
Un appareil a dépassé son nombre maximal de références. |
0x401 |
Réservé |
Liste IRP en attente |
DEVICE_OBJECT |
Trop de runtimes d’alimentation entrants ont été mis en file d’attente. |
0x402 |
Réservé |
Liste IRP en attente |
DEVICE_OBJECT |
Trop de runtimes d’alimentation entrants ont été mis en file d’attente. |
0x403 |
Réservé |
Liste IRP en attente |
DEVICE_OBJECT |
Trop de runtimes d’alimentation entrants ont été mis en file d’attente. |
0x404 |
Réservé |
IO_STACK_LOCATION |
DEVICE_OBJECT |
Un IRP d’alimentation a été envoyé à un objet d’appareil de niveau passif. |
0x500 |
Réservé |
IRP |
DEVICE_OBJECT |
Un état inconnu a été retourné à partir d’un IRP d’alimentation thermique. |
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause |
---|---|---|---|---|
0x600 |
DEVICE_OBJECT PDO |
Réservé |
Réservé |
Un pilote a tenté une inscription en double avec Power Runtime Framework. |
0x601 |
appareil POP_FX_DEVICE |
PEP_DEVICE_REGISTER PEP |
Réservé |
Aucun plug-in Power Engine n’a accepté l’inscription d’appareil. |
0x602 |
DEVICE_NODE nœud d’appareil |
Nombre de veilles |
Réservé |
Le nombre de nœuds d’appareil en veille ne correspond pas à son nombre d’activations. |
0x603 |
POP_FX_PLUGIN |
Type de demande de travail |
Réservé |
Un plug-in Power Engine a effectué une demande de travail non valide. |
0x605 |
Notification ID |
POP_FX_PLUGIN |
Réservé |
Un plug-in Power Engine n’a pas pu accepter la notification obligatoire de gestion de l’alimentation des appareils. |
0x606 |
POP_FX_COMPONENT |
POP_FX_COMPONENT_FLAGS |
Nouvelle condition pour le composant |
Un plug-in Power Engine a tenté de faire passer un composant de ressource système critique à une condition Active (ou Inactive) lorsque la ressource était déjà Active (ou Inactive). |
0x607 |
POP_FX_DEVICE |
NTSTATUS |
Réservé |
L’acquisition d’un verrou de suppression d’appareil de l’infrastructure de gestion de l’alimentation du runtime a échoué quand il était nécessaire de réussir. |
0x608 |
POP_FX_COMPONENT |
POP_FX_COMPONENT_FLAGS |
Réservé |
Un pilote a tenté de passer un composant à l’inactif sans requête active précédente. |
0x609 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Type de requête en double 0 : DevicePowerRequired 1 : DevicePowerNotRequired |
Un plug-in Power Engine a demandé l’alimentation de l’appareil requise ou l’alimentation de l’appareil non requise sans une demande d’intervention du type opposé. |
0x610 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Réservé |
Un plug-in Power Engine a demandé que l’alimentation de l’appareil n’est pas requise alors qu’une demande précédente d’alimentation requise de l’appareil est en attente. |
0x611 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Index de composant non valide |
Un plug-in Power Engine a demandé une opération sur un composant non valide. |
0x612 |
POP_FX_PLUGIN PowerEnginePlugin |
Réservé |
Réservé |
Un plug-in Power Engine a demandé qu’un travail supplémentaire soit effectué dans le contexte d’une notification d’appareil où aucune mémoire tampon n’a été fournie par le bon de commande pour la demande. |
0x613 |
POP_FX_DEVICE |
Index du composant |
Opération 0 : Alimentation complète de l’appareil non nécessaire 1 : Signaler l’appareil sous tension 2 : Condition d’inactivité complète |
Un pilote a tenté de terminer une demande lorsqu’aucune requête en suspens n’est en attente. |
0x614 |
POP_FX_DEVICE |
Index du composant |
Paramètre non valide 0 : PO_FX_FLAG_BLOCKING utilisé dans IRQL >= DISPATCH_LEVEL 1 : PO_FX_FLAG_BLOCKING et PO_FX_FLAG_ASYNC_ONLY spécifiés 2 : Index de composant non valide |
Un pilote a demandé une transition actif/inactif sur un composant avec un paramètre non conforme. |
0x615 |
POP_FX_PLUGIN |
POP_FX_COMPONENT |
Action illégale 0 : Composant non inactif 0 1 : Le composant est déjà actif 2 : Aucune demande d’activation en attente 3 : Transition d’état inactif en attente |
Un plug-in Power Engine a indiqué illégalement la fin d’une activation d’un composant. |
0x616 |
POP_FX_PLUGIN |
POP_FX_COMPONENT |
Action illégale 0 : État d’inactivité non valide 1 : Le composant est déjà dans l’état demandé 2 : Demande d’un état d’inactivité non nul sans passer par l’état d’inactivité 0 |
Un plug-in Power Engine a demandé illégalement une transition d’état d’inactivité du composant. |
0x617 |
POP_FX_PLUGIN PowerEnginePlugin |
UNICODE_STRING DeviceId |
inscription pep PEP_DEVICE_REGISTER |
Un plug-in Power Engine a retourné un type d’acceptation non valide lors du traitement d’une notification d’inscription d’appareil. |
0x618 |
POP_FX_WORK_ORDER_WATCHDOG_INFO WorkOrder |
Réservé |
Réservé |
Un thread Power Worker d’exécution a été bloqué pendant trop longtemps. |
0x619 |
appareil POP_FX_DEVICE |
Index du composant |
NULL ou DEVICE_NODE de l’appareil enfant réellement responsable |
Un appareil a bloqué l’entrée dans l’état d’inactivité du runtime le plus profond pendant trop longtemps. |
0x61A |
POP_FX_PLUGIN Plug-in Power Engine |
appareil POP_FX_DEVICE |
Réservé |
Un plug-in Power Engine a fourni des informations non valides sur l’état des performances d’un composant. |
0x61B |
appareil POP_FX_DEVICE |
Index du composant |
Réservé |
Un pilote a émis une demande d’état de performances avant de s’inscrire aux états de performances des appareils. |
0x61C |
appareil POP_FX_DEVICE |
Index du composant |
Paramètre non valide VALEURS: 0 : PerfChangesCount dépasse le nombre de jeux d’états de performances inscrits pour ce composant |
Un pilote a émis une demande d’état de perf avec des paramètres non valides. |
0x61D |
appareil POP_FX_DEVICE |
Index du composant |
Contexte de requête en attente |
Un pilote a émis une demande d’état de performances alors qu’une requête précédente est en attente. |
0x61E |
Réservé |
Réservé |
Réservé |
Un plug-in Power Engine a tenté d’effectuer une transition critique sur un appareil de débogueur pendant que les transitions automatiques sont activées. |
0x61F |
appareil POP_FX_DEVICE |
Index d’état d’inactivité coordonné |
Réservé |
Un plug-in Power Engine a tenté d’activer les transitions automatiques du débogueur pour un état d’inactivité coordonné qui n’est pas un état à l’échelle de la plateforme. |
0x620 |
appareil POP_FX_DEVICE |
Index d’état d’inactivité coordonné |
Réservé |
Un plug-in Power Engine a tenté d’inscrire une dépendance d’état D pour un état d’inactivité coordonné qui n’est pas un état à l’échelle de la plateforme. |
0x621 |
appareil POP_FX_DEVICE |
Index du composant |
Index d’état d’inactivité coordonné |
Un plug-in Power Engine a tenté d’inscrire une dépendance d’état F pour un état d’inactivité coordonné qui n’est pas un état à l’échelle de la plateforme. |
0x622 |
Le POP_FX_COMPONENT parent |
Le POP_FX_COMPONENT enfant |
Réservé |
Un pilote a tenté de désinscrire de PoFx avec des dépendants en suspens. |
0x666 |
PPOP_PEP_ACTIVITY |
Nouveau type d’activité 0 : DevicePowerOn 1 : ComponentIdleStateChange 2 : ComponentActivating 3 : ComponentActive 4 : DevicePowerOff 5 : DeviceSuspend |
Type d’activité en conflit 0 : DevicePowerOn 1 : ComponentIdleStateChange 2 : ComponentActivating 3 : ComponentActive 4 : DevicePowerOff 5 : DeviceSuspend |
Le plug-in Power Engine par défaut a tenté de déclencher une nouvelle activité en conflit avec une autre activité. |
0x667 |
POP_PEP_ACTIVITY |
Type d’activité 0 : DevicePowerOn 1 : ComponentIdleStateChange 2 : ComponentActivating 3 : ComponentActive 4 : DevicePowerOff 5 : DeviceSuspend |
POP_PEP_ACTIVITY_STATUS |
Le plug-in Power Engine par défaut a tenté d’effectuer une activité qui n’est pas en cours d’exécution. |
0x668 |
PPPM_COORDINATED_STATE dont le nombre de références est mis à jour. |
Valeur de nombre de références non valide observée par cette fonction. |
Masque des états inactifs de la plateforme en cours de mise à jour. |
Le plug-in Power Engine par défaut a tenté de supprimer une contrainte d’état d’inactivité de la plateforme qui n’était pas précédemment contrainte. |
0x669 |
PPPM_COORDINATED_STATE dont le nombre de références est mis à jour. |
Valeur de nombre de références non valide observée par cette fonction. |
Réservé |
Le plug-in Power Engine par défaut a rencontré une erreur de cohérence interne lors de la tentative de notification exclusive de PoFx sur la disponibilité d’un état d’inactivité de la plateforme. |
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause |
---|---|---|---|---|
0x680 |
Code d’échec NTSTATUS. |
Réservé |
Réservé |
L’infrastructure d’alimentation du runtime n’a pas pu analyser une table ACPI requise, car elle est manquante ou incorrecte. Cela est généralement dû à une erreur bios. |
0x700 |
PEPHANDLE |
PEP_PPM_IDLE_SELECT |
Réservé |
Un plug-in Power Engine a spécifié des dépendances d’inactivité de processeur non valides. |
0x701 |
Index de l’état d’inactivité sélectionné du processeur bloqué |
Adresse PRCB du processeur bloqué |
Index du processeur bloqué |
Un processeur n’a pas pu effectuer une transition inactive dans l’intervalle alloué. Cela indique que le processeur spécifié est bloqué. |
0x702 |
Index de l’état d’inactivité sélectionné du processeur |
État de synchronisation inactif du processeur |
Adresse PRCB du processeur bloqué |
Un processeur s’est réveillé à partir d’un état non interruptible sans que le système d’exploitation lance une sortie de veille explicite via le PEP (à l’aide de la synchronisation d’inactivité PPM nécessaire). |
0x703 |
PEPHANDLE |
PEP_PPM_QUERY_PLATFORM_STATE |
Réservé |
Un plug-in Power Engine a spécifié des dépendances d’inactivité de processeur non valides lors d’une notification d’état de la plateforme de requête. |
0x704 |
Réservé |
Réservé |
Réservé |
Une transition d’état inactif coordonnée n’a pas été effectuée en temps opportun. |
0x705 |
PEPHANDLE |
Notification |
Étiquette à quatre caractères identifiant le champ modifié illégalement. Décodez la balise dans un débogueur de noyau avec : balise .formats, avec la balise < >. |
Un plug-in Power Engine a modifié un champ en lecture seule dans la mémoire tampon passé dans une notification. |
0x706 |
Notification |
Balise à quatre caractères identifiant le champ contenant la valeur non conforme. Décodez la balise dans un débogueur de noyau avec : balise .formats, avec la balise < >. |
Valeur ou index non valides dans un tableau où une valeur non conforme existe |
Un plug-in Power Engine a retourné une valeur non conforme dans l’un des champs de la mémoire tampon passée dans une notification. |
0x800 |
État CS actuel |
Réservé |
Réservé |
Le moniteur s’est activé de manière inattendue alors que le système était en veille connectée. |
0x801 |
Raison du changement d’état d’affichage |
ID de la session qui a mis à jour l’état d’affichage |
Réservé |
Une transition d’état d’affichage non valide s’est produite. |
0x802 |
POWER_MONITOR_REQUEST_REASON qui a provoqué la désactivation de l’affichage |
1 si le processeur d’événements power est activé, 0 sinon. |
Pointeur vers un POP_PDC_IDLE_PHASE_WATCHDOG_CONTEXT global. |
La phase d’inactivité du système PDC (NoCsPhase) bloque la transition vers la veille moderne depuis plus longtemps que prévu. |
0x900 |
Pointeur vers le rappel du paramètre d’alimentation responsable |
IRQL avant d’appeler le rappel du paramètre d’alimentation |
IRQL après le retour du rappel du paramètre d’alimentation |
Rappel de paramètre d’alimentation inscrit retourné avec l’IRQL modifié. Cela indique que le rappel a modifié l’IRQL, mais qu’il n’a pas restauré l’IRQL d’origine avant le retour. |
0x901 |
DEVICE_OBJECT |
IRP |
Nombre de désactivations APC du thread |
Un pilote a activé/désactivé des API de noyau lors de la gestion d’un IRP d’alimentation. |
0x4001 |
Sous-code d’erreur KE. VALEURS: 0x100 : (INTERNAL_POWER_ERROR_KE_PROCESSOR_ON_TIMED_OUT) Le microprogramme a mis trop de temps à alimenter un processeur. 0x101 : (INTERNAL_POWER_ERROR_KE_INVALID_INTERRUPT_TARGET) Une cible d’interruption non valide a été spécifiée. 0x102 : (INTERNAL_POWER_ERROR_KE_SETDESTINATION_FAILED) Impossible de modifier la destination cible d’une ligne d’interruption. 0x103 : (INTERNAL_POWER_ERROR_KE_IPI_REQUEST_FAILED) Échec de l’émission d’un IPI lors de la redirection d’une interruption. 0x104 : (INTERNAL_POWER_ERROR_KE_ARCH_NOT_SUPPORTED) Architecture de processeur non prise en charge. |
Réservé |
Réservé |
(INTERNAL_POWER_ERROR_KE_SUBCODE) Une défaillance interne s’est produite dans l’exécutif du noyau pendant une opération d’alimentation. |
0xAA64 |
Code d'erreur |
ID de fonction PSCI en cours |
Données dépendantes du contexte interne facultatives |
La fonction PSCI (Power State Coordination Interface) AArm64 a rencontré une erreur critique irrécupérable. |
Résolution
Remarques générales
Dans le tableau précédent, plusieurs des paramètres sont des pointeurs vers des structures. Par exemple, si le paramètre 2 est répertorié comme DEVICE_OBJECT, le paramètre 2 est un pointeur vers une structure DEVICE_OBJECT. Certaines des structures sont définies dans wdm.h, qui est inclus dans le Kit de pilotes Windows. Par exemple, les structures suivantes sont définies dans wdm.h.
- EXCEPTION_POINTERS
- DEVICE_OBJECT
- IO_STACK_LOCATION
- PEP_DEVICE_REGISTER
Certaines des structures qui apparaissent dans le tableau précédent ne sont définies dans aucun fichier d’en-tête public. Vous pouvez voir les définitions de ces structures à l’aide de la commande dt débogueur. L’exemple suivant montre comment utiliser la commande dt pour voir la structure DEVICE_OBJECT_POWER_EXTENSION .
3: kd> dt nt!DEVICE_OBJECT_POWER_EXTENSION
+0x000 IdleCount : Uint4B
+0x004 BusyCount : Uint4B
+0x008 BusyReference : Uint4B
+0x00c TotalBusyCount : Uint4B
+0x010 ConservationIdleTime : Uint4B
+0x014 PerformanceIdleTime : Uint4B
+0x018 DeviceObject : Ptr64 _DEVICE_OBJECT
+0x020 IdleList : _LIST_ENTRY
+0x030 IdleType : _POP_DEVICE_IDLE_TYPE
+0x034 IdleState : _DEVICE_POWER_STATE
+0x038 CurrentState : _DEVICE_POWER_STATE
+0x040 Volume : _LIST_ENTRY
+0x050 Specific : <unnamed-tag>
Les procédures suivantes vous aideront à déboguer certaines instances de cette vérification des bogues.
La vérification des bogues de débogage 0xA0 lorsque le paramètre 1 est égal à 0x2
Examinez la pile. Recherchez le ntoskrnl! Fonction PopExceptionFilter . Cette fonction contient le code suivant comme premier argument.
(error_code << 16) | _LINE_
Si l’appelant est PopExceptionFilter, le premier argument de cette fonction est de type PEXCEPTION_POINTERS. Notez la valeur de cet argument.
Utilisez la commande dt (Type d’affichage) et spécifiez la valeur que vous avez trouvée à l’étape précédente en tant qu’argument.
dt nt!_EXCEPTION_POINTERS argument
Cette commande affiche la structure. Notez l’adresse de l’enregistrement de contexte.
Utilisez la commande .cxr (Display Context Record) et spécifiez l’enregistrement de contexte que vous avez trouvé à l’étape précédente en tant qu’enregistrement.
.cxr record
Cette commande définit le contexte du registre sur la valeur appropriée.
Utilisez diverses commandes pour analyser la source de l’erreur. Commencez par kb (Display Stack Backtrace) .
La vérification des bogues de débogage 0xA0 lorsque le paramètre 1 est égal à 0x7
Examinez la pile. Recherchez le ntoskrnl! Fonction PopExceptionFilter . Le premier argument de cette fonction est de type PEXCEPTION_POINTERS. Notez la valeur de cet argument.
Utilisez la commande dt (Type d’affichage) et spécifiez la valeur que vous avez trouvée à l’étape précédente en tant qu’argument.
dt nt!_EXCEPTION_POINTERS argument
Cette commande affiche la structure. Notez l’adresse de l’enregistrement de contexte.
Utilisez la commande .cxr (Display Context Record) et spécifiez l’enregistrement de contexte que vous avez trouvé à l’étape précédente en tant qu’enregistrement.
.cxr record
Cette commande définit le contexte du registre sur la valeur appropriée.
Utilisez diverses commandes pour analyser la source de l’erreur. Commencez par kb (Display Stack Backtrace) .
La vérification des bogues de débogage 0xA0 lorsque le paramètre 1 est égal à 0x101
Utilisez la commande dt (Type d’affichage) et spécifiez la valeur du paramètre 3 comme argument.
dt nt!_EXCEPTION_POINTERS argument
Cette commande affiche la structure. Notez l’adresse de l’enregistrement de contexte.
Utilisez la commande .cxr (Display Context Record) et spécifiez l’enregistrement de contexte que vous avez trouvé à l’étape précédente en tant qu’enregistrement.
.cxr record
Cette commande définit le contexte du registre sur la valeur appropriée.
Utilisez diverses commandes pour analyser la source de l’erreur. Commencez par kb (Display Stack Backtrace) .