KeEnterCriticalRegion() vs. KeLeaveCriticalRegion() now ++/-- by reverse
- *Enter*() now adds, *Leave*() now subs; why the other way?
VOID STDCALL KeEnterCriticalRegion (VOID)
{
DPRINT("KeEnterCriticalRegion()\n");
- KeGetCurrentThread()->KernelApcDisable -= 1;
+ if (KeGetCurrentThread()->KernelApcDisable<0)
+ KeBugCheck(0);
+ KeGetCurrentThread()->KernelApcDisable += 1;
}
VOID STDCALL KeLeaveCriticalRegion (VOID)
{
DPRINT("KeLeaveCriticalRegion()\n");
- KeGetCurrentThread()->KernelApcDisable += 1;
+ if (KeGetCurrentThread()->KernelApcDisable<=0)
+ KeBugCheck(0);
+ KeGetCurrentThread()->KernelApcDisable -= 1;
}
/* EOF */