KitLogFeatureUsage
NTSTATUS __stdcall KitLogFeatureUsage(_GUID *FeatureId, VOID *CallerId, _KIT_CALLER_ID_TYPE CallerIdType){
__int32 v6;
NTSTATUS v7;
__int16 FilePath;
_KIT_CALLER_ID_TYPE FilePath_4;
_UNICODE_STRING FilePath_8;
_EVENT_DATA_DESCRIPTOR UserData;
_KIT_CALLER_ID_TYPE *p_FilePath_4;
int v14;
int v15;
__int16 *p_FilePath;
int v17;
int v18;
wchar_t *Buffer;
int Length;
int v21;
char v22[512];
FilePath_4 = CallerIdType;
FilePath_8 = 0i64;
if( *(&stru_140CF2E80 + 657) && EtwEventEnabled(*(&stru_140CF2E80 + 657), &KitFeatureIdUsedEvent) )
{
if( CallerIdType )
{
v6 = CallerIdType - 1;
if( v6 )
{
if( v6 != 1 || (CallerId = (VOID *)*((_QWORD *)CallerId + 1)) == 0i64 )
{
LABEL_13:
FilePath_4 = KitIdUnavailable;
FilePath_8 = *(_UNICODE_STRING *)&NoCallerIdString;
LABEL_14:
UserData.Reserved = 0;
v15 = 0;
v18 = 0;
v21 = 0;
p_FilePath_4 = &FilePath_4;
FilePath = FilePath_8.Length >> 1;
p_FilePath = &FilePath;
Buffer = FilePath_8.Buffer;
Length = FilePath_8.Length;
v14 = 4;
UserData.Ptr = (unsigned __int64)FeatureId;
UserData.Size = 16;
v17 = 2;
return EtwWriteEx(*(&stru_140CF2E80 + 657), &KitFeatureIdUsedEvent, 0i64, 0, 0, 0, 4u, &UserData);
}
}
CallerId = (VOID *)*((_QWORD *)CallerId + 3);
}
if( CallerId )
{
memset(v22, 0i64, 0x1FEu);
FilePath_8.MaximumLength = 510;
FilePath_8.Buffer = (wchar_t *)v22;
v7 = KeGetCurrentIrql() > 1u ? RtlPcToFileName(CallerId, &FilePath_8) : RtlPcToFilePath(CallerId, &FilePath_8);
if( v7 >= 0 )
goto LABEL_14;
}
goto LABEL_13;
}
return 0;
}Referenced by:
No references.