MiCreateForkWsles
VOID __stdcall MiCreateForkWsles(){
_MMPTE *PteBase;
_MMSUPPORT_FULL *p_Vm;
_MMPTE *v2;
__int64 v3;
_MMPTE *v4;
_MMSUPPORT_SHARED *SharedVm;
UINT8 v6;
UINT8 v7;
UINT64 PagingLevel;
PteBase = MmGetPteBase();
p_Vm = &KeGetCurrentThread()->ApcState.Process->Vm;
v2 = PteBase;
v3 = 3i64;
v4 = PteBase + 0x7FFFFFFFFi64;
do
{
v2 = (_MMPTE *)((char *)PteBase + (((unsigned __int64)v2 >> 9) & 0x7FFFFFFFF8i64));
v4 = (_MMPTE *)((char *)PteBase + (((unsigned __int64)v4 >> 9) & 0x7FFFFFFFF8i64));
--v3;
}
while( v3 );
SharedVm = MiGetSharedVm(&p_Vm->Instance);
v6 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
SharedVm->GoodCitizenWaiting = 0;
LODWORD(PagingLevel) = 3;
v7 = v6;
MiCreateForkWsle(&p_Vm->Instance, v6, v2, v4, PagingLevel);
MiUnlockWorkingSetExclusive(&p_Vm->Instance, v7);
}Referenced by:
MiCloneProcessAddressSpace