我正在尝试使用ETWTraceEventSource设置ETW TraceEventSession,以捕获所有使用同一自定义EventSource类的多个进程的跟踪。虽然我在下面发布的代码能够获取跟踪事件,但它作为UnhandledTraceEvent传入,并且删除了所有有意义的数据。
如果使用ObservableEventListener,我可以捕获所有细节,就像我期望的那样-但这似乎无法捕获其他进程的跟踪。
下面是我当前启动此跟踪会话的尝试:
Try
If Not TraceEventSession.IsElevated Then
Throw New AccessViolationException("Admin Mode Required")
End If
Dim eventSourceId = TraceEventProviders.GetEventSourceGuidFromName(MyEventSource.EVENT_SOURCE_NAME)
_traceSession = New TraceEventSession("testSession", Nothing, TraceEventSessionOptions.Create)
_traceSession.StopOnDispose = True
_traceSession.EnableProvider(eventSourceId, Microsoft.Diagnostics.Tracing.TraceEventLevel.Verbose)
_traceSource = New ETWTraceEventSource("testSession", TraceEventSourceType.Session)
Dim traceTask = Task.Factory.StartNew(
Sub()
If Not _traceSource.Process() Then
Debugger.Break()
End If
Debugger.Break()
End Sub
)
_traceSource.ObserveAll.Subscribe(Me)
Catch ex As Exception
Debugger.Break()
End Try
如何配置跟踪会话/源,以便可以正确捕获自定义事件的详细信息/参数?