PfSnEndProcessTrace
__int64 __fastcall PfSnEndProcessTrace(_EPROCESS *a1, signed __int32 a2, const VOID *a3){
_PFSN_TRACE_HEADER *v5;
unsigned int v6;
_PFSN_TRACE_HEADER *v7;
v5 = PfSnReferenceProcessTrace(a1);
v6 = 0;
v7 = v5;
if( v5 )
{
if( !a3 || !memcmp(a3, v5 + 6, 0x40ui64) )
{
if( _InterlockedCompareExchange(v7 + 100, a2, 0) )
v6 = -1073741431;
else
ExQueueWorkItem((PWORK_QUEUE_ITEM)(v7 + 92), DelayedWorkQueue);
}
else
{
v6 = -1073741198;
}
ExReleaseRundownProtection((_EX_RUNDOWN_REF *)v7 + 45);
}
else
{
return(unsigned int)-1073741275;
}
return v6;
}Referenced by:
PfSnFailProcessTrace
PfSnOperationProcess
PspExitProcess