ExReleaseFastMutexUnsafeAndLeaveCriticalRegion
VOID __stdcall ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(_FAST_MUTEX *FastMutex){
unsigned __int32 v2;
_ETHREAD *CurrentThread;
bool v4;
FastMutex->Owner = 0i64;
v2 = _InterlockedCompareExchange(&FastMutex->Count, 1, 0);
if( v2 )
ExpReleaseFastMutexContended(FastMutex, v2);
KeAbPostRelease(FastMutex);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v4 = CurrentThread->Tcb.KernelApcDisable++ == -1;
if( v4
&& ($F25F8C4BA33AF922A5F1AF68CD89DDDF *)CurrentThread->Tcb.ApcState.ApcListHead[0].Flink != &CurrentThread->Tcb.152
&& !CurrentThread->Tcb.SpecialApcDisable )
{
KiCheckForKernelApcDelivery();
}
}Referenced by:
No references.