MiCommitPagefileBackedSection
NTSTATUS __stdcall MiCommitPagefileBackedSection(
_EPROCESS *Process,
_MMVAD *Vad,
VOID *StartingAddress,
VOID *EndingAddress,
UINT64 NewProtectWin32,
UINT64 *CapturedOldProtect,
UINT64 *Locked,
UINT64 *a8,
UINT64 *AnyPageLocked){
VOID *v10;
int v12;
unsigned __int64 v13;
unsigned __int64 v14;
_MMPTE *v15;
_MMPTE *v16;
UINT64 v17;
NTSTATUS result;
_MMPTE *v19;
UINT64 NewProtect;
UINT64 v21;
ULONG_PTR Processa;
Processa = (unsigned int)Process;
v10 = StartingAddress;
v12 = MmCompatibleProtectionMask[((unsigned __int64)Vad->Core.u.LongFlags >> 7) & 7] | 0x700;
if( ((unsigned int)NewProtectWin32 | v12) != v12 )
return -1073741746;
v13 = (unsigned __int64)StartingAddress >> 12;
v14 = (unsigned __int64)EndingAddress >> 12;
MiGetProtoPteAddress();
v16 = v15;
MiGetProtoPteAddress();
if( MiVadPureReserve(&Vad->Core) )
{
result = MiAddViewsForSection(0i64, 1ui64, 8ui64);
if( result < 0 )
return result;
if( !v16 )
{
MiGetProtoPteAddress();
v16 = v19;
}
v10 = StartingAddress;
}
if( !MiChargeSegmentCommit(0i64, v16, v14 - v13 + 1, v17) )
return -1073741523;
LODWORD(v21) = 0;
LODWORD(NewProtect) = NewProtectWin32;
return MiSetProtectionOnSection(Processa, Vad, v10, EndingAddress, NewProtect, v21, a8, AnyPageLocked);
}Referenced by:
No references.