IsRundownProcessed checks if the rundown events was processed to discard writing the snapshot state if the process/module is already present. This usually happens when we purposely alter the tracing session to induce the arrival of rundown events by calling into the `etw.SetTraceInformation` Windows
()
| 192 | // For more pointers check `internal/etw/trace.go` and the |
| 193 | // `etw.SetTraceInformation` API function. |
| 194 | func (e *Event) IsRundownProcessed() bool { |
| 195 | mu.Lock() |
| 196 | defer mu.Unlock() |
| 197 | key := e.RundownKey() |
| 198 | _, isProcessed := rundowns[key] |
| 199 | if isProcessed { |
| 200 | return true |
| 201 | } |
| 202 | rundowns[key] = true |
| 203 | return false |
| 204 | } |
| 205 | |
| 206 | func (e *Event) IsCreateFile() bool { return e.Type == CreateFile } |
| 207 | func (e *Event) IsCreateProcess() bool { return e.Type == CreateProcess } |
no test coverage detected