MiLockPagableSections
VOID __stdcall MiLockPagableSections(_KLDR_DATA_TABLE_ENTRY *DataTableEntry, UINT64 Lockdown){
char *DllBase;
int v3;
__int64 v4;
int v5;
_IMAGE_SECTION_HEADER *v6;
DllBase = (char *)DataTableEntry->DllBase;
v3 = Lockdown;
if( MiImagePagable(DataTableEntry, DllBase) )
{
LODWORD(v4) = RtlImageNtHeader((UINT64)DllBase);
v5 = *(unsigned __int16 *)(v4 + 6);
v6 = (_IMAGE_SECTION_HEADER *)(*(unsigned __int16 *)(v4 + 20) + v4 + 24);
if( *(_WORD *)(v4 + 6) )
{
do
{
if( MmImageSectionPagable(v6) )
{
if( v3 == 1 )
MmLockPagableDataSection(&DllBase[v6->VirtualAddress]);
else
MiLockPagableImageSection(v6, 0);
}
++v6;
--v5;
}
while( v5 );
}
}
}Referenced by:
MiCancelPhase0Locking
MiEnablePagingTheExecutive
MiUnlockBootPageSections