关键区域和受保护区域
在禁用用户 APC 和正常内核 APC 的情况下,位于 关键区域中 的线程执行。 受保护的区域中的线程在禁用所有 APC 的情况下运行。
关键区域
驱动程序可以进入和退出关键区域,如下所示:
调用 KeEnterCriticalRegion 以进入关键区域。
调用 KeLeaveCriticalRegion 退出关键区域。
每次调用 KeEnterCriticalRegion 都必须具有对 KeLeaveCriticalRegion 的匹配调用。
受保护的区域
驱动程序可以进入和退出受保护的区域,如下所示:
调用 KeEnterGuardedRegion 以进入受保护的区域。
调用 KeLeaveGuardedRegion 以离开受保护的区域。
对 KeEnterGuardedRegion 的每次调用都必须具有对 KeLeaveGuardedRegion 的匹配调用。
为 Windows Server 2003 及更高版本的 Windows 开发的驱动程序可以使用受保护的区域来禁用特殊的内核 APC。 为早期操作系统开发的驱动程序可以通过调用 KeRaiseIrql 将当前 IRQL 提高到 APC_LEVEL来禁用特殊内核 APC。 使用 KeLowerIrql 将当前 IRQL 降低到以前的值。