MiCompareTbFlushTimeStamp
UINT8 __stdcall MiCompareTbFlushTimeStamp(UINT64 OldStamp, UINT64 Mask, INT64 a3, INT64 a4, UINT64 a5){
int v5;
int v6;
int v7;
unsigned int v8;
signed __int32 v10[10];
UINT64 SpinCount;
v5 = Mask;
v6 = OldStamp & 1;
v7 = OldStamp;
while( 1 )
{
_InterlockedOr(v10, 0);
v8 = v5 & (KiTbFlushTimeStamp - v7);
if( v8 > 2 || !v6 && v8 >= 2 )
return 0;
if( (KiTbFlushTimeStamp & 1) == 0 )
break;
LODWORD(SpinCount) = 0;
_InterlockedOr(v10, 0);
while( _bittest((const signed __int32 *)&KiTbFlushTimeStamp, 0) )
KeYieldProcessorEx(&SpinCount);
if( !v6 )
return 0;
}
return 1;
}Referenced by:
MiAttachSession
MiFlushTbAsNeeded
MiObtainSystemCacheView
MmMapViewInSystemCache