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.