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.