MiGetControlAreaPtes
unsigned __int64 __fastcall MiGetControlAreaPtes(__int64 a1){
int v1;
volatile LONG *v4;
unsigned __int64 v5;
_SUBSECTION *LastSubsection;
unsigned __int64 v7;
v1 = *(_DWORD *)(a1 + 56);
if( (v1 & 0x20) != 0 || !*(_QWORD *)(a1 + 64) || (v1 & 0x400) != 0 )
return *(unsigned int *)(*(_QWORD *)a1 + 8i64) | ((unsigned __int64)(*(_WORD *)(*(_QWORD *)a1 + 12i64) & 0x3FF) << 32);
v4 = (volatile LONG *)(a1 + 72);
v5 = ExAcquireSpinLockShared((PEX_SPIN_LOCK)(a1 + 72));
LastSubsection = MiFindLastSubsection((_CONTROL_AREA *)a1, 1ui64);
v7 = (*((unsigned int *)LastSubsection + 9) | ((unsigned __int64)(*((_WORD *)LastSubsection + 16) & 0xFFC0) << 26))
+ *((unsigned int *)LastSubsection + 11)
- (unsigned __int64)(*((_DWORD *)LastSubsection + 13) & 0x3FFFFFFF);
ExReleaseSpinLockSharedFromDpcLevel(v4);
__writecr8(v5);
return v7;
}Referenced by:
MiMapViewOfDataSection
MiPfPrepareSequentialReadList