KiHandleBound
NTSTATUS __stdcall KiHandleBound(){
_ETHREAD *CurrentThread;
NTSTATUS v1;
_EX_RUNDOWN_REF *v2;
_EX_RUNDOWN_REF *v3;
signed __int64 v4;
signed __int64 v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v1 = 0;
--CurrentThread->Tcb.KernelApcDisable;
v2 = ExReferenceCallBackBlock(&KiBoundsCallback);
v3 = v2;
if( v2 )
{
v1 = ((__int64(*)(void))v2[1].Count)();
_m_prefetchw(&KiBoundsCallback);
v4 = KiBoundsCallback;
while( ((unsigned __int64)v3 ^ v4) < 0xF )
{
v5 = v4;
v4 = _InterlockedCompareExchange64(&KiBoundsCallback, v4 + 1, v4);
if( v5 == v4 )
goto LABEL_6;
}
ExReleaseRundownProtection(v3);
}
LABEL_6:
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return v1;
}Referenced by:
KiBoundFault