MmQueryWorkingSetInformation

NTSTATUS __stdcall MmQueryWorkingSetInformation(
        UINT64 *PeakWorkingSetSize,
        UINT64 *WorkingSetSize,
        UINT64 *PrivateWorkingSetSize,
        UINT64 *MinimumWorkingSetSize,
        UINT64 *MaximumWorkingSetSize,
        UINT64 *HardEnforcementFlags){
  _MMSUPPORT_FULL *p_Vm; 
  char v11; 
  UINT64 v12; 
  char bf_0; 

  *(_DWORD *)HardEnforcementFlags = 0;
  p_Vm = &KeGetCurrentThread()->ApcState.Process->Vm;
  MiLockWorkingSetShared();
  LOBYTE(v12) = v11;
  *PeakWorkingSetSize = p_Vm->Instance.PeakWorkingSetSize << 12;
  *WorkingSetSize = p_Vm->Instance.WorkingSetLeafSize << 12;
  *PrivateWorkingSetSize = p_Vm->Instance.WorkingSetLeafPrivateSize << 12;
  *MinimumWorkingSetSize = p_Vm->Instance.MinimumWorkingSetSize << 12;
  *MaximumWorkingSetSize = p_Vm->Instance.MaximumWorkingSetSize << 12;
  bf_0 = p_Vm->Instance.Flags._bf_0;
  if( bf_0 < 0 )
  {
    *(_DWORD *)HardEnforcementFlags |= 4u;
    bf_0 = p_Vm->Instance.Flags._bf_0;
  }
  if( (bf_0 & 0x40) != 0 )
    *(_DWORD *)HardEnforcementFlags |= 1u;
  MiUnlockWorkingSetShared(&p_Vm->Instance, v12);
  return 0;
}

Referenced by:

NtQueryInformationProcess
PspQueryQuotaLimits
SmKmVirtualLockContextIncreaseWsMin
SmKmVirtualLockCtxMemoryUnlocked