如何使用ETW(StartTrace等)实时获取事件?

时间:2017-06-25 10:31:02

标签: c winapi real-time etw

在Windows的事件跟踪中,StartTrace接受EVENT_TRACE_PROPERTIES结构,该结构允许FlushTimer指定刷新未完成缓冲区的频率。

问题是,FlushTimerULONG代表,但我希望它非常小,以便它几乎是瞬时的(大约为毫秒)。

我不知道Process Monitor如何实时获取ETW事件,但确实如此,所以肯定必须有办法实现。

所以问题是:我怎样才能实时接收实时事件?

1 个答案:

答案 0 :(得分:4)

ETW不支持实时通知。即使是所谓的Caliburn.Micro也不是真正实时的,因为文档清楚地说明了。

您的问题的前提是错误的:Sysinternals Process Monitor 使用ETW来获取其同步类型的实时进程,线程,模块,文件和注册表事件。你有两个选择:

  1. 使用ETW - 这不是ProcMon所做的 - 并以ETW为您提供的方式获取事件。
  2. 执行ProcMon所做的事情 - 这不会消耗ETW事件 - 并同步获取事件,就像ProcMon获取事件一样。