MCPcopy Create free account
hub / github.com/rabbitstack/fibratus / ProcessEvent

Method ProcessEvent

internal/etw/processors/ps_windows.go:42–85  ·  view source on GitHub ↗
(e *event.Event)

Source from the content-addressed store, hash-verified

40}
41
42func (p psProcessor) ProcessEvent(e *event.Event) (*event.Event, bool, error) {
43 switch e.Type {
44 case event.CreateProcess, event.CreateProcessInternal, event.TerminateProcess, event.ProcessRundown, event.ProcessRundownInternal:
45 evt, err := p.processEvent(e)
46 if evt.IsTerminateProcess() {
47 p.regionProber.Remove(evt.Params.MustGetPid())
48 return evt, false, multierror.Wrap(err, p.psnap.Remove(evt))
49 }
50
51 return evt, false, multierror.Wrap(err, p.psnap.Write(evt))
52 case event.CreateThread, event.TerminateThread, event.ThreadRundown:
53 pid, err := e.Params.GetPid()
54 if err != nil {
55 return e, false, err
56 }
57 proc := p.psnap.FindAndPut(pid)
58 if proc != nil {
59 e.AppendParam(params.Exe, params.UnicodeString, proc.Exe)
60 }
61 if !e.IsTerminateThread() {
62 return e, false, p.psnap.AddThread(e)
63 }
64 tid, err := e.Params.GetTid()
65 if err != nil {
66 return e, false, err
67 }
68
69 return e, false, p.psnap.RemoveThread(pid, tid)
70 case event.OpenProcess, event.OpenThread:
71 pid, err := e.Params.GetPid()
72 if err != nil {
73 return e, false, err
74 }
75 proc := p.psnap.FindAndPut(pid)
76 if proc != nil {
77 e.AppendParam(params.Exe, params.Path, proc.Exe)
78 e.AppendParam(params.ProcessName, params.AnsiString, proc.Name)
79 }
80
81 return e, false, nil
82 }
83
84 return e, true, nil
85}
86
87//nolint:unparam
88func (p psProcessor) processEvent(e *event.Event) (*event.Event, error) {

Callers

nothing calls this directly

Calls 13

processEventMethod · 0.95
WrapFunction · 0.92
IsTerminateProcessMethod · 0.80
MustGetPidMethod · 0.80
GetPidMethod · 0.80
AppendParamMethod · 0.80
IsTerminateThreadMethod · 0.80
GetTidMethod · 0.80
RemoveMethod · 0.65
WriteMethod · 0.65
FindAndPutMethod · 0.65
AddThreadMethod · 0.65

Tested by

no test coverage detected