PsReportProcessMemoryLimitViolation
VOID __stdcall PsReportProcessMemoryLimitViolation(){
_ETHREAD *CurrentThread;
_EPROCESS *Process;
_EJOB *volatile Job;
__int64 v3;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
Process = CurrentThread->Tcb.ApcState.Process;
Job = Process->Job;
v3 = *((_QWORD *)Job + 102);
if( v3 && (*(_DWORD *)(v3 + 256) & 0x100) != 0 )
{
PspLockJobMemoryLimitsShared(*((_EJOB **)Job + 102), CurrentThread);
if( *(_QWORD *)(v3 + 456) && (*(_DWORD *)(v3 + 876) & 0x200) != 0 && (Process->Flags2 & 0x24) == 4 )
{
_InterlockedOr((volatile signed __int32 *)&Process->1120, 0x20u);
PspSendJobNotification((_EJOB *)v3, 9ui64, Process->UniqueProcessId, 1u);
}
PspUnlockJobMemoryLimitsShared((_EJOB *)v3, CurrentThread);
}
}Referenced by:
MiChargeProcessCommitment