KeInitializeProcess
NTSTATUS __stdcall KeInitializeProcess(
_EPROCESS *Process,
INT64 BasePriority,
_GROUP_AFFINITY *GroupAffinity,
_KNODE *IdealNode,
_KSCHEDULING_GROUP *SchedulingGroup,
UINT64 Flags){
int SecureProcess;
__int64 Group;
unsigned __int64 Mask;
_EPROCESS *v12;
__int16 v13;
*((_BYTE *)Process + 640) = BasePriority;
*(_BYTE *)Process = 3;
*((_DWORD *)Process + 92) = 1310740;
SecureProcess = 0;
*((_QWORD *)Process + 2) = (char *)Process + 8;
*((_DWORD *)Process + 93) = 0;
*((_QWORD *)Process + 1) = (char *)Process + 8;
memset((INT64)Process + 376, 0i64);
if( (Flags & 1) != 0 )
*((_DWORD *)Process + 158) |= 1u;
*((_DWORD *)Process + 21) = 0;
*((_DWORD *)Process + 20) = 1310721;
memset((INT64)Process + 88, 0i64);
Group = GroupAffinity->Group;
Mask = GroupAffinity->Mask;
if( *((_WORD *)Process + 40) <= (unsigned __int16)Group )
*((_WORD *)Process + 40) = Group + 1;
*((_QWORD *)Process + Group + 11) |= Mask;
KeSetGroupMaskProcess((INT64)Process, (unsigned int)(1 << LOBYTE(GroupAffinity->Group)));
*((_DWORD *)Process + 210) = 0;
*((_QWORD *)Process + 4) = (char *)Process + 24;
*((_QWORD *)Process + 3) = (char *)Process + 24;
*((_QWORD *)Process + 44) = (char *)Process + 344;
*((_QWORD *)Process + 43) = (char *)Process + 344;
*((_QWORD *)Process + 7) = (char *)Process + 48;
*((_QWORD *)Process + 6) = (char *)Process + 48;
*((_BYTE *)Process + 641) = 6;
KiSetIdealNodeProcessByGroup(v12, IdealNode, GroupAffinity->Group);
v13 = *((_WORD *)Process + GroupAffinity->Group + 386);
*((_QWORD *)Process + 110) = SchedulingGroup;
*((_WORD *)Process + 418) = v13;
if( (Flags & 2) != 0 )
{
SecureProcess = VslCreateSecureProcess((INT64)Process, 0i64, (_QWORD *)Process + 124);
if( SecureProcess >= 0 )
*((_QWORD *)Process + 124) |= 1ui64;
}
return SecureProcess;
}Referenced by:
KiInitializeKernel
PspAllocateProcess