PsLookupProcessByProcessId
NTSTATUS __stdcall PsLookupProcessByProcessId(HANDLE ProcessId, PEPROCESS *Process){
_ETHREAD *CurrentThread;
__int64 v4;
__int64 v5;
_EJOB *CurrentServerSilo;
__int64 v7;
bool v8;
int v10[10];
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 243);
LODWORD(v4) = PspReferenceCidTableEntry(ProcessId, 3u);
v5 = v4;
if( v4 )
{
CurrentServerSilo = PsGetCurrentServerSilo();
v7 = (__int64)CurrentServerSilo;
if( (*(_DWORD *)(v5 + 1124) & 0x4000000) != 0 )
{
if( PsIsProcessInSilo(v5, (__int64)CurrentServerSilo) )
goto LABEL_4;
LABEL_14:
ObfDereferenceObjectWithTag((PVOID)v5, 0x746C6644ui64);
v5 = 0i64;
goto LABEL_4;
}
_InterlockedOr(v10, 0);
if( (*(_QWORD *)(v5 + 1080) & 1) != 0 )
ExfAcquireReleasePushLockExclusive((VOID *)(v5 + 1080));
if( (*(_DWORD *)(v5 + 1124) & 0x4000000) == 0 || !PsIsProcessInSilo(v5, v7) )
goto LABEL_14;
}
LABEL_4:
v8 = (*((_WORD *)CurrentThread + 243))++ == 0xFFFF;
if( v8 && *((_ETHREAD **)CurrentThread + 19) != (_ETHREAD *)((char *)CurrentThread + 152) )
KiCheckForKernelApcDelivery();
if( !v5 )
return -1073741813;
*Process = (PEPROCESS)v5;
return 0;
}Referenced by:
CmpDumpOneKeyBody
EtwpGetPrivateSessionTraceHandle
EtwpProcessThreadImageRundown
EtwpPsProvTraceProcess
EtwpUpdatePerProcessTracing
ExpQuerySystemInformation
PfpCopyEvent
PfpRpControlRequestUpdate
PiUEventHandleVetoEvent
PnpLogVetoInformation
PopDiagTraceAppPowerMessage
PsOpenProcess
PspOneDirectionSecurityDomainCombine
SeAuditProcessCreation
ViCreateProcessCallbackInternal