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.