0x76 de vérification des bogues : PROCESS_HAS_LOCKED_PAGES

Le case activée de bogue PROCESS_HAS_LOCKED_PAGES a la valeur 0x00000076. Ce bogue case activée indique qu’un pilote n’a pas pu libérer les pages verrouillées après une opération d’E/S, ou qu’il a tenté de déverrouiller les pages qui étaient déjà déverrouillées.

Important

Cet article s’adresse aux programmeurs. 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 PROCESS_HAS_LOCKED_PAGES

Paramètre 1 Paramètre 2 Paramètre 3 Paramètre 4 Cause de l’erreur

0x00

Pointeur vers l’objet de processus

Nombre de pages verrouillées

Pointeur vers les piles de pilotes (si elles sont activées). Sinon, ce paramètre est égal à zéro.

Le processus en cours d’arrêt a des pages de mémoire verrouillées. Le pilote doit déverrouiller toute mémoire qu’il aurait pu verrouiller dans un processus avant que le processus ne se termine.

0x01

MDL spécifié par le pilote

Nombre actuel de pages de mémoire verrouillées dans ce processus

Pointeur vers les piles de pilotes pour ce processus (s’ils sont activés). Sinon, ce paramètre est égal à zéro.

Le pilote tente de déverrouiller les pages de mémoire de processus qui ne sont pas verrouillées.

Cause

Le pilote n’a pas pu déverrouiller les pages qu’il a verrouillées (la valeur du paramètre 1 est 0x0), ou le pilote tente de déverrouiller les pages qui n’ont pas été verrouillées ou qui ont déjà été déverrouillées (la valeur du paramètre 1 est 0x1).

Résolution

L’extension de débogage !analyze affiche des informations sur le bogue case activée et peut être utile pour déterminer la cause racine.

Si la valeur du paramètre 1 est 0x0

Utilisez d’abord l’extension !search sur le pointeur de processus actuel dans toute la mémoire physique. Cette extension peut trouver au moins une liste de descripteurs de mémoire (MDL) qui pointe vers le processus actuel. Ensuite, utilisez !search sur chaque MDL que vous trouvez pour obtenir le paquet de demande d’E/S (IRP) qui pointe vers le processus en cours. À partir de cette IRP, vous pouvez identifier le pilote qui fuit les pages.

Sinon, vous pouvez détecter le pilote à l’origine de l’erreur en modifiant le Registre :

  1. Dans la clé de Registre \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management , créez ou modifiez la valeur TrackLockedPages , puis définissez-la sur DWORD 1.

  2. Redémarrez l'ordinateur.

Le système enregistre ensuite les traces de pile, ce qui vous permet d’identifier facilement le pilote à l’origine du problème. Si le pilote provoque à nouveau la même erreur, le bogue case activée 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) est émis et le nom du pilote à l’origine de cette erreur s’affiche sur l’écran bleu et est stocké en mémoire à l’emplacement (PUNICODE_STRING) KiBugCheckDriver.

Si la valeur du paramètre 1 est 0x1

Examinez le code source du pilote qui verrouille et déverrouille la mémoire, puis essayez de localiser un instance où la mémoire est déverrouillée sans être verrouillée au préalable.