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