trace_info trace_manager::fill_trace_info()

in krabs/krabs/etw.hpp [234:259]


    trace_info trace_manager<T>::fill_trace_info()
    {
        trace_info info = {};
        info.properties.Wnode.BufferSize    = sizeof(trace_info);
        info.properties.Wnode.Guid          = T::trace_type::get_trace_guid();
        info.properties.Wnode.Flags         = WNODE_FLAG_TRACED_GUID;
        info.properties.Wnode.ClientContext = 1; // QPC clock resolution
        info.properties.BufferSize          = trace_.properties_.BufferSize;
        info.properties.MinimumBuffers      = trace_.properties_.MinimumBuffers;
        info.properties.MaximumBuffers      = trace_.properties_.MaximumBuffers;
        info.properties.FlushTimer          = trace_.properties_.FlushTimer;

        if (trace_.properties_.LogFileMode)
            info.properties.LogFileMode     = trace_.properties_.LogFileMode;
        else
            info.properties.LogFileMode     = EVENT_TRACE_REAL_TIME_MODE
                                            | EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING;

        info.properties.LogFileMode         |= T::trace_type::augment_file_mode();
        info.properties.LoggerNameOffset    = offsetof(trace_info, logfileName);
        info.properties.EnableFlags         = T::trace_type::construct_enable_flags(trace_);
        assert(info.traceName[0] == '\0');
        assert(info.logfileName[0] == '\0');
        trace_.name_._Copy_s(info.traceName, ARRAYSIZE(info.traceName), trace_.name_.length());
        return info;
    }