pub struct EventTrace { /* private fields */ }Expand description
A running ETW trace session.
Created by EventTraceBuilder::start. Automatically stops the trace when
dropped (RAII).
Use EventTrace::builder to configure and start a session.
Implementations§
Source§impl EventTrace
impl EventTrace
Sourcepub fn builder(name: impl Into<String>) -> EventTraceBuilder
pub fn builder(name: impl Into<String>) -> EventTraceBuilder
Create a builder to configure and start an ETW trace session.
No validation happens here — all checks run in
EventTraceBuilder::start so the builder can always be constructed
without a Result.
§Example
use windows_erg::etw::{EventTrace, SystemProvider};
let mut trace = EventTrace::builder("ProcessMonitor")
.system_provider(SystemProvider::Process)
.start()?;Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
The active ETW session name.
Kernel sessions always use NT Kernel Logger; user-mode sessions use
the builder name.
Sourcepub fn events_processed(&self) -> usize
pub fn events_processed(&self) -> usize
Total events delivered so far across all next_batch calls.
Sourcepub fn stop_handle(&self) -> Wait
pub fn stop_handle(&self) -> Wait
Get a clone of the stop signal for external cancellation coordination.
Sourcepub fn next_batch(&mut self, out_events: &mut Vec<TraceEvent>) -> Result<usize>
pub fn next_batch(&mut self, out_events: &mut Vec<TraceEvent>) -> Result<usize>
Fetch the next batch of events into the output buffer.
Clears out_events before filling it. Returns the number of events added.
Sourcepub fn next_batch_or_stopped(
&mut self,
out_events: &mut Vec<TraceEvent>,
) -> Result<usize>
pub fn next_batch_or_stopped( &mut self, out_events: &mut Vec<TraceEvent>, ) -> Result<usize>
Fetch the next batch unless the session stop signal has been set.
Returns 0 when stop was requested.
Sourcepub fn run_until_stopped(
&mut self,
out_events: &mut Vec<TraceEvent>,
poll_interval: Duration,
) -> Result<()>
pub fn run_until_stopped( &mut self, out_events: &mut Vec<TraceEvent>, poll_interval: Duration, ) -> Result<()>
Continuously drain batches until the stop signal is set.
The output buffer is reused on each iteration.
Sourcepub fn next_batch_with_filter<F>(
&mut self,
out_events: &mut Vec<TraceEvent>,
filter: F,
) -> Result<usize>
pub fn next_batch_with_filter<F>( &mut self, out_events: &mut Vec<TraceEvent>, filter: F, ) -> Result<usize>
Fetch the next batch of events, keeping only those that pass filter.
Clears out_events before filling it. Returns the number of events added.
Filtering happens during enumeration, so rejected events are never pushed to the buffer.
Sourcepub fn next_batch_decoded(
&mut self,
out_events: &mut Vec<DecodedEvent>,
) -> Result<usize>
pub fn next_batch_decoded( &mut self, out_events: &mut Vec<DecodedEvent>, ) -> Result<usize>
Fetch the next batch of decoded events into the output buffer.
Clears out_events before filling it. Returns the number of events added.
Sourcepub fn next_batch_decoded_with_filter<F>(
&mut self,
out_events: &mut Vec<DecodedEvent>,
filter: F,
) -> Result<usize>
pub fn next_batch_decoded_with_filter<F>( &mut self, out_events: &mut Vec<DecodedEvent>, filter: F, ) -> Result<usize>
Fetch the next batch of decoded events, keeping only those that pass filter.
Clears out_events before filling it. Returns the number of events added.