0xE6 de vérification des bogues : DRIVER_VERIFIER_DMA_VIOLATION

La vérification des bogues DRIVER_VERIFIER_DMA_VIOLATION a la valeur 0x000000E6. Il s’agit du code de vérification des bogues pour toutes les violations de vérification DMA du vérificateur de pilote.

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.

Notes

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

paramètres DRIVER_VERIFIER_DMA_VIOLATION

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

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

0x00 - Erreur DMA divers.

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 le MDL.

Paramètre 4 - Nombre d’octets restants demandés à vider.

0x2 - Windows n’a plus de registres de carte contiguës.

Paramètre 3 : mappage des registres nécessaires.

Paramètre 4 - Nombre de registres cartographiques contigus.

0x01

Le compteur de performances a diminué. Les anciennes et nouvelles valeurs du compteur sont affichées.

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 courantes 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 courantes 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 de carte supplémentaires libérés.

0x06

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

Paramètre 2 : listes de collecte 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 d’abord toutes ses mémoires tampons communes.

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

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

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

0x08

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

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

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

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

0x09

Le pilote a essayé de libérer l’adaptateur sans libérer d’abord tous les registres cartographiques.

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 de vérificateur interne correspondantes.

0x0A

Le pilote a essayé de libérer l’adaptateur sans libérer d’abord toutes ses listes de nuages 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 de 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’adaptateur en attente.

0x0C

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

Paramètre 2 : registres cartographiques 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 du MDL de la mémoire tampon DMA.

0x0F

Le pilote ou le matériel a é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’altération. 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 de corruption.

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 de corruption. Le modèle de remplissage attendu est 0x0F.

0x10

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

Paramètre 2 - Nombre de registres toujours mappés.

0x11

Le pilote a trop de nombres de références en attente 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 de 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 celui 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 de carte.

Paramètre 2 - Registres de mappage alloués.

Paramètre 3 - Inscriptions de mappage maximales.

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 de carte.

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 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 de DMA_ADAPTER null à 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 ce MDL.

Paramètre 2 - Adresse virtuelle hors limites MDL.

Paramètre 3 - MDL.

0x1D

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

Paramètre 2 - Mémoire tampon pour mapper le début.

Paramètre 3 - Mémoire tampon à mapper.

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 le premier MDL, soit après la fin du premier MDL, soit à l’aide d’une longueur de transfert plus longue que la mémoire tampon MDL et traverse une limite de page dans mdL.Parameter 2 est le code de violation.

0x01 : l’adresse de mémoire tampon virtuelle est antérieure au premier MDL.

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

Paramètre 4 - Pointeur vers le premier MDL décrivant la mémoire tampon DMA.

0x02 : l’adresse virtuelle se trouve après le premier MDL.

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

Paramètre 4 - Pointeur vers le premier MDL décrivant la mémoire tampon DMA.

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

Paramètre 3 - Pointeur vers le 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 sur 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 - Mapper la base du registre.

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

Paramètre 4 - Pointeur vers le MDL utilisé 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 de vérificateur interne correspondantes.

0x22

Mémoire tampon DMA non mappée dans le système VA.

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 : videment 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 inconnue de la description de l’appareil.

0x26

IOMMU a détecté une violation de DMA.

Paramètre 2 - Objet d’appareil d’erreur de l’appareil.

Paramètre 3 - Informations d’erreur (généralement l’adresse physique d’erreur).

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

Cette vérification de bogue ne peut se produire que lorsque le vérificateur de pilote a été invité à surveiller un ou plusieurs pilotes. Si vous n’avez pas l’intention d’utiliser le vérificateur de pilote, vous devez le désactiver. Vous pouvez également envisager de supprimer le pilote qui a provoqué ce problème.

Si vous êtes l’enregistreur de pilotes, utilisez les informations obtenues par le biais de cette vérification de bogue pour corriger les bogues dans votre code.

Pour plus d’informations sur le vérificateur de pilote, consultez Le vérificateur de pilote.