KsepEvntLogShimsApplied
VOID __stdcall KsepEvntLogShimsApplied(_UNICODE_STRING *DriverName, _KSE_SHIM_INFO *Shims, UINT64 ShimCount){
unsigned int v3;
__int64 v5;
unsigned __int16 v7;
_UNICODE_STRING *Paged;
_UNICODE_STRING *v9;
wchar_t *p_Length;
_UNICODE_STRING *v11;
_UNICODE_STRING *v12;
wchar_t *Buffer;
int v14;
unsigned int v15;
unsigned int v16;
unsigned int v17;
_UNICODE_STRING Destination;
_UNICODE_STRING *v19;
_EVENT_DATA_DESCRIPTOR UserData;
_KSE_SHIM_INFO *v21;
__int64 v22;
unsigned int *v23;
__int64 v24;
wchar_t *v25;
int v26;
int v27;
v3 = 0;
v19 = DriverName;
v5 = (unsigned int)ShimCount;
v17 = ShimCount;
v7 = 0;
Destination = 0i64;
if( *(&stru_140CF2E80 + 627)
&& EtwEventEnabled(*(&stru_140CF2E80 + 627), &KseShimsApplied)
&& (_DWORD)v5
&& Shims
&& DriverName )
{
Paged = (_UNICODE_STRING *)KsepPoolAllocatePaged(94 * v5);
v9 = Paged;
if( Paged )
{
p_Length = &Paged[v17].Length;
if( v17 )
{
do
{
v11 = &v9[v3];
*v11 = 0i64;
v11->Buffer = p_Length;
p_Length += 39;
v11->MaximumLength = 78;
RtlStringFromGUIDEx((_GUID *)&Shims[20 * v3++], v11, 0);
v7 += v11->Length + 4;
}
while( v3 < v17 );
v12 = v19;
if( v7 )
{
Destination.Buffer = (wchar_t *)KsepPoolAllocatePaged(v7);
Buffer = Destination.Buffer;
if( Destination.Buffer )
{
v14 = 0;
Destination.MaximumLength = v7;
if( v17 )
{
while( RtlAppendUnicodeStringToString(&Destination, &v9[v14]) >= 0 )
{
v15 = v17;
if( v14 != v17 - 1 )
{
if( RtlAppendUnicodeToString(&Destination, (WCHAR *)L"\n") < 0 )
break;
v15 = v17;
}
if( ++v14 >= v15 )
{
Buffer = Destination.Buffer;
goto LABEL_18;
}
}
}
else
{
LABEL_18:
UserData.Ptr = (unsigned __int64)v12->Buffer;
v16 = v12->Length + 2;
v22 = 4i64;
UserData.Size = v16;
v21 = Shims + 17;
v23 = &v17;
v24 = 4i64;
v26 = Destination.Length + 2;
v25 = Buffer;
UserData.Reserved = 0;
v27 = 0;
EtwWriteEx(*(&stru_140CF2E80 + 627), &KseShimsApplied, 0i64, 0, 0, 0, 4u, &UserData);
}
}
}
}
ExFreePoolWithTag(v9, 0x6145534Bu);
_InterlockedIncrement(&dword_140C2A7E4);
}
if( Destination.Buffer )
{
ExFreePoolWithTag(Destination.Buffer, 0x6145534Bu);
_InterlockedIncrement(&dword_140C2A7E4);
}
}
}Referenced by:
KseDriverLoadImage