PspUnlockJobsAndProcessExclusive
INT64 __fastcall PspUnlockJobsAndProcessExclusive(INT64 *a1, INT64 a2, INT64 a3){
unsigned int v3;
__int64 v7;
v3 = *(_DWORD *)a1;
while( v3 )
{
v7 = a1[2 * --v3 + 1];
if( LOBYTE(a1[2 * v3 + 2]) )
PspUnlockJobChain(v7, 0i64, 0);
else
ExReleaseResourceLite((PERESOURCE)(v7 + 56));
}
if( a2 )
{
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)(a2 + 1080), 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)(a2 + 1080));
KeAbPostRelease((PVOID)(a2 + 1080));
}
return KiLeaveGuardedRegionUnsafe(a3);
}Referenced by:
PspAssignProcessToJob
PspJobDelete