EtwWriteStartScenario

NTSTATUS __fastcall EtwWriteStartScenario(
        REGHANDLE RegHandle,
        PCEVENT_DESCRIPTOR EventDescriptor,
        VOID *OutBuffer,
        ULONG UserDataCount,
        PEVENT_DATA_DESCRIPTOR a5){
  int ProviderIdFromHandle; 
  PEVENT_DATA_DESCRIPTOR UserData; 
  UINT64 ReturnLength; 
  _GUID ProviderId; 

  LODWORD(ReturnLength) = 0;
  ProviderId = 0i64;
  if( !EventDescriptor || !OutBuffer )
    return -1073741811;
  if( !EtwEventEnabled(RegHandle, EventDescriptor) )
    return -1073741816;
  ProviderIdFromHandle = EtwGetProviderIdFromHandle(RegHandle, 0, &ProviderId);
  if( ProviderIdFromHandle >= 0 )
  {
    if( *(_DWORD *)OutBuffer
      || *((_WORD *)OutBuffer + 2)
      || *((_WORD *)OutBuffer + 3)
      || *((_BYTE *)OutBuffer + 8)
      || *((_BYTE *)OutBuffer + 9)
      || *((_BYTE *)OutBuffer + 10)
      || *((_BYTE *)OutBuffer + 11)
      || *((_BYTE *)OutBuffer + 12)
      || *((_BYTE *)OutBuffer + 13)
      || *((_BYTE *)OutBuffer + 14)
      || *((_BYTE *)OutBuffer + 15)
      || (LODWORD(UserData) = 16,
          ProviderIdFromHandle = ZwTraceControl(0xCui64, 0i64, 0i64, OutBuffer, (UINT64)UserData, &ReturnLength),
          ProviderIdFromHandle >= 0) )
    {
      ProviderIdFromHandle = EtwWrite(RegHandle, EventDescriptor, (_LPCGUID)OutBuffer, UserDataCount, a5);
      WdipStartEndScenario(&ProviderId, (const _GUID *)OutBuffer, &EventDescriptor->Id, 10);
    }
  }
  return ProviderIdFromHandle;
}

Referenced by:

IoInitSystemPreDrivers
PerfDiagInitialize
PopDiagTracePowerTransitionStart