MmAssignProcessToJob
VOID __stdcall MmAssignProcessToJob(_EPROCESS *Process, VOID *Context){
int v2;
int v3;
int v4;
_ETHREAD *CurrentThread;
UINT64 v8;
UINT64 v9;
INT64 CommitCharge;
_KAPC_STATE ApcState;
v3 = 0;
memset(&ApcState, 0, sizeof(ApcState));
v4 = v2;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
if( CurrentThread->Tcb.ApcState.Process != Process )
{
v3 = 1;
KiStackAttachProcess(Process, 0i64, &ApcState);
}
LODWORD(v8) = MiLockVadRange(Process, (VOID *)0xFFFFFFFFFFFFFFFFi64, (VOID *)0xFFFFFFFFFFFFFFFFi64);
v9 = v8;
if( v8 || (Process->Flags3 & 1) != 0 )
{
LOCK_PAGE_TABLE_COMMITMENT(CurrentThread, Process);
CommitCharge = Process->CommitCharge;
Process->CommitChargeJob = Process->Job;
PspChangeJobMemoryUsageByProcess(v4 | 3u, CommitCharge, Process, (_EJOB *)Context);
_InterlockedOr((volatile signed __int32 *)&Process->1120, 0x10u);
UNLOCK_PAGE_TABLE_COMMITMENT(CurrentThread, Process);
}
MiUnlockVadRange(Process, (VOID *)0xFFFFFFFFFFFFFFFFi64, v9);
if( v3 )
KiUnstackDetachProcess(&ApcState, 0i64);
}Referenced by:
PspAssignProcessToJob
PspImplicitAssignProcessToJob