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.