MiClearFilePointer
VOID __stdcall MiClearFilePointer(_CONTROL_AREA *ControlArea){
union {unsigned int LongFlags;_MMSECTION_FLAGS Flags;} v1;
unsigned __int64 Value;
_QWORD *v4;
v1.LongFlags = (unsigned int)ControlArea->u;
if( (v1.LongFlags & 0x80000) == 0 )
{
Value = ControlArea->FilePointer.Value;
ControlArea->u.LongFlags = v1.LongFlags | 0x80000;
ExAcquireSpinLockExclusiveAtDpcLevel(&SpinLock);
v4 = *(_QWORD **)((Value & 0xFFFFFFFFFFFFFFF0ui64) + 0x28);
if( (ControlArea->u.LongFlags & 0x20) != 0 )
v4[2] = 0i64;
else
*v4 = 0i64;
ExReleaseSpinLockExclusiveFromDpcLevel(&SpinLock);
}
}Referenced by:
MiCheckControlArea
MiDestroySection