PspLockJobChain
void __fastcall PspLockJobChain(__int64 a1, __int64 a2, char a3){
char v5;
unsigned __int64 v6;
unsigned __int64 v7;
unsigned __int64 i;
if( a2 )
--*(_WORD *)(a2 + 486);
v5 = a3 & 1;
if( (a3 & 1) == 0 )
PspLockJobAssignment(a2);
v6 = *(_QWORD *)(a1 + 1104);
if( v6 )
{
if( v6 > 1 )
{
ExAcquireResourceExclusiveLite((ERESOURCE *)(*(_QWORD *)(a1 + 1080) + 56i64), 1u);
v7 = *(_QWORD *)(a1 + 1104);
if( v7 > 2 )
{
for( i = v7 - 2; i; --i )
ExAcquireResourceExclusiveLite((ERESOURCE *)(*(_QWORD *)(*(_QWORD *)(a1 + 1112) + 8 * i - 8) + 56i64), 1u);
}
}
ExAcquireResourceExclusiveLite((ERESOURCE *)(*(_QWORD *)(a1 + 1072) + 56i64), 1u);
}
ExAcquireResourceExclusiveLite((ERESOURCE *)(a1 + 56), 1u);
if( !v5 )
PspUnlockJobAssignment(a2);
}Referenced by:
NtSetInformationJobObject
PspGetMemoryPartitionImplicit
PspImplicitAssignProcessToJob
PspLockJobsAndProcessExclusive