ETW(.NET)跟踪:设置ETWTraceEventSource

时间:2018-10-11 22:32:19

标签: vb.net etw

我正在尝试使用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

如何配置跟踪会话/源,以便可以正确捕获自定义事件的详细信息/参数?

0 个答案:

没有答案