KeEnterCriticalRegion 函数 (ntddk.h)

KeEnterCriticalRegion 例程暂时禁用正常内核 APC 的执行,但不阻止特殊内核 APC 的运行。

语法

void KeEnterCriticalRegion();

返回值

备注

驱动程序调用此例程以进入一个关键区域,在正常内核 APC 的执行延迟到此驱动程序通过调用 KeLeaveCriticalRegion 例程退出关键区域为止。 KeEnterCriticalRegion 的任何调用方都应在进入关键区域后尽快调用 KeLeaveCriticalRegion

在请求当前 I/O 操作的线程上下文中运行时,最高级别的驱动程序可以调用 KeEnterCriticalRegion

位于关键区域内的线程同时禁用了用户 APC 和普通内核 APC,但未禁用特殊内核 APC。 有关这些 APC 类型的详细信息,请参阅 APC 的类型

可以递归方式输入关键区域,并且对 KeEnterCriticalRegion 的每次调用都必须具有对 KeLeaveCriticalRegion 的匹配调用。

驱动程序可以使用关键区域来获取和释放对共享资源的独占访问权限。 在这种情况下,可以使用 ExEnterCriticalRegionAndAcquireResourceExclusiveExReleaseResourceAndLeaveCriticalRegion 例程,而不是 KeEnterCriticalRegionKeLeaveCriticalRegion 例程。 有关详细信息,请参阅 ExEnterCriticalRegionAndAcquireResourceExclusive 中的代码示例。

有关 APC 的详细信息,请参阅 异步过程调用

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 符合性规则 CriticalRegions (wdm) HwStorPortProhibitedDDI (storport) IrqlKeApcLte2 (wdm) InCriticalRegion (storport) 、InCriticalRegion (storport) 、 WithinCriticalRegion (wdm)

另请参阅

ExEnterCriticalRegionAndAcquireResourceExclusive

ExReleaseResourceAndLeaveCriticalRegion

KeAreApcsDisabled

KeLeaveCriticalRegion