Partager via


0x10D de vérification des bogues : WDF_VIOLATION

Le case activée de bogue WDF_VIOLATION a la valeur 0x0000010D. Cela indique que Kernel-Mode Framework du pilote (KMDF) a détecté que Windows a trouvé une erreur dans un pilote basé sur l’infrastructure.

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.

paramètres de WDF_VIOLATION

Le paramètre 1 indique le code d’erreur spécifique du bogue case activée. Le paramètre 4 est réservé.

Paramètre 1 Paramètre 2 Paramètre 3 Cause de l’erreur

0x1

Pointeur vers une structure de WDF_POWER_ROUTINE_TIMED_OUT_DATA

Réservé

Un pilote basé sur l’infrastructure a expiré pendant une opération d’alimentation. Cela signifie généralement que la pile de périphériques n’a pas défini le bit DO_POWER_PAGABLE et qu’un pilote a tenté une opération paginable après la mise hors tension de la pile de périphériques de pagination.

0x2

Réservé

Réservé

On tente d’acquérir un verrou qui est en cours de détention.

0x3

Handle WDFREQUEST

Nombre de références en attente qui restent sur les deux mémoires tampons

Le vérificateur de l’infrastructure du pilote Windows a rencontré une erreur irrécupérable. En particulier, une demande d’E/S a été effectuée, mais un objet de demande d’infrastructure ne peut pas être supprimé, car il existe des références en suspens à la mémoire tampon d’entrée, à la mémoire tampon de sortie, ou aux deux.

0x4

Réservé

Adresse de l’appelant

Un paramètre NULL a été passé à une fonction qui nécessitait une valeur non NULL .

0x5

Valeur de handle passée

Réservé

Un handle d’objet framework du type incorrect a été passé à une méthode d’objet framework.

0x6

Consultez le tableau ci-dessous.

0x7

Handle de l’objet framework

Réservé

Un pilote a tenté de supprimer un objet framework de manière incorrecte en appelant WdfObjectDereference pour supprimer un handle au lieu d’appeler WdfObjectDelete.

0x8

Handle de l’objet de transaction DMA

Réservé

Une opération s’est produite sur un objet de transaction DMA alors qu’il n’était pas dans l’état correct.

0x9

Actuellement inutilisé.

0xA

Pointeur vers une structure de WDF_QUEUE_FATAL_ERROR_DATA

Réservé

Une erreur irrécupérable s’est produite lors du traitement d’une demande qui se trouve actuellement dans la file d’attente.

0xB

Consultez le tableau ci-dessous.

0xC

Handle WDFDEVICE

Pointeur vers le nouvel IRP PnP

Une nouvelle IRP PnP à changement d’état est arrivée alors que le pilote traitait une autre IRP PnP à changement d’état.

0xD

Handle WDFDEVICE

Pointeur vers l’IRP d’alimentation

Le propriétaire de la stratégie d’alimentation d’un appareil a reçu un IRP d’alimentation qu’il n’a pas demandé. Il peut y avoir plusieurs propriétaires de stratégie d’alimentation, mais un seul est autorisé. Un pilote KMDF peut modifier la propriété de la stratégie d’alimentation en appelant WdfDeviceInitSetPowerPolicyOwnership.

0xE

IRQL auquel la fonction de rappel d’événement a été appelée.

IRQL auquel la fonction de rappel d’événement a retourné.

Une fonction de rappel d’événement n’a pas été retournée au même IRQL que celui auquel elle a été appelée. La fonction de rappel a modifié l’IRQL directement ou indirectement (par exemple, en acquérant un verrouillage tournant, qui déclenche IRQL à DISPATCH_LEVEL, mais ne libère pas le verrouillage tournant).

0xF

Adresse d’une fonction de rappel d’événement.

Réservé

Une fonction de rappel d’événement est entrée dans une région critique, mais elle n’a pas quitté la région critique avant de revenir.

Le paramètre 1 est égal à 0x6

Si le paramètre 1 est égal à 0x6, une erreur irrécupérable a été générée lors de la gestion d’une requête WDF. Dans ce cas, le paramètre 2 spécifie en outre le type d’erreur irrécupérable qui a été effectuée, tel que défini par l’énumération WDF_REQUEST_FATAL_ERROR.

Paramètre 2 Paramètre 3 Cause de l’erreur

0x1

Adresse de l’IRP

Plus aucun emplacement de pile d’E/S n’est disponible pour mettre en forme l’IRP sous-jacent.

0x2

Valeur de handle de requête WDF

Une tentative de mise en forme d’un objet de demande d’infrastructure qui ne contenait pas d’IRP a été effectuée.

0x3

Valeur de handle de requête WDF

Le pilote a tenté d’envoyer une demande d’infrastructure qui a déjà été envoyée à une cible d’E/S.

0x4

Pointeur vers une structure WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA qui contient un pointeur vers l’IRP, une valeur de handle de requête WDF, une fonction principale IRP et le nombre d’octets tentés d’être écrits

Le pilote a terminé une demande d’infrastructure, mais a écrit plus d’octets dans la mémoire tampon de sortie que ce qui est spécifié dans l’IRP.

Le paramètre 1 est égal à 0xB

Si le paramètre 1 est égal à 0xB, une tentative d’acquisition ou de libération d’un verrou n’était pas valide. Dans ce cas, le paramètre 3 spécifie en outre l’erreur qui a été générée.

Paramètre 2 Paramètre 3 Cause de l’erreur

Valeur de handle

0x0

Un handle passé à WdfObjectAcquireLock ou WdfObjectReleaseLock représente un objet qui ne prend pas en charge les verrous de synchronisation.

Une poignée de verrouillage de rotation WDF

0x1

Le verrou de rotation est libéré par un thread qui ne l’a pas acquis.

Cause

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

Résolution

L’extension de débogage !analyze affiche des informations sur le bogue case activée et peut être utile pour collecter des informations, telles que le module de code défaillant.

En règle générale, le fichier de vidage WDF génère des informations supplémentaires sur le pilote à l’origine de ce bogue case activée. Utilisez cette commande pour examiner le fichier journal.

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

Si le paramètre 1 est égal à 0x2, examinez la pile de l’appelant pour déterminer le verrou en question.

Si le paramètre 1 est égal à 0x3, le journal des erreurs Kernel-Mode Driver Framework du pilote inclut des détails sur les références en suspens.

Si le paramètre 1 est égal à 0x4, utilisez la commande ln débogueur avec la valeur paramètre 3 comme argument pour déterminer la fonction qui nécessite un paramètre non NULL .

Si le paramètre 1 est égal à 0x7, utilisez la commande d’extension !wdfkd.wdfhandleParameter 2 pour déterminer le type de handle.

Si le paramètre 1 est égal à 0xA, la structure WDF_QUEUE_FATAL_ERROR_DATA indique la requête problématique ou le handle de file d’attente. Il indique également le NTSTATUS, s’il n’est pas STATUS_SUCCESS, lorsqu’il est disponible.