Partager via


Vérification MDL invariante pour stack

L’option Invariant MDL Checking for Stack surveille la façon dont le pilote gère les mémoires tampons MDL invariantes sur la pile de pilotes. Le vérificateur de pilotes peut détecter la modification illégale de mémoires tampons MDL invariantes. Pour utiliser cette option, la vérification des E/S doit être activée sur au moins un pilote.

Note Cette option est disponible à partir de Windows 8.

L’option Invariant MDL Checking for Stack garantit que les pilotes suivent les règles pour les tampons MDL invariants uniquement au moment où la demande quitte la pile des pilotes.

La première fois qu’un IRP avec MDL invariant est vu dans la routine IoCallDriver , une signature unique est calculée à partir du contenu de la mémoire tampon MDL invariante et stockée dans une base de données interne. Lors de l’achèvement de l’IRP dans la routine IoCompleteRequest , si l’IRP comporte toujours un MDL invariant pour lequel nous avons enregistré la signature, driver verifier valide que la mémoire tampon n’a pas changé.

Une mémoire tampon invariante, pour la demande d’écriture, ne peut pas être modifiée pendant toute la durée de vie de l’IRP. Pour une demande de lecture, une mémoire tampon invariante ne peut pas être modifiée sur son chemin de répartition, de sorte que la comparaison de la signature de mémoire tampon est effectuée lors du dernier appel à IoCallDriver.

L’option Invariant MDL Checking for Stack vérifie l’invariance de mémoire tampon MDL sur l’ensemble de la pile des pilotes, sans tenir compte de ce qui se passe à la mémoire tampon quand elle traverse des pilotes individuels dans la pile. Cette option est globale et ne peut pas être appliquée de manière sélective sur une base par pilote. L’option Invariant MDL Checking for Stack peut uniquement intercepter la violation, sans être en mesure d’identifier le pilote qui a violé l’invariance de la mémoire tampon. Pour vous aider à identifier le pilote défectueux, utilisez l’option Invariant MDL Checking for Driver , qui effectue la validation de l’invariance du contenu de la mémoire tampon sur chaque appel aux DDIs IoCallDriver et IoCompleteRequest .

Activation de cette option

Vous pouvez activer la fonctionnalité Vérification MDL invariante pour la pile pour un ou plusieurs pilotes à l’aide du Gestionnaire du vérificateur de pilotes ou de la ligne de commande Verifier.exe. Vous devez redémarrer l’ordinateur pour activer ou désactiver l’option Invariant MDL Checking for Stack. Pour plus d’informations, consultez Sélection des options du vérificateur de pilote.

Pour activer l’option Vérification MDL invariante pour la pile, vous devez également activer la vérification des E/S.

  • Sur la ligne de commande

    Sur la ligne de commande, la vérification MDL invariante pour stack est représentée par 0x00002000 (bit 13). Pour activer la vérification MDL invariante pour la pile, utilisez une valeur d’indicateur de 0x00002010 ou ajoutez 0x00002010 à la valeur de l’indicateur. Cette valeur active la vérification des E/S (0x10) et la vérification MDL invariante pour stack (0x00002000). Par exemple :

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    La fonctionnalité sera active après le prochain démarrage.

  • Utilisation du Gestionnaire de vérificateur de pilotes

    1. Démarrez le Gestionnaire de vérificateur de pilotes. Tapez Vérificateur dans une fenêtre d’invite de commandes.
    2. Sélectionnez Créer des paramètres personnalisés (pour les développeurs de code), puis cliquez sur Suivant.
    3. Sélectionnez Sélectionner des paramètres individuels dans une liste complète.
    4. Sélectionnez (case activée) Vérification des E/S et Vérification MDL invariante pour stack.
    5. Redémarrez l'ordinateur.