MmAssignProcessToJob
VOID __stdcall MmAssignProcessToJob(_EPROCESS *Process, PVOID Context){
char v2;
int v3;
char v4;
_EPROCESS **CurrentThread;
__int64 v8;
__int64 v9;
_KAPC_STATE ApcState;
v3 = 0;
memset(&ApcState, 0, sizeof(ApcState));
v4 = v2;
CurrentThread = (_EPROCESS **)KeGetCurrentThread();
if( CurrentThread[23] != Process )
{
v3 = 1;
KiStackAttachProcess((_KPROCESS *)Process, 0i64, &ApcState);
}
v8 = MiLockVadRange((__int64)Process, 0xFFFFFFFFFFFFFFFFui64, 0xFFFFFFFFFFFFFFFFui64, 0);
if( v8 || (*((_DWORD *)Process + 543) & 1) != 0 )
{
LOCK_PAGE_TABLE_COMMITMENT((_ETHREAD *)CurrentThread, Process);
v9 = *((_QWORD *)Process + 201);
*((_QWORD *)Process + 157) = *((_QWORD *)Process + 162);
PspChangeJobMemoryUsageByProcess(v4 | 3, v9, (__int64)Process, (__int64)Context);
_InterlockedOr((volatile signed __int32 *)Process + 280, 0x10u);
UNLOCK_PAGE_TABLE_COMMITMENT((__int64)CurrentThread, (__int64)Process);
}
MiUnlockVadRange(Process, (PVOID)0xFFFFFFFFFFFFFFFFi64, v8);
if( v3 )
KiUnstackDetachProcess(&ApcState, 0i64);
}Referenced by:
PspAssignProcessToJob
PspImplicitAssignProcessToJob