当我在 Etw 中订阅 DynamicTraceEventParser 时,为什么 cpu-usage 不存在于负载中?

问题描述 投票:0回答:0

大家好,我对此代码示例有疑问,我该如何解决?

我有打击代码示例:

private static void processETW()
{
    var sessionName = "ETWSessionDemo";
    using var session = new TraceEventSession(sessionName);
    Console.CancelKeyPress += (object? sender, ConsoleCancelEventArgs e) =>
    {
        session.Stop();
        session.Dispose();
    };

    using var source = new ETWTraceEventSource(sessionName, TraceEventSourceType.Session);
    var parser = new DynamicTraceEventParser(source);

    session.EnableProvider(MyApplicationProviderId, TraceEventLevel.Always, options: new TraceEventProviderOptions()
    {
        Arguments = new[] { new KeyValuePair<string, string>("EventCounterIntervalSec", "1") },
        ProcessNameFilter = new List<string> { "EventSource.exe" }
    });

    session.EnableProvider(OpenMessageProviderId, TraceEventLevel.Always, options: new TraceEventProviderOptions()
    {
        Arguments = new[] { new KeyValuePair<string, string>("EventCounterIntervalSec", "2") },
        ProcessNameFilter = new List<string> { "EventSource.exe" }
    });

    parser.All += (data) =>
    {
        Console.WriteLine("--------------------------------------------------------------");
        Console.WriteLine("ProviderName : " + data.ProviderName);
        Console.WriteLine("ProviderGuid : " + data.ProviderGuid);
        Console.WriteLine("EventID : " + data.ID);
        Console.WriteLine("Level : " + data.Level);
        Console.WriteLine("Channel : " + data.Channel);
        Console.WriteLine("Task : " + data.Task);
        Console.WriteLine("TaskName : " + data.TaskName);
        Console.WriteLine("TimeStamp : " + data.TimeStamp);
        Console.WriteLine("FormattedMessage : " + data.FormattedMessage);
        if (data.PayloadValue(0) is not IDictionary<string, object> dic
        || (!dic.TryGetValue("CounterType", out var counterType))) return;

        Display(dic, counterType.ToString());

        Console.WriteLine("--------------------------------------------------------------");

    };

    source.Process();
}

我如何从有效负载中获取 CPU_Usage 并显示它,因为有效负载不包含 CPU_Usage。 提前致谢。

c# etw
© www.soinside.com 2019 - 2024. All rights reserved.