summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winapi/src/shared/evntprov.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/winapi/src/shared/evntprov.rs')
-rw-r--r--third_party/rust/winapi/src/shared/evntprov.rs309
1 files changed, 309 insertions, 0 deletions
diff --git a/third_party/rust/winapi/src/shared/evntprov.rs b/third_party/rust/winapi/src/shared/evntprov.rs
new file mode 100644
index 0000000000..455ff5d292
--- /dev/null
+++ b/third_party/rust/winapi/src/shared/evntprov.rs
@@ -0,0 +1,309 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+use shared::basetsd::{SIZE_T, ULONG64};
+use shared::guiddef::{LPCGUID, LPGUID};
+use shared::minwindef::{UCHAR, ULONG, USHORT};
+use um::winnt::{ANYSIZE_ARRAY, BOOLEAN, PCWSTR, PVOID, ULONGLONG, VOID};
+pub const EVENT_MIN_LEVEL: UCHAR = 0;
+pub const EVENT_MAX_LEVEL: UCHAR = 0xff;
+pub const EVENT_ACTIVITY_CTRL_GET_ID: ULONG = 1;
+pub const EVENT_ACTIVITY_CTRL_SET_ID: ULONG = 2;
+pub const EVENT_ACTIVITY_CTRL_CREATE_ID: ULONG = 3;
+pub const EVENT_ACTIVITY_CTRL_GET_SET_ID: ULONG = 4;
+pub const EVENT_ACTIVITY_CTRL_CREATE_SET_ID: ULONG = 5;
+pub const MAX_EVENT_DATA_DESCRIPTORS: SIZE_T = 128;
+pub const MAX_EVENT_FILTER_DATA_SIZE: SIZE_T = 1024;
+pub const MAX_EVENT_FILTER_PAYLOAD_SIZE: SIZE_T = 4096;
+pub const MAX_EVENT_FILTER_EVENT_NAME_SIZE: SIZE_T = 4096;
+pub const MAX_EVENT_FILTERS_COUNT: SIZE_T = 8;
+pub const MAX_EVENT_FILTER_PID_COUNT: SIZE_T = 8;
+pub const MAX_EVENT_FILTER_EVENT_ID_COUNT: SIZE_T = 64;
+pub const EVENT_FILTER_TYPE_NONE: ULONG = 0x00000000;
+pub const EVENT_FILTER_TYPE_SCHEMATIZED: ULONG = 0x80000000;
+pub const EVENT_FILTER_TYPE_SYSTEM_FLAGS: ULONG = 0x80000001;
+pub const EVENT_FILTER_TYPE_TRACEHANDLE: ULONG = 0x80000002;
+pub const EVENT_FILTER_TYPE_PID: ULONG = 0x80000004;
+pub const EVENT_FILTER_TYPE_EXECUTABLE_NAME: ULONG = 0x80000008;
+pub const EVENT_FILTER_TYPE_PACKAGE_ID: ULONG = 0x80000010;
+pub const EVENT_FILTER_TYPE_PACKAGE_APP_ID: ULONG = 0x80000020;
+pub const EVENT_FILTER_TYPE_PAYLOAD: ULONG = 0x80000100;
+pub const EVENT_FILTER_TYPE_EVENT_ID: ULONG = 0x80000200;
+pub const EVENT_FILTER_TYPE_EVENT_NAME: ULONG = 0x80000400;
+pub const EVENT_FILTER_TYPE_STACKWALK: ULONG = 0x80001000;
+pub const EVENT_FILTER_TYPE_STACKWALK_NAME: ULONG = 0x80001000;
+pub const EVENT_FILTER_TYPE_STACKWALK_LEVEL_KW: ULONG = 0x80004000;
+pub const EVENT_DATA_DESCRIPTOR_TYPE_NONE: UCHAR = 0;
+pub const EVENT_DATA_DESCRIPTOR_TYPE_EVENT_METADATA: UCHAR = 1;
+pub const EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA: UCHAR = 2;
+pub const EVENT_DATA_DESCRIPTOR_TYPE_TIMESTAMP_OVERRIDE: UCHAR = 3;
+pub const EVENT_WRITE_FLAG_NO_FAULTING: ULONG = 0x00000001;
+pub const EVENT_WRITE_FLAG_INPRIVATE: ULONG = 0x00000002;
+pub type REGHANDLE = ULONGLONG;
+pub type PREGHANDLE = *mut REGHANDLE;
+STRUCT!{struct EVENT_DATA_DESCRIPTOR_u_s {
+ Type: UCHAR,
+ Reserved1: UCHAR,
+ Reserved2: USHORT,
+}}
+UNION!{union EVENT_DATA_DESCRIPTOR_u {
+ [u32; 1],
+ Reserved Reserved_mut: ULONG,
+ s s_mut: EVENT_DATA_DESCRIPTOR_u_s,
+}}
+STRUCT!{struct EVENT_DATA_DESCRIPTOR {
+ Ptr: ULONGLONG,
+ Size: ULONG,
+ u: EVENT_DATA_DESCRIPTOR_u,
+}}
+pub type PEVENT_DATA_DESCRIPTOR = *mut EVENT_DATA_DESCRIPTOR;
+STRUCT!{struct EVENT_DESCRIPTOR {
+ Id: USHORT,
+ Version: UCHAR,
+ Channel: UCHAR,
+ Level: UCHAR,
+ Opcode: UCHAR,
+ Task: USHORT,
+ Keyword: ULONGLONG,
+}}
+pub type PEVENT_DESCRIPTOR = *mut EVENT_DESCRIPTOR;
+pub type PCEVENT_DESCRIPTOR = *const EVENT_DESCRIPTOR;
+STRUCT!{struct EVENT_FILTER_DESCRIPTOR {
+ Ptr: ULONGLONG,
+ Size: ULONG,
+ Type: ULONG,
+}}
+pub type PEVENT_FILTER_DESCRIPTOR = *mut EVENT_FILTER_DESCRIPTOR;
+STRUCT!{struct EVENT_FILTER_HEADER {
+ Id: USHORT,
+ Version: UCHAR,
+ Reserved: [UCHAR; 5],
+ InstanceId: ULONGLONG,
+ Size: ULONG,
+ NextOffset: ULONG,
+}}
+pub type PEVENT_FILTER_HEADER = *mut EVENT_FILTER_HEADER;
+STRUCT!{struct EVENT_FILTER_EVENT_ID {
+ FilterIn: BOOLEAN,
+ Reserved: UCHAR,
+ Count: USHORT,
+ Events: [USHORT; ANYSIZE_ARRAY],
+}}
+pub type PEVENT_FILTER_EVENT_ID = *mut EVENT_FILTER_EVENT_ID;
+STRUCT!{struct EVENT_FILTER_EVENT_NAME {
+ MatchAnyKeyword: ULONGLONG,
+ MatchAllKeyword: ULONGLONG,
+ Level: UCHAR,
+ FilterIn: BOOLEAN,
+ NameCount: USHORT,
+ Names: [UCHAR; ANYSIZE_ARRAY],
+}}
+pub type PEVENT_FILTER_EVENT_NAME = *mut EVENT_FILTER_EVENT_NAME;
+STRUCT!{struct EVENT_FILTER_LEVEL_KW {
+ MatchAnyKeyword: ULONGLONG,
+ MatchAllKeyword: ULONGLONG,
+ Level: UCHAR,
+ FilterIn: BOOLEAN,
+}}
+ENUM!{enum EVENT_INFO_CLASS {
+ EventProviderBinaryTrackInfo,
+ EventProviderSetReserved1,
+ EventProviderSetTraits,
+ EventProviderUseDescriptorType,
+ MaxEventInfo,
+}}
+FN!{stdcall PENABLECALLBACK(
+ SourceId: LPCGUID,
+ IsEnabled: ULONG,
+ Level: UCHAR,
+ MatchAnyKeyword: ULONGLONG,
+ MatchAllKeyword: ULONGLONG,
+ FilterData: PEVENT_FILTER_DESCRIPTOR,
+ CallbackContext: PVOID,
+) -> ()}
+extern "system" {
+ pub fn EventRegister(
+ ProviderId: LPCGUID,
+ EnableCallback: PENABLECALLBACK,
+ CallbackContext: PVOID,
+ RegHandle: PREGHANDLE,
+ ) -> ULONG;
+ pub fn EventUnregister(
+ RegHandle: REGHANDLE,
+ ) -> ULONG;
+ pub fn EventSetInformation(
+ RegHandle: REGHANDLE,
+ InformationClass: EVENT_INFO_CLASS,
+ EventInformation: PVOID,
+ InformationLength: ULONG,
+ ) -> ULONG;
+ pub fn EventEnabled(
+ RegHandle: REGHANDLE,
+ EventDescriptor: PCEVENT_DESCRIPTOR,
+ ) -> BOOLEAN;
+ pub fn EventProviderEnabled(
+ RegHandle: REGHANDLE,
+ Level: UCHAR,
+ Keyword: ULONGLONG,
+ ) -> BOOLEAN;
+ pub fn EventWrite(
+ RegHandle: REGHANDLE,
+ EventDescriptor: PCEVENT_DESCRIPTOR,
+ UserDataCount: ULONG,
+ UserData: PEVENT_DATA_DESCRIPTOR,
+ ) -> ULONG;
+ pub fn EventWriteTransfer(
+ RegHandle: REGHANDLE,
+ EventDescriptor: PCEVENT_DESCRIPTOR,
+ ActivityId: LPCGUID,
+ RelatedActivityId: LPCGUID,
+ UserDataCount: ULONG,
+ UserData: PEVENT_DATA_DESCRIPTOR,
+ ) -> ULONG;
+ pub fn EventWriteEx(
+ RegHandle: REGHANDLE,
+ EventDescriptor: PCEVENT_DESCRIPTOR,
+ Filter: ULONG64,
+ Flags: ULONG,
+ ActivityId: LPCGUID,
+ RelatedActivityId: LPCGUID,
+ UserDataCount: ULONG,
+ UserData: PEVENT_DATA_DESCRIPTOR,
+ ) -> ULONG;
+ pub fn EventWriteString(
+ RegHandle: REGHANDLE,
+ Level: UCHAR,
+ Keyword: ULONGLONG,
+ EventString: PCWSTR,
+ ) -> ULONG;
+ pub fn EventActivityIdControl(
+ ControlCode: ULONG,
+ ActivityId: LPGUID,
+ ) -> ULONG;
+}
+#[inline]
+pub unsafe fn EventDataDescCreate(
+ EventDataDescriptor: PEVENT_DATA_DESCRIPTOR,
+ DataPtr: *const VOID,
+ DataSize: ULONG,
+) {
+ (*EventDataDescriptor).Ptr = DataPtr as ULONGLONG;
+ (*EventDataDescriptor).Size = DataSize;
+ *(*EventDataDescriptor).u.Reserved_mut() = 0;
+}
+#[inline]
+pub unsafe fn EventDescCreate(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Id: USHORT,
+ Version: UCHAR,
+ Channel: UCHAR,
+ Level: UCHAR,
+ Task: USHORT,
+ Opcode: UCHAR,
+ Keyword: ULONGLONG,
+) {
+ (*EventDescriptor).Id = Id;
+ (*EventDescriptor).Version = Version;
+ (*EventDescriptor).Channel = Channel;
+ (*EventDescriptor).Level = Level;
+ (*EventDescriptor).Task = Task;
+ (*EventDescriptor).Opcode = Opcode;
+ (*EventDescriptor).Keyword = Keyword;
+}
+#[inline]
+pub unsafe fn EventDescZero(EventDescriptor: PEVENT_DESCRIPTOR) {
+ use core::ptr::write_bytes;
+ // FIXME: 16 = sizeof::<EVENT_DESCRIPTOR>()
+ write_bytes(EventDescriptor, 0, 16);
+}
+#[inline]
+pub unsafe fn EventDescGetId(EventDescriptor: PCEVENT_DESCRIPTOR) -> USHORT {
+ (*EventDescriptor).Id
+}
+#[inline]
+pub unsafe fn EventDescGetVersion(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {
+ (*EventDescriptor).Version
+}
+#[inline]
+pub unsafe fn EventDescGetTask(EventDescriptor: PCEVENT_DESCRIPTOR) -> USHORT {
+ (*EventDescriptor).Task
+}
+#[inline]
+pub unsafe fn EventDescGetOpcode(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {
+ (*EventDescriptor).Opcode
+}
+#[inline]
+pub unsafe fn EventDescGetChannel(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {
+ (*EventDescriptor).Channel
+}
+#[inline]
+pub unsafe fn EventDescGetLevel(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {
+ (*EventDescriptor).Level
+}
+#[inline]
+pub unsafe fn EventDescGetKeyword(EventDescriptor: PCEVENT_DESCRIPTOR) -> ULONGLONG {
+ (*EventDescriptor).Keyword
+}
+#[inline]
+pub unsafe fn EventDescSetId(EventDescriptor: PEVENT_DESCRIPTOR, Id: USHORT) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Id = Id;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetVersion(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Version: UCHAR,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Version = Version;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetTask(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Task: USHORT,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Task = Task;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetOpcode(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Opcode: UCHAR,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Opcode = Opcode;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetLevel(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Level: UCHAR,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Level = Level;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetChannel(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Channel: UCHAR,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Channel = Channel;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescSetKeyword(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Keyword: ULONGLONG,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Keyword = Keyword;
+ EventDescriptor
+}
+#[inline]
+pub unsafe fn EventDescOrKeyword(
+ EventDescriptor: PEVENT_DESCRIPTOR,
+ Keyword: ULONGLONG,
+) -> PEVENT_DESCRIPTOR {
+ (*EventDescriptor).Keyword |= Keyword;
+ EventDescriptor
+}