KeEnterCriticalRegion, fonction (ntddk.h)
La routine KeEnterCriticalRegion désactive temporairement l’exécution des API de noyau normales, mais n’empêche pas l’exécution des API de noyau spéciales.
Syntaxe
void KeEnterCriticalRegion();
Valeur de retour
None
Remarques
Un pilote appelle cette routine pour entrer dans une région critique dans laquelle l’exécution des API de noyau normales est différée jusqu’à ce que ce pilote quitte la région critique en appelant la routine KeLeaveCriticalRegion . Tout appelant de KeEnterCriticalRegion doit appeler KeLeaveCriticalRegion aussi rapidement que possible après avoir entré une région critique.
Les pilotes de niveau supérieur peuvent appeler KeEnterCriticalRegion lors de l’exécution dans le contexte du thread qui a demandé l’opération d’E/S actuelle.
Un thread qui se trouve à l’intérieur d’une région critique a à la fois des API utilisateur et des API de noyau normales désactivées, mais pas des API de noyau spéciales. Pour plus d’informations sur ces types APC, consultez Types d’API.
Les régions critiques peuvent être entrées de manière récursive et chaque appel à KeEnterCriticalRegion doit avoir un appel correspondant à KeLeaveCriticalRegion.
Un pilote peut utiliser une région critique pour acquérir et libérer un accès exclusif à une ressource partagée. Dans ce cas, les routines ExEnterCriticalRegionAndAcquireResourceExclusive et ExReleaseResourceAndLeaveCriticalRegion peuvent être utilisées à la place des routines KeEnterCriticalRegion et KeLeaveCriticalRegion . Pour plus d’informations, consultez l’exemple de code dans ExEnterCriticalRegionAndAcquireResourceExclusive.
Pour plus d’informations sur les API, consultez Appels de procédure asynchrone.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | ntddk.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Règles de conformité DDI | CriticalRegions(wdm), HwStorPortProhibitedDDDIs(storport), IrqlKeApcLte2(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Voir aussi
ExEnterCriticalRegionAndAcquireResourceExclusive