PfpLogApplicationEvent
NTSTATUS __stdcall PfpLogApplicationEvent(_EPROCESS *Process, _UNICODE_STRING *Filename, UINT8 Terminated){
int UniqueProcessId;
NTSTATUS v5;
_LARGE_INTEGER CreateTime;
unsigned int v7;
__int64 v8;
unsigned __int16 *v9;
__int64 v10;
__int64 v11;
size_t v12;
NTSTATUS SessionId;
__int64 v14;
size_t v15;
int v16;
__int64 v18;
unsigned int ImagePathHash;
_EPROCESS *v20;
__int64 v21;
__int64 v22;
unsigned int v23;
int v24;
__int64 v25;
__int64 v26;
_EPROCESS *v27;
int v28;
unsigned __int16 v29;
__int16 v30[989];
__int64 v31;
if( *(&stru_140C4DB30 + 2042) >= *(&stru_140C4DB30 + 2043) )
return -1073741637;
UniqueProcessId = (int)Process->UniqueProcessId;
v5 = 0;
CreateTime = Process->CreateTime;
v31 = 0i64;
if( Terminated )
{
v18 = (__int64)Process->UniqueProcessId ^ CreateTime.QuadPart;
LODWORD(v22) = UniqueProcessId;
v20 = Process;
ImagePathHash = Process->ImagePathHash;
v21 = v18 & 0x1FFFFFFFFFFFFFFFi64;
v16 = 14;
HIDWORD(v22) = ImagePathHash;
v15 = 24;
}
else
{
v24 = UniqueProcessId;
HIDWORD(v20) = 0;
v28 = 0;
v30[0] = 0;
v27 = Process;
v7 = Process->ImagePathHash;
v25 = ((__int64)Process->UniqueProcessId ^ CreateTime.QuadPart) & 0x1FFFFFFFFFFFFFFFi64;
v23 = v7;
LODWORD(v8) = MmGetDirectoryFrameFromProcess(Process);
v10 = *v9;
v11 = *((_QWORD *)v9 + 1);
v12 = v10;
v26 = v8;
if( (unsigned int)v10 > 0x7C0 )
v12 = 1984;
v29 = v12 >> 1;
memmove(v30, (const VOID *)(v10 + v11 - v12), v12);
v30[v29] = 0;
SessionId = MmGetSessionIdEx(Process);
if( SessionId != -1 )
v5 = SessionId;
LODWORD(v20) = v5;
LODWORD(v14) = MmGetSessionGlobalVA(Process);
v21 = v14;
v15 = v12 + 64;
v16 = 1;
v22 = *(_QWORD *)&PsIdleProcess;
}
return PfLogEvent(
v16,
dword_140C5001C
+ (unsigned int)((((KUSER_SHARED_DATA.TickCountMultiplier
* (unsigned __int64)KUSER_SHARED_DATA.ReservedTickCountOverlay[1]) << 8)
+ ((KUSER_SHARED_DATA.TickCountMultiplier
* (unsigned __int64)KUSER_SHARED_DATA.TickCount.LowPart) >> 24)) >> 10),
&v20,
v15);
}Referenced by:
PfCalculateProcessHash
PspExitProcess