PerfLogImageLoad
VOID __stdcall PerfLogImageLoad(_UNICODE_STRING *ImageName, VOID *ProcessId, _IMAGE_INFO *ImageInfo){
int v5;
ULONG Properties;
__int64 v7;
INT64 v8;
_WMI_IMAGELOAD_INFORMATION ImageInfoa[2];
__int64 v10;
int v11;
__int64 v12;
char v13;
char v14[3];
__int64 v15;
__int64 v16;
__int64 v17;
__int64 v18;
PGET_UPDATED_BUS_RESOURCE v19[3];
int Length;
int v21;
__int64 *v22;
__int64 v23;
*(_QWORD *)ImageInfoa = 0i64;
v18 = 0i64;
if( ImageName && ImageName->Length && ImageName->Buffer )
{
if( ProcessId )
v5 = *((_DWORD *)ProcessId + 272);
else
v5 = 0;
*(_QWORD *)ImageInfoa = ImageInfo->ImageBase;
v10 = *(_QWORD *)&ImageInfo->ImageSectionNumber;
v11 = v5;
*(_WORD *)&v14[1] = 0;
v16 = 0i64;
v17 = 0i64;
v12 = 0i64;
v15 = 0i64;
Properties = ImageInfo->anonymous_0.Properties;
v13 = (ImageInfo->anonymous_0.Properties >> 12) & 0xF;
*(_WORD *)v14 = BYTE2(Properties) & 7;
LODWORD(v7) = RtlImageNtHeader(*(UINT64 *)ImageInfoa);
if( v7 )
{
LODWORD(v12) = *(_DWORD *)(v7 + 88);
HIDWORD(v12) = *(_DWORD *)(v7 + 8);
v15 = *(_QWORD *)(v7 + 48);
}
if( EtwpHostSiloState != -4516 && (*(_DWORD *)(EtwpHostSiloState + 4516) & 4) != 0 )
EtwpPsProvTraceImage(ImageName, ImageInfoa, 0x1401u, 0i64);
v19[0] = (PGET_UPDATED_BUS_RESOURCE)ImageInfoa;
v19[1] = (PGET_UPDATED_BUS_RESOURCE)56;
v19[2] = (PGET_UPDATED_BUS_RESOURCE)ImageName->Buffer;
Length = ImageName->Length;
v21 = 0;
v22 = &EtwpNull;
v23 = 2i64;
if( ProcessId )
{
LODWORD(v8) = 5249283;
EtwTraceSiloKernelEvent(*((_QWORD *)ProcessId + 270), v19, 3ui64, 4ui64, 778, v8);
}
else
{
EtwTraceKernelEvent((__int64)v19, 3u, 4u, 0x30Au, 0x501903u);
}
}
}Referenced by:
No references.