windows-erg 0.1.0

Ergonomic, idiomatic Rust wrappers for Windows APIs
Documentation
use std::thread;
use std::time::Duration;

use windows_erg::etw::{EventTrace, SystemProvider};

fn main() -> windows_erg::Result<()> {
    let mut trace = EventTrace::builder("StopWithWait")
        .system_provider(SystemProvider::Process)
        .start()?;

    let stop = trace.stop_handle();
    thread::spawn(move || {
        thread::sleep(Duration::from_secs(3));
        let _ = stop.set();
    });

    let mut buffer = Vec::with_capacity(256);
    trace.run_until_stopped(&mut buffer, Duration::from_millis(100))?;

    trace.stop()?;
    println!("ETW trace stopped via Wait signal");

    Ok(())
}