0xE6 de vérification des bogues : DRIVER_VERIFIER_DMA_VIOLATION

Le case activée de bogue DRIVER_VERIFIER_DMA_VIOLATION a la valeur 0x000000E6. Il s’agit du code case activée bogue pour toutes les violations de vérification DMA du vérificateur de pilote.

Important

Cet article est destiné 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.

Notes

Le code de vérification de bogue principal E6 peut être observé lorsque le vérificateur de pilote n’est pas activé. Pour plus d’informations, consultez la page Vérification DMA si vous rencontrez ce code sans que le vérificateur de pilote soit activé.

paramètres de DRIVER_VERIFIER_DMA_VIOLATION

Le paramètre 1 est le seul paramètre intéressant. Ce paramètre identifie la violation exacte. Si un débogueur est attaché, un message d’information s’affiche dans le débogueur.

Paramètre 1 Cause de l’erreur et message du débogueur

0x00 : erreur DMA diverses.

Ce code peut représenter deux types d’erreurs, comme indiqué par le paramètre 2 :

0x1 : le pilote a essayé de vider trop d’octets à la fin du fichier de registre de carte.

Paramètre 3 : nombre d’octets restants dans la MDL.

Paramètre 4 : nombre d’octets restants à vider.

0x2 : Windows est à court de registres de carte contigus.

Paramètre 3 : registres cartographiques nécessaires.

Paramètre 4 : nombre de registres cartographiques contigus.

0x01

Le compteur de performances a diminué. Les anciennes et nouvelles valeurs du compteur s’affichent.

0x02

Le compteur de performances a augmenté trop rapidement. La valeur du compteur est affichée dans le débogueur.

0x03

Le pilote a libéré trop de mémoires tampons communes DMA. En règle générale, cela signifie qu’il a libéré la même mémoire tampon deux fois.

Paramètre 2 : nombre de mémoires tampons communes supplémentaires libérées.

0x04

Le pilote a libéré trop de canaux d’adaptateur DMA. En règle générale, cela signifie qu’il a libéré le même canal d’adaptateur deux fois.

Paramètre 2 : nombre de canaux d’adaptateur supplémentaires libérés.

0x05

Le pilote a libéré trop de registres de carte DMA. En règle générale, cela signifie qu’il a libéré le même registre de carte deux fois.

Paramètre 2 : nombre de registres cartographiques supplémentaires libérés.

0x06

Le pilote a libéré trop de listes de points/regroupements DMA. En règle générale, cela signifie qu’il a libéré deux fois la même liste de points/regroupements.

Paramètre 2 : listes de nuages de points allouées.

Paramètre 3 : listes de collecte de points libérées.

0x07

Le pilote a essayé de libérer l’adaptateur sans libérer au préalable toutes ses mémoires tampons communes.

Paramètre 2 : pointeur vers l’adaptateur DMA.

Paramètre 3 : nombre de mémoires tampons communes en attente.

Paramètre 4 : pointeur vers les données du vérificateur interne correspondantes.

0x08

Le pilote a essayé de libérer l’adaptateur sans libérer au préalable tous les canaux d’adaptateur, les mémoires tampons courantes ou les listes de points/regroupements.

Paramètre 2 : pointeur vers l’adaptateur DMA.

Paramètre 3 : nombre de canaux d’adaptateurs en attente.

Paramètre 4 : pointeur vers les données du vérificateur interne correspondantes.

0x09

Le pilote a essayé de libérer l’adaptateur sans libérer au préalable tous les registres de carte.

Paramètre 2 : pointeur vers l’adaptateur DMA.

Paramètre 3 : nombre de registres cartographiques en attente.

Paramètre 4 : pointeur vers les données du vérificateur interne correspondantes.

0x0A

Le pilote a essayé de libérer l’adaptateur sans libérer au préalable toutes ses listes de points/regroupements.

Paramètre 2 : pointeur vers l’adaptateur DMA.

Paramètre 3 : nombre de listes de collecte de points en attente.

Paramètre 4 : pointeur vers les données du vérificateur interne correspondantes.

0x0B

Le pilote a alloué trop de canaux d’adaptateur en même temps (un seul canal d’adaptateur est autorisé par adaptateur).)

Paramètre 2 : canaux d’adaptateurs en attente.

0x0C

Le pilote a essayé d’allouer trop de registres de carte en même temps.

Paramètre 2 : registres de carte requis.

Paramètre 3 : nombre maximal de registres cartographiques.

0x0D

Le pilote n’a pas vidé ses mémoires tampons d’adaptateur.

Paramètre 2 : nombre d’octets mappés.

Paramètre 3 : nombre maximal d’octets pouvant être mappés à la fois.

0x0E

Le pilote a essayé un transfert DMA sans verrouiller la mémoire tampon. La mémoire tampon en question était en mémoire paginée.

Paramètre 2 : adresse mdL de la mémoire tampon DMA.

0x0F

Le pilote ou le matériel écrit en dehors de sa mémoire tampon DMA allouée. Le paramètre 2 est le code de violation.

0x01 : balise avant la modification de la mémoire tampon DMA. La balise attendue est DmaVrfy0.

Paramètre 3 : longueur de la mémoire tampon.

Paramètre 4 - Démarrage de la mémoire tampon.

0x02 : balise après la modification de la mémoire tampon DMA.

La balise attendue est DmaVrfy0.

Paramètre 3 : longueur de la mémoire tampon.

Paramètre 4 - Démarrage de la mémoire tampon.

0x03 : Le registre de carte gratuit a été remplacé.

Paramètre 3 - Adresse d’endommagement. Le modèle de remplissage attendu est 0x0F.

0x04 : remplissage avant la modification incorrecte de la mémoire tampon.

Paramètre 3 - Démarrage de la mémoire tampon. Le remplissage attendu est 0x0F.

Paramètre 4 - Adresse d’endommagement.

0x05 : remplissage après la modification incorrecte de la mémoire tampon.

Paramètre 3 - Démarrage de la mémoire tampon.

Paramètre 4 - Adresse d’endommagement. Le modèle de remplissage attendu est 0x0F.

0x10

Le pilote a essayé de libérer ses registres de carte alors que certains étaient encore mappés.

Paramètre 2 : nombre de registres encore mappés.

0x11

Le pilote a trop de nombres de références en suspens pour l’adaptateur.

Paramètre 2 : nombre de références.

Paramètre 3 : pointeur vers l’adaptateur DMA.

Paramètre 4 : pointeur vers les données du vérificateur interne correspondantes.

0x13

Le pilote a appelé une routine DMA à un IRQL incorrect. Le paramètre 2 est le code de violation.

0x01 : l’IRQL actuel est différent de ce qui était prévu.

Paramètre 3 - IRQL attendu.

Paramètre 4 : IRQL actuel.

0x02 : l’IRQL actuel est plus élevé que prévu.

Paramètre 3 : IRQL maximal attendu.

Paramètre 4 : IRQL actuel.

0x14

Le pilote a appelé une routine DMA à un IRQL incorrect.

0x15

Le pilote a essayé d’allouer trop de registres cartographiques.

Paramètre 2 : registres de carte alloués.

Paramètre 3 : nombre maximal de registres cartographiques.

0x16

Le pilote a essayé de vider une mémoire tampon qui n’est pas mappée.

Paramètre 2 : adresse dans l’espace virtuel système du registre cartographique.

Paramètre 3 : pointeur vers les données de vérificateur interne correspondantes.

0x18

Le pilote a essayé une opération DMA à l’aide d’un adaptateur qui a déjà été libéré et qui n’existe plus.

Paramètre 2 : pointeur vers l’adaptateur DMA.

Paramètre 3 : pointeur vers les données de vérificateur interne correspondantes.

0x19

Le pilote a passé une valeur null DMA_ADAPTER à une routine HAL.

0x1B

Le pilote a passé une adresse et mdL à une routine HAL. Toutefois, cette adresse n’est pas dans les limites de cette MDL.

Paramètre 2 : adresse virtuelle en dehors des limites MDL.

Paramètre 3 - MDL.

0x1D

Le pilote a essayé de mapper une plage d’adresses qui était déjà mappée.

Paramètre 2 - Mémoire tampon pour le début de la carte.

Paramètre 3 : mettre en mémoire tampon la fin du mappage.

Paramètre 4 : adresse système dans la mémoire tampon déjà mappée.

0x1E

Le pilote appelé HalGetAdapter. Cette fonction est obsolète : vous devez utiliser IoGetDmaAdapter à la place.

0x1F

Mémoire tampon DMA non valide. Le pilote a référencé une adresse système non valide, soit avant la première MDL, soit après la fin de la première MDL, soit en utilisant une longueur de transfert supérieure à la mémoire tampon MDL et franchit une limite de page dans le MDL.Parameter 2 est le code de violation.

0x01 : l’adresse de la mémoire tampon virtuelle se trouve avant la première MDL.

Paramètre 3 : adresse virtuelle du début de la mémoire tampon DMA.

Paramètre 4 : pointeur vers la première MDL décrivant la mémoire tampon DMA.

0x02 : l’adresse virtuelle se trouve après la première MDL.

Paramètre 3 : adresse virtuelle du début de la mémoire tampon DMA.

Paramètre 4 : pointeur vers la première MDL décrivant la mémoire tampon DMA.

0x03 : une longueur de transfert supplémentaire franchit une limite de page.

Paramètre 3 : pointeur vers la MDL décrivant la mémoire tampon DMA.

Paramètre 4 : longueur du transfert DMA.

0x04 : l’adresse virtuelle d’une mémoire tampon DMA n’est pas alignée sur le cache.

Paramètre 3 : adresse virtuelle du début de la mémoire tampon DMA.

Paramètre 4 : pointeur vers MDL décrivant la mémoire tampon DMA.

0x05 : la longueur de la mémoire tampon DMA n’est pas alignée dans le cache.

Paramètre 3 : longueur de la mémoire tampon DMA.

Paramètre 4 : pointeur vers MDL décrivant la mémoire tampon DMA.

0x20

Le pilote a essayé de vider un registre de carte qui n’a pas été mappé.

Paramètre 2 : base de registre de mappage.

Paramètre 3 : VA du début de la mémoire tampon DMA.

Paramètre 4 : pointeur vers la mdL utilisée pour décrire la mémoire tampon DMA.

0x21

Le pilote a essayé de mapper une mémoire tampon de longueur nulle pour le transfert.

Paramètre 2 : pointeur vers les données du vérificateur interne correspondantes.

0x22

Mémoire tampon DMA non mappée dans l’va système.

Paramètre 2 - MDL

0x23

Impossible de vider un canal qui n’a pas été terminé ou annulé.

Paramètre 2 - Code de violation.

Valeur : 0x00 : Vidage de canal illégal

Paramètre 3 : ID du contrôleur.

Paramètre 4 : numéro de canal.

0x24

Mémoire tampon insuffisante pour la longueur demandée.

Paramètre 2 : longueur non comptabilisée.

0x25

Version de description de l’appareil inconnue.

0x26

IOMMU a détecté une violation DMA.

Paramètre 2 : objet de l’appareil défaillant.

Paramètre 3 : informations sur les erreurs (généralement l’adresse physique défaillante).

Paramètre 4 - Type d’erreur (spécifique au matériel).

Cause

Consultez la description de chaque code dans la section Paramètres pour obtenir une description de la cause.

Résolution

Ce bogue case activée ne peut se produire que lorsque le vérificateur de pilotes a reçu l’instruction de surveiller un ou plusieurs pilotes. Si vous n’avez pas l’intention d’utiliser Driver Verifier, vous devez le désactiver. Vous pouvez également envisager de supprimer le pilote à l’origine de ce problème.

Si vous êtes l’enregistreur de pilotes, utilisez les informations obtenues via ce bogue case activée pour corriger les bogues dans votre code.

Pour plus d’informations sur Driver Verifier, consultez Driver Verifier.