MiCreateProcessDefaultAweInfo

VOID __stdcall MiCreateProcessDefaultAweInfo(){
  _QWORD *v0; 
  _QWORD *v1; 
  _ETHREAD *CurrentThread; 
  _EPROCESS *Process; 
  _MMWSL_INSTANCE *VmWorkingSetList; 
  VOID *LockedEntries; 
  int v6; 

  *v0 = 0i64;
  v1 = v0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  Process = CurrentThread->Tcb.ApcState.Process;
  VmWorkingSetList = Process->Vm.Instance.VmWorkingSetList;
  LockedEntries = (VOID *)VmWorkingSetList[9].LockedEntries;
  if( !LockedEntries )
  {
    if( MiAllocateAweInfo(0i64) < 0 )
      return;
    v6 = 0;
    MiLockAweVadsExclusive((INT64)CurrentThread);
    if( !Process->Vm.Instance.VmWorkingSetList[9].LockedEntries )
    {
      VmWorkingSetList[9].LockedEntries = (unsigned __int64)LockedEntries;
      v6 = 1;
    }
    MiUnlockAweVadsExclusive(&CurrentThread->Tcb);
    if( !v6 )
    {
      MiDeleteAweInfo((ULONG_PTR)KeGetCurrentThread()->ApcState.Process, LockedEntries);
      LockedEntries = (VOID *)Process->Vm.Instance.VmWorkingSetList[9].LockedEntries;
    }
  }
  *v1 = LockedEntries;
}

Referenced by:

MiAllocateUserPhysicalPages
MiCreateUserPhysicalView