#![no_std]
#![deny(missing_docs)]
use bitflags::bitflags;
#[repr(C)]
pub struct TraceLoggingMetadata {
signature: u32, size: u16, version: u8, flags: u8, magic: u64, }
pub const METADATA_SIGNATURE: u32 = 0x30_57_54_45;
pub const METADATA_MAGIC: u64 = 0xBB8A_052B_8804_0E86;
pub const METADATA_VERSION: u8 = 0;
#[cfg(target_pointer_width = "64")]
pub const METADATA_FLAGS_POINTER_WIDTH: u8 = 1;
#[cfg(not(target_pointer_width = "64"))]
pub const METADATA_FLAGS_POINTER_WIDTH: u8 = 0;
#[cfg(feature = "metadata_headers")]
#[link_section = ".rdata$etw0"]
#[used]
#[no_mangle]
static ETW_TRACE_LOGGING_METADATA: TraceLoggingMetadata = TraceLoggingMetadata {
signature: METADATA_SIGNATURE,
size: core::mem::size_of::<TraceLoggingMetadata>() as u16,
version: METADATA_VERSION,
flags: METADATA_FLAGS_POINTER_WIDTH,
magic: METADATA_MAGIC,
};
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
pub struct Level(pub u8);
impl Level {
pub const NONE: Level = Level(0);
pub const CRITICAL: Level = Level(1);
pub const FATAL: Level = Level(1);
pub const ERROR: Level = Level(2);
pub const WARN: Level = Level(3);
pub const INFO: Level = Level(4);
pub const VERBOSE: Level = Level(5);
}
bitflags! {
#[repr(transparent)]
pub struct InFlag: u8 {
const NULL = 0;
const UNICODE_STRING = 1;
const ANSI_STRING = 2;
const INT8 = 3;
const UINT8 = 4;
const INT16 = 5;
const UINT16 = 6;
const INT32 = 7;
const UINT32 = 8;
const INT64 = 9;
const UINT64 = 10;
const FLOAT = 11;
const DOUBLE = 12;
const BOOL32 = 13;
const BINARY = 14;
const GUID = 15;
const FILETIME = 17;
const SYSTEMTIME = 18;
const SID = 19;
const HEXINT32 = 20;
const HEXINT64 = 21;
const COUNTED_UNICODE_STRING = 22;
const COUNTED_ANSI_STRING = 23;
const CCOUNT_FLAG = 0x20;
const VCOUNT_FLAG = 0x40;
const CHAIN_FLAG = 0b1000_0000;
const CUSTOM_FLAG = 0b0110_0000;
const TYPE_MASK = 0b0001_1111;
const COUNT_MASK = 0b0110_0000;
const FLAG_MASK = 0b1110_0000;
}
}
impl InFlag {
#[cfg(target_pointer_width = "32")]
pub const USIZE: InFlag = InFlag::UINT32;
#[cfg(target_pointer_width = "32")]
pub const ISIZE: InFlag = InFlag::INT32;
#[cfg(target_pointer_width = "64")]
pub const USIZE: InFlag = InFlag::UINT64;
#[cfg(target_pointer_width = "64")]
pub const ISIZE: InFlag = InFlag::INT64;
}
bitflags! {
#[repr(transparent)]
pub struct OutFlag: u8 {
const NULL = 0;
const NOPRINT = 1;
const STRING = 2;
const BOOLEAN = 3;
const HEX = 4;
const PID = 5;
const TID = 6;
const PORT = 7;
const IPV4 = 8;
const IPV6 = 9;
const SOCKETADDRESS = 10;
const XML = 11;
const JSON = 12;
const WIN32ERROR = 13;
const NTSTATUS = 14;
const HRESULT = 15;
const FILETIME = 16;
const SIGNED = 17;
const UNSIGNED = 18;
const UTF8 = 35;
const PKCS7_WITH_TYPE_INFO = 36;
const DATETIME_UTC = 38;
}
}