我可以使用C#的EventLogReader来检索特定操作通道中记录的所有ETW事件,使用与此页面上的示例类似的代码:
http://msdn.microsoft.com/en-us/library/bb671197(v=vs.90).aspx
我需要做的就是修改logname字符串,而不是指向我感兴趣的操作通道(例如“Microsoft-Windows-RemoteAssistance / Operational”),然后我会看到输出到控制台的所有事件。
但是,我必须继续轮询/检查频道以查看是否有任何新事件,这并不理想。每当新事件记录到频道时,我希望找到一种订阅(或以其他方式接收回调/通知)的方法。我确信必须有一种方法可以在回调中接收事件,但我在MSDN上找不到任何明显的东西。
有谁知道如何从C#中做到这一点?
答案 0 :(得分:5)
您是否看过EventLogWatcher类?
允许您指定条件,并在满足时引发EventRecordWritten事件。