我正在使用 Windows Server 2012 并尝试使用 C# 使用来自 ETW 的内核跟踪。例如,我有一个名为“LiveKernel”的数据收集器集,它有一个“Windows 内核跟踪”提供程序来捕获线程系统调用事件,并且流模式是实时的。
使用Daniel Vasquez Lopez 提供的代码作为起点,我正在尝试使用这些事件。但是,我收到的输出总是:
Listening...Press <Enter> to exit
这对我来说表明它没有消耗任何事件。我对这段代码的理解是,我所要做的就是更改名称和 GUID 以反映我的新选择,因此我将代码更新为
Guid RewriteProviderId = new Guid("9E814AAD-3204-11D2-9A82-006008A86939");
using (EventTraceWatcher watcher = new EventTraceWatcher("LiveKernel", RewriteProviderId)) {
我在这里缺少什么吗?有没有更好的方法来使用内核跟踪?“Windows 内核跟踪”提供程序是否有什么特别之处可以阻止我们实时使用它的事件?