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.