Règle IrqlZwPassive (wdm)
La règle IrqlZwPassive spécifie que le pilote appelle ZwClose uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL.
Modèle de pilote : WDM
Bogues case activée trouvés avec cette règle : 0xC4 de vérification des bogues : DRIVER_VERIFIER_DETECTED_VIOLATION (0x2001F)
Exemple
Le code suivant enfreint cette règle :
NTSTATUS
DriverCloseResources (
_In_ PDRIVER_CONTEXT Context
)
{
…
NT_ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL);
//
// ExAcquireFastMutex sets the IRQL to APC_LEVEL, and the caller continues
// to run at APC_LEVEL after ExAcquireFastMutex returns.
//
ExAcquireFastMutex(&Context->FastMutex);
....
if (NULL != Context->Handle) {
//
// RULE VIOLATION! - ZwClose can be called only at PASSIVE_LEVEL
//
ZwClose(Context->Handle);
Context->Handle = NULL;
}
....
//
// N.B. ExReleaseFastMutex restores the original IRQL.
//
ExReleaseFastMutex(&Context->FastMutex);
....
}
Comment tester
Au moment de la compilation |
---|
Exécutez Static Driver Verifier et spécifiez la règle IrqlZwPassive . Utilisez les étapes suivantes pour exécuter l’analyse de votre code :
Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes. |
Au moment de l'exécution |
---|
Exécutez Driver Verifier et sélectionnez l’option de vérification de conformité DDI . |
S’applique à
ZwCloseZwCreateKeyZwDeleteKeyZwEnumerateKey ZwEnumerateValueKeyZwFlushKeyZwOpenKeyZwQueryKeyZwQueryValueKey ZwQueryValueKeyZwSetValueKey
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour