0xC4 de vérification des bogues : DRIVER_VERIFIER_DETECTED_VIOLATION
La vérification des bogues DRIVER_VERIFIER_DETECTED_VIOLATION a la valeur 0x000000C4. Il s’agit du code général de vérification des bogues pour les erreurs irrécupérables détectées par le vérificateur de pilote. Pour plus d’informations, consultez Gestion d’une vérification des bogues lorsque le vérificateur de pilote est activé.
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.
Paramètres de DRIVER_VERIFIER_DETECTED_VIOLATION
Le paramètre 1 identifie le type de violation. La signification des paramètres restants varie selon la valeur du paramètre 1. Les valeurs de paramètre sont décrites dans le tableau suivant.
Note Si vous ne parvenez pas à afficher toutes les 5 colonnes de ce tableau, essayez ce qui suit :
- Développez la fenêtre de votre navigateur à pleine taille.
- Placez le curseur dans le tableau et utilisez les touches de direction pour faire défiler vers la gauche et la droite.
0x00 à 0x70
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00 | IRQL actuel | Type de pool | Nombre d'octets | Le pilote a demandé une allocation de pool de zéro octets. |
0x01 | IRQL actuel | Type de pool | Taille de l’allocation, en octets | Le pilote a tenté d’allouer de la mémoire paginée avec IRQL > APC_LEVEL. |
0x02 | IRQL actuel | Type de pool | Taille de l’allocation, en octets | Le pilote a tenté d’allouer de la mémoire non paginé avec IRQL > DISPATCH_LEVEL. |
0x03 | L’appelant tente d’allouer plusieurs pages de doit réussir le pool, mais une page est la valeur maximale autorisée par cette API. | |||
0x10 | Adresse incorrecte | 0 | 0 | Le pilote a tenté de libérer une adresse qui n’a pas été retournée par un appel d’allocation. |
0x11 | IRQL actuel | Type de pool | Adresse du pool | Le pilote a tenté de libérer le pool paginé avec irQL > APC_LEVEL. |
0x12 | IRQL actuel | Type de pool | Adresse du pool | Le pilote a tenté de libérer un pool non paginé avec irQL > DISPATCH_LEVEL. |
0x13 ou 0x14 | Réservé | Pointeur vers l’en-tête du pool | Contenu de l’en-tête du pool | Le pilote a tenté de libérer le pool de mémoire qui était déjà libéré. |
0x15 | Entrée du minuteur | Type de pool | Adresse du pool libérée | Le pool que l’appelant tente de libérer contient un minuteur actif. |
0x16 | Réservé | Adresse du pool | 0 | Le pilote a tenté de libérer le pool à une adresse incorrecte ou le pilote a passé des paramètres non valides à une routine de mémoire. |
0X17 | Entrée de ressource | Type de pool | Adresse du pool libérée | Le pool que l’appelant tente de libérer contient un ERESOURCE actif. |
0x30 | IRQL actuel | IRQL demandé | 0 | Le pilote a passé un paramètre non valide à KeRaiseIrql. (Le paramètre était soit une valeur inférieure à la valeur IRQL actuelle, soit une valeur supérieure à HIGH_LEVEL. Cela peut être le résultat de l’utilisation d’un paramètre non initialisé.) |
0x31 | IRQL actuel | IRQL demandé | 0 : New IRQL is bad 1: New IRQL is invalid inside a DPC routine | Le pilote a passé un paramètre non valide à KeLowerIrql. (Le paramètre était soit une valeur supérieure à la valeur IRQL actuelle, soit une valeur supérieure à HIGH_LEVEL. Cela peut être le résultat de l’utilisation d’un paramètre non initialisé.) |
0x32 | IRQL actuel | Adresse de verrouillage de rotation | 0 | Le pilote appelé KeReleaseSpinLock à un irQL autre que DISPATCH_LEVEL. (Cela peut être dû à une double libération d’un verrou de rotation.) |
0x33 | IRQL actuel | Adresse mutex rapide | 0 | Le pilote a tenté d’acquérir un mutex rapide avec IRQL > APC_LEVEL. |
0x34 | IRQL actuel | Nombre de désactivations d’APC de thread | Adresse mutex rapide | Le pilote a tenté de libérer le mutex rapide à un irQL autre que APC_LEVEL. |
0x35 | IRQL actuel | Adresse de verrouillage de rotation | Ancien IRQL | Le noyau a libéré un verrou de rotation avec IRQL non égal à DISPATCH_LEVEL. |
0x36 | IRQL actuel | Numéro de verrouillage spin | Ancien IRQL | Le noyau a libéré un verrou de rotation en file d’attente avec IRQL non égal à DISPATCH_LEVEL. |
0x37 | IRQL actuel | Nombre de désactivations d’APC de thread | Ressource | Le pilote a essayé d’acquérir une ressource, mais les API ne sont pas désactivées. |
0x38 | IRQL actuel | Nombre de désactivations d’APC de thread | Ressource | Le pilote a essayé de libérer une ressource, mais les API ne sont pas désactivées. |
0x39 | IRQL actuel | Nombre de désactivations d’APC de thread | Mutex | Le pilote a tenté d’acquérir un mutex « unsafe » avec IRQL non égal à APC_LEVEL lors de l’entrée. |
0x3A | IRQL actuel | Nombre de désactivations d’APC de thread | Mutex | Le pilote a essayé de libérer un mutex « unsafe » avec IRQL non égal à APC_LEVEL lors de l’entrée. |
0x3B | IRQL actuel | Objet à attendre | Paramètre de délai d’expiration | La routine KeWaitXxx est appelée à DISPATCH_LEVEL ou une version ultérieure. |
0x3C | Handle passé à la routine | Type d’objet | 0 | Le pilote appelé ObReferenceObjectByHandle avec une poignée incorrecte. |
0x3D | 0 | 0 | Adresse de la ressource incorrecte | Le pilote a passé une ressource incorrecte (non alignée) à ExAcquireResourceExclusive. |
0x3E | 0 | 0 | 0 | Le pilote appelé KeLeaveCriticalRegion pour un thread qui n’est pas actuellement dans une région critique. |
0x3F | Adresse de l’objet | Nouveau nombre de références d’objets. -1 : cas de déréférence 1 : cas de référence | 0 | Le pilote a appliqué ObReferenceObject à un objet qui a un nombre de références égal à zéro, ou le pilote a appliqué ObDereferenceObject à un objet dont le nombre de références est égal à zéro. |
0x40 | IRQL actuel | Adresse de verrouillage de rotation | 0 | Le pilote appelé KeAcquireSpinLockAtDpcLevel avec IRQL < DISPATCH_LEVEL. |
0x41 | IRQL actuel | Adresse de verrouillage de rotation | 0 | Le pilote appelé KeReleaseSpinLockFromDpcLevel avec IRQL < DISPATCH_LEVEL. |
0x42 | IRQL actuel | Adresse de verrouillage de rotation | 0 | Le pilote appelé KeAcquireSpinLock avec IRQL > DISPATCH_LEVEL. |
0x51 | Adresse de base de l’allocation | Adresse de la référence au-delà de l’allocation | Nombre d’octets facturés | Le pilote a tenté de libérer de la mémoire après avoir écrit au-delà de la fin de l’allocation. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x52 | Adresse de base de l’allocation | Entrée de hachage | Nombre d’octets facturés | Le pilote a tenté de libérer de la mémoire après avoir écrit au-delà de la fin de l’allocation. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x53 | Adresse de base de l’allocation | En-tête | Réservé | Le pilote a tenté de libérer de la mémoire après avoir écrit au-delà de la fin de l’allocation. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x54 | Adresse de base de l’allocation | Réservé | Taille du hachage du pool | Le pilote a tenté de libérer de la mémoire après avoir écrit au-delà de la fin de l’allocation. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x59 | Adresse de base de l’allocation | Listindex | Réservé | Le pilote a tenté de libérer de la mémoire après avoir écrit au-delà de la fin de l’allocation. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x60 | Octets alloués à partir d’un pool paginé | Octets alloués à partir d’un pool non paginé | Nombre total d’allocations qui n’ont pas été libérées | Le pilote se décharge sans libérer d’abord ses allocations de pool. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x61 | Octets alloués à partir d’un pool paginé | Octets alloués à partir d’un pool non paginé | Nombre total d’allocations qui n’ont pas été libérées | Un thread de pilote tente d’allouer de la mémoire du pool pendant le déchargement du pilote. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. |
0x62 | Nom du pilote | Réservé | Nombre total d’allocations qui n’ont pas été libérées, y compris le pool paginé et non paginé | Le pilote se décharge sans libérer d’abord ses allocations de pool. Une vérification des bogues avec ce paramètre se produit uniquement lorsque l’option De suivi du pool de Driver Verifier est active. Type !vérificateur 3 drivername.sys pour obtenir des informations sur les allocations qui ont été divulguées qui ont provoqué la vérification de bogue. |
0x6F | Adresse MDL | Page physique verrouillée | Page physique la plus élevée dans le système | MmProbeAndLockPages appelé sur les pages qui ne sont pas dans la base de données PFN. Il s’agit généralement d’un pilote appelant cette routine pour verrouiller sa propre RAM doubleport privée. Non seulement cela n’est pas nécessaire, il peut également endommager la mémoire sur les machines avec une RAM physique non contigue. |
0x70 à 0x91
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x70 | IRQL actuel | Adresse MDL | Mode d’accès | Le pilote appelé MmProbeAndLockPages avec IRQL > DISPATCH_LEVEL. |
0x71 | IRQL actuel | Adresse MDL | Adresse du processus | Le pilote appelé MmProbeAndLockProcessPages avec IRQL > DISPATCH_LEVEL. |
0x72 | IRQL actuel | Adresse MDL | Adresse du processus | Le pilote appelé MmProbeAndLockSelectedPages avec IRQL > DISPATCH_LEVEL. |
0x73 | IRQL actuel | Dans Windows 32 bits : Faible 32 bits de l’adresse physique Dans Windows 64 bits : adresse physique 64 bits | Nombre d'octets | Le pilote appelé MmMapIoSpace avec IRQL > DISPATCH_LEVEL. |
0x74 | IRQL actuel | Adresse MDL | Mode d’accès | Le pilote appelé MmMapLockedPages en mode noyau avec IRQL > DISPATCH_LEVEL. |
0x75 | IRQL actuel | Adresse MDL | Mode d’accès | Le pilote appelé MmMapLockedPages en mode utilisateur avec IRQL > APC_LEVEL. |
0x76 | IRQL actuel | Adresse MDL | Mode d’accès | Le pilote appelé MmMapLockedPagesSpecifyCache en mode noyau avec IRQL > DISPATCH_LEVEL. |
0x77 | IRQL actuel | Adresse MDL | Mode d’accès | Le pilote appelé MmMapLockedPagesSpecifyCache en mode utilisateur avec IRQL > APC_LEVEL. |
0x78 | IRQL actuel | Adresse MDL | 0 | Le pilote appelé MmUnlockPages avec IRQL > DISPATCH_LEVEL. |
0x79 | IRQL actuel | Adresse virtuelle non mappée | Adresse MDL | Le pilote appelé MmUnmapLockedPages en mode noyau avec IRQL > DISPATCH_LEVEL. |
0x7A | IRQL actuel | Adresse virtuelle non mappée | Adresse MDL | Le pilote appelé MmUnmapLockedPages en mode utilisateur avec IRQL > APC_LEVEL. |
0x7B | IRQL actuel | Adresse virtuelle non mappée | Nombre d'octets | Le pilote appelé MmUnmapIoSpace avec IRQL > APC_LEVEL. |
0x7C | Adresse MDL | Indicateurs MDL | 0 | Le pilote a appelé MmUnlockPages et passé un MDL dont les pages n’ont jamais été verrouillées avec succès. |
0x7D | Adresse MDL | Indicateurs MDL | 0 | Le pilote appelé MmUnlockPages et passé un MDL dont les pages proviennent d’un pool non paginé. (Ceux-ci ne doivent jamais être déverrouillés.) |
0x7E | IRQL actuel | DISPATCH_LEVEL | 0 | Le pilote appelé MmAllocatePagesForMdl, MmAllocatePagesForMdlEx ou MmFreePagesFromMdl avec IRQL > DISPATCH_LEVEL. |
0x7F | IRQL actuel | Adresse MDL | Indicateurs MDL | Le pilote appelé BuildMdlForNonPagedPool et passé un MDL dont les pages proviennent du pool paginé. |
0x80 | IRQL actuel | Adresse de l’événement | 0 | Le pilote appelé KeSetEvent avec IRQL > DISPATCH_LEVEL. |
0x81 | Adresse MDL | Indicateurs MDL | 0 | Le pilote appelé MmMapLockedPages. (Vous devez utiliser MmMapLockedPagesSpecifyCache à la place, avec le paramètre BugCheckOnFailure défini sur FALSE.) |
0x82 | Adresse MDL | Indicateurs MDL | 0 | Le pilote appelé MmMapLockedPagesSpecifyCache avec le paramètre BugCheckOnFailure égal à TRUE. (Ce paramètre doit être défini sur FALSE.) |
0x83 | Début de la plage d’adresses physique à mapper | Nombre d’octets à mapper | Numéro du cadre de première page qui n’est pas verrouillé | Le pilote a appelé MmMapIoSpace sans avoir verrouillé les pages MDL. Les pages physiques représentées par la plage d’adresses physique mappée doivent avoir été verrouillées avant d’effectuer cet appel. |
0x85 | Adresse MDL | Nombre de pages à mapper | Numéro du cadre de première page qui n’est pas verrouillé | Le pilote appelé MmMapLockedPages sans avoir verrouillé les pages MDL. |
0x89 | Adresse MDL | Pointeur vers la page non mémoire dans mdL | Numéro de page non mémoire dans mdL | Un MDL n’est pas marqué comme « E/S », mais il contient des adresses de page non mémoire. |
0x91 | Réservé | Réservé | Réservé | Les piles basculées du pilote à l’aide d’une méthode qui n’est pas prise en charge par le système d’exploitation. La seule façon prise en charge d’étendre une pile en mode noyau consiste à utiliser KeExpandKernelStackAndCallout. |
0xA0 à 0x140
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0xA0 | Pointeur vers l’IRP qui effectue la demande de lecture ou d’écriture | Objet appareil de l’appareil inférieur | Nombre du secteur dans lequel l’erreur a été détectée | Une erreur de vérification de redondance cyclique (CRC) a été détectée sur un disque dur. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option Vérification de l’intégrité du disque du vérificateur de pilote est active. |
0xA1 | Copie de l’IRP qui effectue la demande de lecture ou d’écriture. (L’IRP réel a été effectué.) | Objet appareil de l’appareil inférieur | Nombre du secteur dans lequel l’erreur a été détectée | Une erreur CRC a été détectée sur un secteur (de façon asynchrone). Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option Vérification de l’intégrité du disque du vérificateur de pilote est active. |
0xA2 | IRP effectuant la demande de lecture ou d’écriture, ou une copie de cet IRP | Objet appareil de l’appareil inférieur | Nombre du secteur dans lequel l’erreur a été détectée | Les copies de somme de contrôle CRCDISK ne correspondent pas. Il peut s’agir d’une erreur de pagination. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option Vérification de l’intégrité du disque du vérificateur de pilote est active. |
0xB0 | Adresse MDL | Indicateurs MDL | Indicateurs MDL incorrects | Le pilote appelé MmProbeAndLockPages pour un MDL avec des indicateurs incorrects. Par exemple, le pilote a passé un MDL créé par MmBuildMdlForNonPagedPool à MmProbeAndLockPages. |
0xB1 | Adresse MDL | Indicateurs MDL | Indicateurs MDL incorrects | Le pilote appelé MmProbeAndLockProcessPages pour un MDL avec des indicateurs incorrects. Par exemple, le pilote a passé un MDL créé par MmBuildMdlForNonPagedPool à MmProbeAndLockProcessPages. |
0xB2 | Adresse MDL | Indicateurs MDL | Indicateurs MDL incorrects | Le pilote appelé MmMapLockedPages pour un MDL avec des indicateurs incorrects. Par exemple, le pilote a passé un MDL qui est déjà mappé à une adresse système ou qui n’a pas été verrouillé sur MmMapLockedPages. |
0xB3 | Adresse MDL | Indicateurs MDL | Indicateurs MDL manquants (au moins un indicateur était attendu) | Le pilote appelé MmMapLockedPages pour un MDL avec des indicateurs incorrects. Par exemple, le pilote a passé un MDL qui n’est pas verrouillé sur MmMapLockedPages. |
0xB4 | Adresse MDL | Indicateurs MDL | Indicateur MDL partiel inattendu | Le pilote appelé MmUnlockPages pour un MDL partiel. Un MDL partiel est celui qui a été créé par IoBuildPartialMdl. |
0xB5 | Adresse MDL | Indicateurs MDL | Indicateur MDL partiel inattendu | MmUnmapLockedPages appelé sur un MDL partiel (créé avec IoBuildPartialMdl). |
0xB6 | Adresse MDL | Indicateurs MDL | Indicateur MDL manquant | MmUnmapLockedPages appelé sur un MDL qui n’est pas mappé à une adresse système. |
0xB7 | Nombre de pages physiques endommagées. | Première page physique endommagée. | Dernière page physique endommagée. | Le BIOS système a endommagé une mémoire physique faible pendant une transition de veille. |
0xB8 | Adresse MDL | Indicateurs MDL | Réservé | Les pages décrites par le MDL sont toujours mappées. Le pilote doit annuler le mappage des pages avant d’appeler IoFreeMdl. |
0xB9 | Adresse non mappée. | Adresse MDL. | Réservé | MmUnmapLockedPages appelé avec une adresse d’espace utilisateur incorrecte. |
0xC0 | Adresse de l’IRP | 0 | Réservé | Le pilote appelé IoCallDriver avec des interruptions désactivées. |
0xC1 | Adresse de la routine de répartition du pilote | Réservé | Réservé | Une routine de répartition des pilotes a été retournée avec des interruptions désactivées. |
0xC2 | 0 | 0 | 0 | Le pilote a appelé une routine de distribution d’E/S rapide après la désactivation des interruptions. |
0xC3 | Adresse de la routine de répartition rapide des E/S du pilote | Réservé | Réservé | Une routine de distribution d’E/S rapide du pilote a été retournée avec des interruptions désactivées. |
0xC5 | Adresse de la routine de répartition du pilote | Nombre de désactivations APC du thread actuel | Nombre de désactivations d’APC du thread avant d’appeler la routine de répartition du pilote | Une routine de répartition des pilotes a modifié le nombre de désactivations APC du thread. Le nombre de désactivations d’APC est décrémenté chaque fois qu’un pilote appelle KeEnterCriticalRegion, FsRtlEnterFileSystem ou acquiert un mutex. Le nombre de désactivations APC est incrémenté chaque fois qu’un pilote appelle KeLeaveCriticalRegion, KeReleaseMutex ou FsRtlExitFileSystem. Étant donné que ces appels doivent toujours être en paires, le nombre de désactivations APC doit être égal à zéro chaque fois qu’un thread est arrêté. Une valeur négative indique qu’un pilote a désactivé les appels APC sans les réactiver. Une valeur positive indique que l’inverse est vrai. |
0xC6 | Adresse de la routine de répartition rapide des E/S du pilote | Nombre de désactivations APC du thread actuel | Nombre de désactivations d’APC du thread avant d’appeler la routine de distribution du pilote d’E/S rapide | Une routine de distribution d’E/S rapides du pilote a changé le nombre de désactivations APC du thread. Le nombre de désactivations d’APC est décrémenté chaque fois qu’un pilote appelle KeEnterCriticalRegion, FsRtlEnterFileSystem ou acquiert un mutex. Le nombre de désactivations APC est incrémenté chaque fois qu’un pilote appelle KeLeaveCriticalRegion, KeReleaseMutex ou FsRtlExitFileSystem. Étant donné que ces appels doivent toujours être en paires, le nombre de désactivations APC doit être égal à zéro chaque fois qu’un thread est arrêté. Une valeur négative indique qu’un pilote a désactivé les appels APC sans les réactiver. Une valeur positive indique que l’inverse est vrai. |
0xCA | Adresse de la liste lookaside | Réservé | Réservé | Le pilote a tenté de réinscrire une liste de lookaside. |
0xCB | Adresse de la liste lookaside | Réservé | Réservé | Le pilote a tenté de supprimer une liste lookaside non initialisée. |
0xCC | Adresse de la liste lookaside | Adresse de départ de l’allocation du pool | Taille de l’allocation de pool | Le pilote a tenté de libérer une allocation de pool qui contient une liste lookaside active. |
0xCD | Adresse de la liste lookaside | Taille de bloc spécifiée par l’appelant | Taille de bloc minimale prise en charge | Le pilote a tenté de créer une liste lookaside avec une taille de bloc d’allocation trop petite. |
0xD0 | Adresse de la structure ERESOURCE | Réservé | Réservé | Le pilote a tenté de réinscrire une structure ERESOURCE. |
0xD1 | Adresse de la structure ERESOURCE | Réservé | Réservé | Le pilote a tenté de supprimer une structure ERESOURCE non initialisée. |
0xD2 | Adresse de la structure ERESOURCE | Adresse de départ de l’allocation du pool | Taille de l’allocation de pool | Le pilote a tenté de libérer une allocation de pool qui contient une structure ERESOURCE active. |
0xD5 | Adresse de la structure IO_REMOVE_LOCK créée par la version de build vérifiée du pilote | Balise IoReleaseRemoveLock actuelle | Réservé | La balise IoReleaseRemoveLock actuelle ne correspond pas à la balise IoAcquireRemoveLock précédente. Si le pilote appelant IoReleaseRemoveLock n’est pas dans une build vérifiée, le paramètre 2 est l’adresse de l’ombre IO_REMOVE_LOCK structure créée par driver Verifier pour le compte du pilote. Dans ce cas, l’adresse de la structure IO_REMOVE_LOCK utilisée par le pilote n’est pas utilisée du tout, car le vérificateur de pilote remplace l’adresse de verrouillage pour toutes les API de verrouillage de suppression. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option Vérification d’E/S du vérificateur de pilote est active. |
0xD6 | Adresse de la structure IO_REMOVE_LOCK créée par la version de build vérifiée du pilote | Balise qui ne correspond pas à la balise IoAcquireRemoveLock précédente | Balise IoAcquireRemoveLock précédente | La balise IoReleaseRemoveLockAndWait actuelle ne correspond pas à la balise IoAcquireRemoveLock précédente. Si le pilote appelant IoReleaseRemoveLock n’est pas une build vérifiée, le paramètre 2 est l’adresse de l’ombre IO_REMOVE_LOCK structure créée par Driver Verifier pour le compte du pilote. Dans ce cas, l’adresse de la structure IO_REMOVE_LOCK utilisée par le pilote n’est pas utilisée du tout, car le vérificateur de pilote remplace l’adresse de verrouillage pour toutes les API de verrouillage de suppression. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option Vérification d’E/S du vérificateur de pilote est active. |
0xD7 | Adresse de la structure de suppression de verrou de build vérifiée utilisée en interne par le vérificateur de pilote | Adresse de la structure Remove Lock spécifiée par le pilote | Réservé | Un verrou de suppression ne peut pas être réinitialisé, même après avoir appelé IoReleaseRemoveLockAndWait, car d’autres threads peuvent toujours utiliser ce verrou (en appelant IoAcquireRemoveLock). Le pilote doit allouer le verrou de suppression à l’intérieur de son extension de périphérique et l’initialiser une seule fois. Le verrou sera supprimé avec l’extension de l’appareil. |
0xDA | Adresse de départ du pilote | Adresse de rappel WMI à l’intérieur du pilote | Réservé | Une tentative a été effectuée pour décharger un pilote qui n’a pas désinscrire sa fonction de rappel WMI. |
0xDB | Adresse de l’objet appareil | Réservé | Réservé | Une tentative a été effectuée pour supprimer un objet d’appareil qui n’a pas été désinscrit de WMI. |
0xDC | Réservé | Réservé | Réservé | Une valeur RegHandle non valide a été spécifiée comme paramètre de la fonction EtwUnregister. |
0xDD | Adresse de l’appel à EtwRegister | Adresse de départ du pilote de déchargement | Pour Windows 8 et versions ultérieures, ce paramètre est la valeur ETW RegHandle. | Une tentative a été effectuée pour décharger un pilote sans appeler EtwUnregister. |
0xDF | Adresse de l’objet de synchronisation | 0 | 0 | L’objet de synchronisation se trouve dans l’espace d’adressage de session. Les objets de synchronisation ne sont pas autorisés dans l’espace d’adressage de session, car ils peuvent être manipulés à partir d’une autre session ou à partir de threads système qui n’ont pas d’espace d’adressage virtuel de session. |
0xE0 | Adresse en mode utilisateur utilisée comme paramètre | Taille, en octets, de la plage d’adresses utilisée comme paramètre | Réservé | Un appel a été effectué à une fonction de noyau du système d’exploitation qui a spécifié une adresse en mode utilisateur en tant que paramètre. |
0xE1 | Adresse de l’objet de synchronisation | Réservé | Réservé | Un objet de synchronisation a été trouvé avoir une adresse non valide ou paginable. |
0xE2 | Adresse de l’IRP | Adresse en mode utilisateur présente dans l’IRP | Réservé | Un IRP avec Irp-RequestorMode> défini sur KernelMode a été trouvé pour avoir une adresse en mode utilisateur comme l’un de ses membres. |
0xE3 | Adresse de l’appel à l’API | Adresse en mode utilisateur utilisée comme paramètre dans l’API | Réservé | Un pilote a effectué un appel à une routine ZwXxx en mode noyau avec une adresse en mode utilisateur en tant que paramètre. |
0xE4 | Adresse de l’appel à l’API | Adresse de la structure de UNICODE_STRING mal formée | Réservé | Un pilote a effectué un appel à une routine ZwXxx en mode noyau avec une structure UNICODE_STRING mal formée en tant que paramètre. |
0xE5 | IRQL actuel | Réservé | Réservé | Un appel a été effectué à une API de noyau à l’irQL incorrect. |
0xE6 | Adresse à l’intérieur du pilote effectuant l’appel de l’API Zw | IRQL actuel | API de noyau spéciales. | L’API Kernel Zw n’a pas été appelée à IRQL = PASSIVE_LEVEL et avec des API de noyau spéciales activées. |
0xEA | IRQL actuel | Nombre de désactivations d’APC du thread | Adresse du pushlock | Un pilote a tenté d’acquérir un pushlock pendant que les API sont activées. |
0xEB | IRQL actuel | Nombre de désactivations d’APC du thread | Adresse du pushlock | Un pilote a tenté de libérer un pushlock pendant que les API sont activées. |
0xF0 | Adresse de la mémoire tampon de destination | Adresse de la mémoire tampon source | Nombre d’octets à copier | Un pilote appelé fonction memcpy avec des mémoires tampons source et de destination qui se chevauchent. |
0xF5 | Adresse du handle NULL | Type d’objet | Réservé | Un pilote a passé un handle NULL à ObReferenceObjectByHandle. |
0xF6 | Gérer la valeur référencée | Adresse du processus actuel | Adresse à l’intérieur du pilote qui effectue la référence incorrecte | Un pilote référence un handle en mode utilisateur en mode noyau. |
0xF7 | Gérer la valeur spécifiée par l’appelant | Type d’objet spécifié par l’appelant | AccessMode spécifié par l’appelant | Un pilote tente une référence en mode utilisateur pour un handle de noyau dans le contexte du processus système. |
0xFA | Adresse de routine d’achèvement. | Valeur IRQL avant qu’elle appelle la routine d’achèvement | Valeur IRQL actuelle, après avoir appelé la routine d’achèvement | La routine d’achèvement IRP retournée à un IRQL différent de la routine IRQL a été appelée. |
0xFB | Adresse de routine d’achèvement | Nombre de désactivations d’APC du thread actuel | Nombre de désactivations d’APC du thread avant d’appeler la routine d’achèvement IRP | Le nombre de désactivations d’APC du thread a été modifié par la routine d’achèvement IRP du pilote. Le nombre de désactivations d’APC est décrémenté chaque fois qu’un pilote appelle KeEnterCriticalRegion, FsRtlEnterFileSystem ou acquiert un mutex. Le nombre de désactivations d’APC est incrémenté chaque fois qu’un pilote appelle KeLeaveCriticalRegion, KeReleaseMutex ou FsRtlExitFileSystem. Étant donné que ces appels doivent toujours être en paires, le nombre de désactivations d’APC doit être égal à zéro chaque fois qu’un thread est arrêté. Une valeur négative indique qu’un pilote a désactivé les appels APC sans les réactiver. Une valeur positive indique que l’inverse est vrai. |
0xFC | Adresse à l’intérieur du pilote effectuant l’appel d’API incorrect. | Valeur ApcContext fournie. | Réservé | Appel de ZwNotifyChangeKey (en mode noyau) avec une valeur ApcContext non prise en charge. |
0x105 à 0x140
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x105 | Adresse de l’IRP | 0 | 0 | Le pilote utilise ExFreePool au lieu d’IoFreeIrp pour libérer l’IRP. |
0x10A | 0 | 0 | 0 | Le pilote tente de facturer le quota de pool au processus inactif. |
0x10B | 0 | 0 | 0 | Le pilote tente de charger le quota de pool à partir d’une routine DPC. Cela est incorrect, car le contexte de processus actuel n’est pas défini. |
0x110 | Adresse de la routine de service d’interruption | Adresse du contexte étendu enregistré avant l’exécution de l’ISR | L’adresse du contexte étendu a été enregistrée après l’exécution de l’ISR | La routine de service d’interruption (ISR) du pilote a endommagé le contexte de thread étendu. |
0x111 | Adresse de la routine de service d’interruption | IRQL avant d’exécuter ISR | IRQL après l’exécution d’ISR | La routine de service d’interruption a retourné un IRQL modifié. |
0x115 | Adresse du thread responsable de l’arrêt, qui peut être bloquée. | 0 | 0 | Le vérificateur de pilote a détecté que le système a pris plus de 20 minutes et que l’arrêt n’est pas terminé. |
0x11A | IRQL actuel | 0 | 0 | Le pilote appelle KeEnterCriticalRegion à IRQL > APC_LEVEL. |
0x11B | IRQL actuel | 0 | 0 | Le pilote appelle KeLeaveCriticalRegion à IRQL > APC_LEVEL. |
0x120 | Adresse de la valeur IRQL | Adresse de l’objet à attendre | Adresse de la valeur du délai d’expiration | Le thread attend au DISPATCH_LEVEL IRQL > . Les appelants de KeWaitForSingleObject ou KeWaitForMultipleObjects doivent s’exécuter sur IRQL <= DISPATCH_LEVEL. |
0x121 | Adresse de la valeur IRQL | Adresse de l’objet à attendre | Adresse de la valeur du délai d’expiration | Le thread attend à IRQL est égal à DISPATCH_LEVEL et le délai d’expiration est NULL. Les appelants de KeWaitForSingleObject ou KeWaitForMultipleObjects peuvent s’exécuter sur IRQL <= DISPATCH_LEVEL. Si un pointeur NULL est fourni pour timeout, le thread appelant reste dans un état d’attente jusqu’à ce que l’objet soit signalé. |
0x122 | Adresse de la valeur IRQL | Adresse de l’objet à attendre | Adresse de la valeur du délai d’expiration | Le thread attend à DISPATCH_LEVEL et la valeur du délai d’attente n’est pas égale à zéro (0). Si le délai d’expiration != 0, les appelants de KeWaitForSingleObject ou KeWaitForMultipleObjects doivent s’exécuter à IRQL <= APC_LEVEL. |
0x123 | Adresse de l’objet à attendre | 0 | 0 | L’appelant de KeWaitForSingleObject ou KeWaitForMultipleObjects a spécifié l’attente en tant que UserMode, mais l’objet se trouve sur la pile du noyau. |
0x130 | Adresse de l’élément de travail | 0 | 0 | L’élément de travail se trouve dans l’espace d’adressage de session. Les éléments de travail ne sont pas autorisés dans l’espace d’adressage de session, car ils peuvent être manipulés à partir d’une autre session ou à partir de threads système qui n’ont pas d’espace d’adressage virtuel de session. |
0x131 | Adresse de l’élément de travail | 0 | 0 | L’élément de travail est en mémoire paginable. Les éléments de travail doivent être en mémoire non modifiable, car le noyau les utilise à DISPATCH_LEVEL. |
0x135 | Adresse du protocole IRP | Nombre de millisecondes autorisées entre l’appel IoCancelIrp et l’achèvement de cet IRP | 0 | L’IRP annulé n’a pas été effectué dans le temps prévu Le pilote a pris plus de temps que prévu pour terminer l’IRP annulé. |
0x13A | Adresse du bloc de pool libéré | Valeur incorrecte | Adresse de la valeur incorrecte | Le pilote a appelé ExFreePool et Driver Verifier détecte une erreur dans l’une des valeurs internes utilisées pour suivre l’utilisation du pool. |
0x13B | Adresse du bloc de pool libéré | Adresse de la valeur incorrecte | Adresse d’un pointeur vers la page de mémoire incorrecte | Le pilote a appelé ExFreePool et Driver Verifier détecte une erreur dans l’une des valeurs internes utilisées pour suivre l’utilisation du pool. |
0x13C | Adresse du bloc de pool libéré | Valeur incorrecte | Adresse de la valeur incorrecte | Le pilote a appelé ExFreePool et Driver Verifier détecte une erreur dans l’une des valeurs internes utilisées pour suivre l’utilisation du pool. |
0x13D | Adresse du bloc de pool libéré | Adresse de la valeur incorrecte | Valeur correcte attendue | Le pilote a appelé ExFreePool et Driver Verifier détecte une erreur dans l’une des valeurs internes utilisées pour suivre l’utilisation du pool. |
0x13E | Adresse de bloc de pool spécifiée par l’appelant | Adresse de bloc de pool suivie par le vérificateur de pilote | Pointeur vers l’adresse de bloc de pool suivie par le vérificateur de pilote | L’adresse de bloc de pool spécifiée par l’appelant d’ExFreePool est différente de l’adresse suivie par le vérificateur de pilote. |
0x13F | Adresse du bloc de pool libéré | Nombre d’octets libérés | Pointeur vers le nombre d’octets suivis par le vérificateur de pilote | Le nombre d’octets de mémoire libérés dans l’appel à ExFreePool est différent du nombre d’octets suivis par Driver Verifier. |
0x140 | IRQL actuel | Adresse MDL | Adresse virtuelle associée à ce MDL | Un MDL non verrouillé a été construit à partir de la mémoire paginable ou tradable. |
0x141 | Adresse physique la plus élevée demandée par le pilote pour l’allocation | Nombre d’octets à allouer | 0 | Le pilote demande explicitement de la mémoire physique sous 4 Go. |
0x1000 à 0x100B - Interblocages
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x1000 | Adresse de la ressource | Réservé | Réservé | Interblocage automatique : le thread actuel a essayé de se récursivement et d’acquérir exclusivement une ressource qu’il possède uniquement partagée. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1001 | Adresse de la ressource qui était la cause finale de l’interblocage | Réservé | Réservé | Interblocage : une violation de hiérarchie de verrous a été trouvée. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. (Utilisez l’extension !deadlock pour plus d’informations.) |
0x1002 | Adresse de la ressource | Réservé | Réservé | Ressource non initialisée : une ressource a été acquise sans avoir été initialisée en premier. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1003 | Adresse de la ressource en cours de libération d’interblocage | Adresse de la ressource qui aurait dû être publiée en premier | Réservé | Publication inattendue : une ressource a été libérée dans un ordre incorrect. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1004 | Adresse de la ressource | Adresse du thread qui a acquis la ressource | Adresse du thread actuel | Thread inattendu : le thread incorrect libère une ressource. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1005 | Adresse de la ressource | Réservé | Réservé | Initialisation multiple : une ressource est initialisée plusieurs fois. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1007 | Adresse de la ressource | Réservé | Réservé | Ressource non renseignée : une ressource est libérée avant son acquisition. Une vérification de bogue avec ce paramètre se produit uniquement lorsque l’option De détection de blocage du vérificateur de pilote est active. |
0x1008 | Adresse de verrouillage | Réservé | Réservé | Le pilote a essayé d’acquérir un verrou à l’aide d’une API incompatible pour ce type de verrou. |
0x1009 | Adresse de verrouillage | Réservé | Réservé | Le pilote a essayé de libérer un verrou à l’aide d’une API incompatible pour ce type de verrou. |
0x100A | Adresse du thread de propriétaire | Réservé | Le thread arrêté possède le verrou. | |
0x100B | Adresse de verrouillage | Adresse du thread de propriétaire | Réservé | Le verrou supprimé appartient toujours à un thread. |
0x1010 | Objet d’appareil vers lequel l’IRP d’écriture a été émis. | Adresse de l’IRP. | System-Space Adresse virtuelle pour la mémoire tampon décrite par mdL. | Le contenu de mémoire tampon MDL indifférent pour l’écriture Irp a été modifié. |
0x1011 | Objet d’appareil vers lequel l’IRP d’écriture a été émis. | Adresse de l’IRP. | System-Space Adresse virtuelle pour la mémoire tampon décrite par mdL. | Le contenu de la mémoire tampon MDL indifférent pour read Irp a été modifié pendant la répartition ou la mémoire tampon sauvegardée par des pages factices. |
0x1012 | Pointeur vers la chaîne décrivant la violation. | Données impliquées dans cette altération (0 si elles ne sont pas utilisées). | Données impliquées dans cette altération (0 si elles ne sont pas utilisées). | Le stockage de l’état de l’extension du vérificateur a détecté une altération. |
0x1013 | Pointeur vers l’objet pilote. | Pointeur vers les rappels d’E/S d’origine capturés. | Réservé (inutilisé). | Le vérificateur a détecté une altération interne dans les rappels d’E/S d’origine capturés. |
0x2000 à 0x2005 - Problèmes d’intégrité du code
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x2000 | Adresse dans le code du pilote où l’erreur a été détectée. | Type de pool. | Balise de pool (si elle est fournie). | Problème d’intégrité du code : l’appelant a spécifié un type de pool exécutable. (Attendu : NonPagedPoolNx) |
0x2001 | Adresse dans le code du pilote où l’erreur a été détectée. | Protection des pages (WIN32_PROTECTION_MASK). | 0 | Problème d’intégrité du code : l’appelant a spécifié une protection de page exécutable. (Attendu : bits PAGE_EXECUTE* effacés) |
0x2002 | Adresse dans le code du pilote où l’erreur a été détectée. | Priorité de page (MM_PAGE_PRIORITY logiquement OR’d avec MdlMapping*). | 0 | Problème d’intégrité du code : l’appelant a spécifié un mappage MDL exécutable. (Attendu : MdlMappingNoExecute) |
0x2003 | Nom du fichier image (chaîne Unicode). | Adresse de l’en-tête de section. | Nom de la section (chaîne encodée UTF-8). | Problème d’intégrité du code : l’image contient une section exécutable et accessible en écriture. |
0x2004 | Nom du fichier image (chaîne Unicode). | Adresse de l’en-tête de section. | Nom de la section (chaîne encodée UTF-8). | Problème d’intégrité du code : l’image contient une section qui n’est pas alignée sur la page. |
0x2005 | Nom du fichier image (chaîne Unicode). | Répertoire IAT. | Nom de la section (chaîne encodée UTF-8). | Problème d’intégrité du code : l’image contient un IAT situé dans une section exécutable. |
0xA001 à 0xA00D - Problèmes de commutateur de machine virtuelle
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0xA001 | Pointeur vers l’objet NetBufferList | Pointeur vers l’objet de commutateur virtuel (si NON NULL) | Réservé (inutilisé) | Commutateur de machine virtuelle : SourceHandle pour netBufferList fourni par l’appelant doit être défini. Consultez la routine AllocateNetBufferListForwardingContext . |
0xA002 | Pointeur vers l’objet NetBufferList | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Réservé (inutilisé) | Commutateur de machine virtuelle : l’appelant a fourni les détails de transfert de NetBufferList n’est pas égal à zéro. Consultez la routine AllocateNetBufferListForwardingContext . |
0xA003 | Pointeur vers l’objet NetBufferList | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Réservé (inutilisé) | Commutateur de machine virtuelle : l’appelant a fourni un NetBufferList avec un en-tête de paquet ou un contexte de routage null. Consultez les instructions de gestion des paquets pour le chemin des données de commutateur extensible. |
0xA004 | ID du port non valide | Index de carte réseau | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Commutateur de machine virtuelle : l’appelant a spécifié une combinaison d’index de port et de carte réseau non valide. Consultez les états du port de commutateur extensible Hyper-V et de la carte réseau. |
0xA005 | Pointeur vers l’objet NetBufferList | Pointeur vers la liste de destination. | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Commutateur de machine virtuelle : l’appelant a fourni une destination non valide. Consultez AddNetBufferListDestination et UpdateNetBufferListDestinations. |
0xA006 | Pointeur vers l’objet NetBufferList | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Réservé (inutilisé) | Commutateur de machine virtuelle : l’appelant a fourni une carte réseau source ou un objet port non valide. Consultez les états du port de commutateur extensible Hyper-V et de la carte réseau. |
0xA007 | Pointeur vers l’objet NetBufferList | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Réservé (inutilisé) | Commutateur de machine virtuelle : l’appelant a fourni une liste de destination non valide. Consultez AddNetBufferListDestination et UpdateNetBufferListDestinations. |
0xA008 | Objet de carte réseau parente | Index de carte réseau | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Commutateur de machine virtuelle : tentative de référence d’une carte réseau lorsqu’elle n’est pas autorisée. Consultez les états du port de commutateur extensible Hyper-V et de la carte réseau. |
0xA009 | Port référencé | Pointeur vers l’objet de commutateur virtuel (si NON NULL) | Réservé (inutilisé) | Commutateur de machine virtuelle : tentative de référence d’un port lorsqu’il n’est pas autorisé. Consultez les états du port de commutateur extensible Hyper-V et de la carte réseau. |
0xA00A | Pointeur vers l’objet NetBufferList | Objet ContextTypeInfo | Réservé (inutilisé) | Commutateur de machine virtuelle : le contexte d’échec est déjà défini. Consultez SetNetBufferListSwitchContext. |
0xA00B | Pointeur vers l’objet NetBufferList | NDIS_SWITCH_REPORT_FILTERED_NBL_FLAGS_* | Pointeur vers l’objet de commutateur virtuel (si NON NULL) | Commutateur de machine virtuelle : direction non valide fournie pour netBufferList supprimé. Voir ReportFilteredNetBufferLists. |
0xA00C | Pointeur vers l’objet NetBufferList | Valeur Envoyer des indicateurs | Pointeur vers l’objet de commutateur virtuel (si NON NULL) | Commutateur de machine virtuelle : la chaîne NetBufferList a plusieurs ports sources lorsque NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE indicateur est défini. Consultez les indicateurs d’envoi et de réception du commutateur extensible Hyper-V. |
0xA00D | Pointeur vers l’objet NetBufferList | Pointeur vers le contexte de commutateur virtuel | Pointeur vers l’objet de commutateur virtuel (si NON NULL) | Commutateur de machine virtuelle : un ou plusieurs NetBufferLists dans la chaîne ont une destination non valide lorsque NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP indicateur est défini. Consultez les indicateurs d’envoi et de réception du commutateur extensible Hyper-V. |
0xA00E | Pointeur vers l’objet NetBufferLists. | Pointeur vers le contexte de commutateur virtuel. | Pointeur vers l’objet de commutateur virtuel (si NON-NULL). | Commutateur de machine virtuelle : tentative d’exécution de NetBufferList via WNV lorsque VMS_NBL_ROUTING_CONTEXT_FLAG_NO_WNV_PROCESSING indicateur est défini. |
0x00020002 à 0x00020022 - Violations des règles de conformité DDI
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00020002 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlApcLte. La règle spécifie que le pilote doit appeler ObGetObjectSecurity et ObReleaseObjectSecurity uniquement lorsque IRQL <= APC_LEVEL. |
0x00020003 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlDispatch. La règle IrqlDispatch spécifie que le pilote doit appeler certaines routines uniquement lorsque IRQL = DISPATCH_LEVEL |
0x00020004 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlExAllocatePool. La règle IrqlExAllocatePool spécifie que le pilote appelle ExAllocatePoolWithTag et ExAllocatePoolWithTagPriority uniquement quand à IRQL<=DISPATCH_LEVEL. |
0x00020005 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlExApcLte1. La règle IrqlExApcLte1 spécifie que le pilote appelle ExAcquireFastMutex et ExTryToAcquireFastMutex uniquement à IRQL <= APC_LEVEL. |
0x00020006 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlExApcLte2. La règle IrqlExApcLte2 spécifie que le pilote appelle certaines routines uniquement lorsque IRQL <= APC_LEVEL. |
0x00020007 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlExApcLte3. La règle IrqlExApcLte3 spécifie que le pilote doit appeler certaines routines de support exécutif uniquement lorsque IRQL <= APC_LEVEL. |
0x00020008 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlExPassive. La règle IrqlExPassive spécifie que le pilote doit appeler certaines routines de support exécutif uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x00020009 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoApcLte. La règle IrqlIoApcLte spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL <= APC_LEVEL. |
0x0002000A | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoPassive1. La règle IrqlIoPassive1 spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x0002000B | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoPassive2. La règle IrqlIoPassive2 spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x0002000C | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoPassive3. La règle IrqlIoPassive3 spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x0002000D | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoPassive4. La règle IrqlIoPassive4 spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x0002000E | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlIoPassive5. La règle IrqlIoPassive5 spécifie que le pilote doit appeler certaines routines de gestionnaire d’E/S uniquement lorsque IRQL = PASSIVE_LEVEL. |
0x0002000F | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlKeApcLte1. La règle IrqlKeApcLte1 spécifie que le pilote doit appeler certaines routines de noyau uniquement lorsque IRQL <= APC_LEVEL. |
0x00020010 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlKeApcLte2. La règle IrqlKeApcLte2 spécifie que le pilote doit appeler certaines routines de noyau uniquement lorsque IRQL <= APC_LEVEL. |
0x00020011 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlKeDispatchLte. La règle IrqlKeDispatchLte spécifie que le pilote doit appeler certaines routines de noyau uniquement lorsque IRQL <= DISPATCH_LEVEL. |
0x00020015 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlKeReleaseSpinLock. La règle IrqlKeReleaseSpinLock spécifie que le pilote doit appeler KeReleaseSpinLock uniquement quand IRQL = DISPATCH_LEVEL. |
0x00020016 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlKeSetEvent. La règle IrqlKeSetEvent spécifie que la routine KeSetEvent est appelée uniquement à IRQL <= DISPATCH_LEVEL lorsque Wait a la valeur FALSE, et à IRQL <= APC_LEVEL lorsque Wait a la valeur TRUE. |
0x00020019 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlMmApcLte. La règle IrqlMmApcLte spécifie que le pilote doit appeler certaines routines de gestionnaire de mémoire uniquement quand IRQL <= APC_LEVEL. |
0x0002001A | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlMmDispatch. La règle IrqlMmDispatch spécifie que le pilote doit appeler MmFreeContiguousMemory uniquement quand IRQL = DISPATCH_LEVEL. |
0x0002001B | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlObPassive. La règle IrqlObPassive spécifie que le pilote doit appeler ObReferenceObjectByHandle uniquement quand IRQL = PASSIVE_LEVEL. |
0x0002001C | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlPsPassive. La règle IrqlPsPassive spécifie que le pilote doit appeler certaines routines de processus et de gestionnaire de threads uniquement quand IRQL = PASSIVE_LEVEL. |
0x0002001D | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI IrqlReturn. |
0x0002001E | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlRtlPassive. La règle IrqlRtlPassive spécifie que le pilote doit appeler RtlDeleteRegistryValue uniquement quand IRQL = PASSIVE_LEVEL. |
0x0002001F | Pointeur vers la chaîne qui décrit la condition de règle violée. | Pointeur facultatif vers la ou les variables d’état de règle. | Réservé | Le pilote a violé la règle de conformité DDI IrqlZwPassive. La règle IrqlZwPassive spécifie que le pilote doit appeler ZwClose uniquement quand IRQL = PASSIVE_LEVEL. |
0x00020022 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le pilote a violé la règle de conformité DDI IrqlIoDispatch. |
0x00020023 | Pointeur vers la chaîne décrivant la condition de règle violée. | Réservé (inutilisé). | Réservé (inutilisé). | Le pilote a violé la règle de conformité DDI IrqlIoRtlZwPassive. La règle IrqlIoRtlZwPassive spécifie que le pilote appelle les DDIs répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL. |
0x00020024 | Pointeur vers la chaîne décrivant la condition de règle violée. | Réservé (inutilisé). | Réservé (inutilisé). | Le pilote a violé la règle de conformité DDI IrqlNtifsApcPassive. La règle IrqlNtifsApcPassive spécifie que le pilote appelle les DDIs répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL ou à IRQL <= APC_LEVEL. |
0x00020025 | Pointeur vers la chaîne décrivant la condition de règle violée. | Réservé (inutilisé). | Réservé (inutilisé). | Le pilote a violé la règle de conformité DDI interne Microsoft IrqlKeMore. |
0x00040003 à 0x00043006 - Violations des règles de conformité DDI
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00040003 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI CriticalRegions. |
0x00040006 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI QueuedSpinLock. |
0x00040007 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI QueuedSpinLockRelease. |
0x00040009 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI SpinLock. |
0x0004000A | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo) | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI SpinlockRelease. |
0x0004000E | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de conformité DDI GuardedRegions. |
0x0004100B | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le pilote a violé la règle de conformité DDI RequestedPowerIrp. |
0x0004100F | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI IoSetCompletionExCompleteIrp. |
0x00043006 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le pilote a violé la règle de conformité DDI PnpRemove. |
0x00081001 à 0x00082005 - Violations de la règle de conformité du pilote AVStream
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00081001 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsDeviceMutex. |
0x00081002 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsStreamPointerClone. |
0x00081003 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le pilote a violé la règle de conformité DDI KsStreamPointerLock. |
0x00081004 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsStreamPointerUnlock. |
0x00081005 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le conducteur a violé la règle de conformité DDI KsCallbackReturn. |
0x00081006 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsIrqlDeviceCallbacks. |
0x00081007 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsIrqlFilterCallbacks. |
0x00081008 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsIrqlPinCallbacks. |
0x00081009 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le pilote a violé la règle de conformité DDI KsIrqlDDIs. |
0x0008100A | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsFilterMutex. |
0x0008100B | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsProcessingMutex. |
0x0008100C | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsInvalidStreamPointer. |
0x00082001 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsTimedPinSetDeviceState. |
0x00082002 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsTimedDeviceCallbacks. |
0x00082003 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsTimedFilterCallbacks. |
0x00082004 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsTimedPinCallbacks. |
0x00082005 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI KsTimedProcessingMutex. |
0x00091001 à 0x0009400C - Violations de la règle de conformité NDIS DDI
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00091001 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI NdisOidComplete. |
0x00091002 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI NdisOidDoubleComplete. |
0x0009100E | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de conformité DDI NdisOidDoubleRequest. |
0x00092003 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisTimedOidComplete. |
0x0009200D | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisTimedDataSend. |
0x0009200F | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisTimedDataHang. |
0x00092010 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisFilterTimedPauseComplete. |
0x00092011 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisFilterTimedDataSend. |
0x00092012 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le pilote a violé la règle de vérification NDIS/WIFI NdisFilterTimedDataReceive. |
0x00093004 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanAssociation. |
0x00093005 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanConnectionRoaming. |
0x00093006 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanDisassociation. |
0x00093101 | Pointeur vers la chaîne décrivant la condition de règle violée. | Réservé (inutilisé) | Réservé (inutilisé) | Le conducteur a violé la règle de vérification NDIS/WIFI WlanAssert. |
0x00094007 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanTimedAssociation. |
0x00094008 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanTimedConnectionRoaming. |
0x00094009 | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI WlanTimedConnectRequest. |
0x0009400B | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI Sans FilTimedLinkQuality. |
0x0009400C | Pointeur vers la chaîne qui décrit la condition de règle violée. | Adresse de l’état de la règle interne (deuxième argument à !ruleinfo). | Adresse des états supplémentaires (troisième argument à !ruleinfo). | Le conducteur a violé la règle de vérification NDIS/WIFI Sans FilTimedScan. |
Cause
Consultez la description de chaque code dans la section Paramètres pour obtenir une description de la cause. Vous pouvez obtenir des informations supplémentaires à l’aide de l’extension !analyze -v .
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 bogues pour corriger les bogues dans votre code.
Pour plus d’informations sur le vérificateur de pilotes, consultez Driver Verifier.
Remarques
Les codes _POOL_TYPE sont énumérés dans Ntddk.h. En particulier, 0 (zéro) indique un pool non paginé et 1 (un ) indique un pool paginé.
(Windows 8 et versions ultérieures de Windows) Si la vérification de conformité DDI provoque une vérification des bogues, exécutez Static Driver Verifier sur le code source du pilote et spécifiez la règle de conformité DDI (identifiée par la valeur du paramètre 1) qui a provoqué la vérification de bogue. Static Driver Verifier peut vous aider à localiser la cause du problème dans votre code source.
Voir aussi
Gestion d’une vérification des bogues lorsque le vérificateur de pilote est activé