Règle CriticalRegions (wdm)

La règle CriticalRegions spécifie que le pilote doit appeler KeEnterCriticalRegion avant d’appeler KeLeaveCriticalRegion et que le pilote appelle KeLeaveCriticalRegion avant tout appel ultérieur à KeEnterCriticalRegion. (Les appels imbriqués sont autorisés.)

Cette règle spécifie également que le pilote appelle KeLeaveCriticalRegion pour réactiver la remise des appels de procédure asynchrone (APC) de noyau normal avant qu’il ne retourne.

La documentation WDK de KeEnterCriticalRegion et KeLeaveCriticalRegion explique que l’appelant de ces fonctions peut s’exécuter sur IRQL<=APC_LEVEL. Dans ce cas, cette règle applique une recommandation de bonne pratique.

Modèle de pilote : WDM

Bogues case activée trouvés avec cette règle : Vérification des bogues 0xC4 : DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040003)

Comment tester

Au moment de la compilation

Exécutez Static Driver Verifier et spécifiez la règle CriticalRegions .

Utilisez les étapes suivantes pour exécuter l’analyse de votre code :
  1. Préparez votre code (utilisez les déclarations de type).
  2. Exécutez le vérificateur de pilote statique.
  3. Affichez et analysez les résultats.

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 Vérification de conformité DDI (supplémentaire).

S’applique à

ExEnterCriticalRegionAndAcquireResourceExclusiveExReleaseResourceAndLeaveCriticalRegionKeEnterCriticalRegionKeLeaveCriticalRegion