KeEnterCriticalRegion routine
KeEnterCriticalRegion 例程展示禁用普通内核APC的执行,但不禁止特殊内核APC的运行。
Syntax
VOID KeEnterCriticalRegion(void);
Parameters
无参
Return value
None
Remarks
驱动程序调用这个例程进入一个关键区,在此关键区域中APC被推后执行直到驱动程序退出这个关键区。调用KeLeaveCriticalRegion 能退出关键区。在进入关键区后调用者应当尽快调用KeLeaveCriticalRegion 退出关键区。高层的驱动程序可以在当前线程请求当前IO操作的上下文中调用KeEnterCriticalRegion 。在关键区中的线程同时禁用了用户APC和内核APC。但无法禁用特殊内核APC,有关APC类型的详细信息见: Types of APCs.
关键区能被递归进入,每个 KeEnterCriticalRegion 都必须有个匹配的 KeLeaveCriticalRegion.
驱动程序能使用一个关键区去获取和释放一个共享资源的独占的访问权,在这种情况下,例程ExEnterCriticalRegionAndAcquireResourceExclusive 和ExReleaseResourceAndLeaveCriticalRegion 能代替 KeEnterCriticalRegion 和KeLeaveCriticalRegion ,详见代码示例:ExEnterCriticalRegionAndAcquireResourceExclusive.
有关APC的更多信息,见Asynchronous Procedure Calls.
Requirements
Target platform | |
Version | Available starting with Windows 2000. |
Header | Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI compliance rules | CriticalRegions, IrqlKeApcLte2, WithinCriticalRegion, HwStorPortProhibitedDDIs,WithinCriticalRegion(storport) |
See also
ExEnterCriticalRegionAndAcquireResourceExclusive
ExReleaseResourceAndLeaveCriticalRegion