MmResetDriverPaging
VOID __stdcall MmResetDriverPaging(VOID *AddressWithinSection){
_KLDR_DATA_TABLE_ENTRY *v1;
_KLDR_DATA_TABLE_ENTRY *v2;
UINT64 DllBase;
__int64 v4;
__int64 v5;
__int64 v6;
__int64 v7;
int v8;
_IMAGE_SECTION_HEADER *i;
union {unsigned int PhysicalAddress;unsigned int VirtualSize;} v10;
__int64 v11;
_MMPTE *PteAddress;
_MMPTE *v13;
v1 = MiImagePagable(0i64, AddressWithinSection);
v2 = v1;
if( v1 )
{
DllBase = (UINT64)v1->DllBase;
LODWORD(v4) = RtlImageNtHeader(DllBase);
v5 = v4;
MiCancelPhase0Locking(v2);
v6 = *(unsigned __int16 *)(v5 + 20);
v7 = v5 + 24;
v8 = *(unsigned __int16 *)(v5 + 6);
for( i = (_IMAGE_SECTION_HEADER *)(v6 + v7); v8; --v8 )
{
if( (i->Characteristics & 0x2000000) == 0 && !MmImageSectionPagable(i) )
{
v10.PhysicalAddress = i->SizeOfRawData;
if( v10.PhysicalAddress < i->Misc.PhysicalAddress )
v10.PhysicalAddress = (unsigned int)i->Misc;
MiGetPteAddress((VOID *)(i->VirtualAddress + (unsigned __int64)v10.PhysicalAddress + DllBase - 1));
PteAddress = MiGetPteAddress((VOID *)(v11 + DllBase));
MiLockCode(v2, PteAddress, v13, 2ui64);
}
++i;
}
}
}Referenced by:
No references.