KeEnterCriticalRegion 函数 (ntddk.h)
KeEnterCriticalRegion 例程暂时禁用正常内核 APC 的执行,但不阻止特殊内核 APC 运行。
语法
void KeEnterCriticalRegion();
返回值
没有
言论
驱动程序调用此例程以进入关键区域,在该区域中,正常内核 APC 的执行将延迟到此驱动程序通过调用 KeLeaveCriticalRegion 例程退出关键区域。 KeEnterCriticalRegion 的任何调用方都应在进入关键区域后尽快调用 KeLeaveCriticalRegion。
在请求当前 I/O作的线程上下文中运行时,最高级别的驱动程序可以调用 KeEnterCriticalRegion。
关键区域中的线程同时禁用了用户 APC 和普通内核 APC,但未禁用特殊内核 APC。 有关这些 APC 类型的详细信息,请参阅 类型 API。
关键区域可以递归输入,每个对 KeEnterCriticalRegion 的调用都必须具有匹配的调用来 KeLeaveCriticalRegion。
驱动程序可以使用关键区域来获取和释放对共享资源的独占访问权限。 在这种情况下,可以使用 ExEnterCriticalRegionAndAcquireResourceExclusive 和 ExReleaseResourceAndLeaveCriticalRegion 例程,而不是使用 KeEnterCriticalRegion 和 KeLeaveCriticalRegion 例程。 有关详细信息,请参阅 ExEnterCriticalRegionAndAcquireResourceExclusive中的代码示例。
有关 APC 的详细信息,请参阅 异步过程调用。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 普遍 |
标头 | ntddk.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI 符合性规则 | CriticalRegions(wdm)、HwStorPortProhibitedDIS(storport)、IrqlKeApcLte2(wdm)、WithinCriticalRegion(storport)、WithinCriticalRegion(storport)、WithinCriticalRegion(wdm) |
另请参阅
ExEnterCriticalRegionAndAcquireResourceExclusive