1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Enables Rust apps to report events using Event Tracing for Windows.
//!
//! See [About Event Tracing](https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing).

#![deny(missing_docs)]
#![cfg_attr(all(not(test), not(feature = "std")), no_std)]
#![cfg_attr(not(windows), allow(unused))]

mod guid;
mod provider;

pub mod types;

#[doc(inline)]
pub use guid::GUID;

#[doc(inline)]
pub use provider::*;

#[doc(hidden)]
pub use types::*;

#[doc(hidden)]
pub use win_etw_metadata as metadata;

mod data_descriptor;

#[doc(inline)]
pub use data_descriptor::EventDataDescriptor;

/// Errors returned by `win_etw_provider` functions.
///
/// When compiling for non-Windows platforms, this Error type becomes an uninhabited type.
#[derive(Clone, PartialEq, Eq, Debug)]
pub enum Error {
    /// A Windows (Win32) error code.
    #[cfg(target_os = "windows")]
    WindowsError(u32),
}

/// Allows an application to override the parameters for an event. The first parameter of each
/// generated event method is `options: Option<&EventOptions>`.
#[derive(Default)]
pub struct EventOptions {
    /// Overrides the level of the event, if present. Each event method has a default, which can be
    /// specified using (for example) `#[event(level = "warn")]`. If the event declaration does not
    /// specify a level, then the level will be `Level::INFO`.
    pub level: Option<win_etw_metadata::Level>,

    /// Specifies the activity ID of this event.
    pub activity_id: Option<guid::GUID>,

    /// Specifies a related activity ID for this event. This enables an application to indicate
    /// that two sets of events are related, by associating the activity IDs of the two sets.
    /// This is sometimes known as _event correlation_.
    pub related_activity_id: Option<guid::GUID>,
}

pub use win_etw_metadata::Level;