diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/windowssdk | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'public/windowssdk')
| -rw-r--r-- | public/windowssdk/evntprov.h | 457 |
1 files changed, 457 insertions, 0 deletions
diff --git a/public/windowssdk/evntprov.h b/public/windowssdk/evntprov.h new file mode 100644 index 0000000..c2283fc --- /dev/null +++ b/public/windowssdk/evntprov.h @@ -0,0 +1,457 @@ + +/*++ + +Copyright (c) Microsoft Corporation. All rights reserved. + +Module Name: + + evntprov.h + +Abstract: + + This defines the unified provider side user mode API. + +Revision History: + +--*/ + +#ifndef _EVNTPROV_H_ +#define _EVNTPROV_H_ + +#pragma once + +#ifndef EVNTAPI +#ifndef MIDL_PASS +#ifdef _EVNT_SOURCE_ +#define EVNTAPI __stdcall +#else +#define EVNTAPI DECLSPEC_IMPORT __stdcall +#endif // _EVNT_SOURCE_ +#endif // MIDL_PASS +#endif // EVNTAPI + +#ifdef __cplusplus +extern "C" { +#endif + + +#define EVENT_MIN_LEVEL (0) +#define EVENT_MAX_LEVEL (0xff) + +#define EVENT_ACTIVITY_CTRL_GET_ID (1) +#define EVENT_ACTIVITY_CTRL_SET_ID (2) +#define EVENT_ACTIVITY_CTRL_CREATE_ID (3) +#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4) +#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5) + +typedef ULONGLONG REGHANDLE, *PREGHANDLE; + +#define MAX_EVENT_DATA_DESCRIPTORS (128) +#define MAX_EVENT_FILTER_DATA_SIZE (1024) + +#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000) + +// +// EVENT_DATA_DESCRIPTOR is used to pass in user data items +// in events. +// +typedef struct _EVENT_DATA_DESCRIPTOR { + + ULONGLONG Ptr; // Pointer to data + ULONG Size; // Size of data in bytes + ULONG Reserved; + +} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR; + +// +// EVENT_DESCRIPTOR describes and categorizes an event. +// +typedef struct _EVENT_DESCRIPTOR { + + USHORT Id; + UCHAR Version; + UCHAR Channel; + UCHAR Level; + UCHAR Opcode; + USHORT Task; + ULONGLONG Keyword; + +} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR; + +typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR; + +// +// EVENT_FILTER_DESCRIPTOR is used to pass in enable filter +// data item to a user callback function. +// +typedef struct _EVENT_FILTER_DESCRIPTOR { + + ULONGLONG Ptr; + ULONG Size; + ULONG Type; + +} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR; + + +typedef struct _EVENT_FILTER_HEADER { + + USHORT Id; + UCHAR Version; + UCHAR Reserved[5]; + ULONGLONG InstanceId; + ULONG Size; + ULONG NextOffset; + +} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER; + +#ifndef _ETW_KM_ + +// +// Optional callback function that users provide +// +typedef +VOID +(NTAPI *PENABLECALLBACK) ( + __in LPCGUID SourceId, + __in ULONG IsEnabled, + __in UCHAR Level, + __in ULONGLONG MatchAnyKeyword, + __in ULONGLONG MatchAllKeyword, + __in_opt PEVENT_FILTER_DESCRIPTOR FilterData, + __inout_opt PVOID CallbackContext + ); + +// +// Registration APIs +// + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventRegister( + __in LPCGUID ProviderId, + __in_opt PENABLECALLBACK EnableCallback, + __in_opt PVOID CallbackContext, + __out PREGHANDLE RegHandle + ); +#endif + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventUnregister( + __in REGHANDLE RegHandle + ); +#endif + +// +// Control (Is Enabled) APIs +// + +#if (WINVER >= _WIN32_WINNT_VISTA) +BOOLEAN +EVNTAPI +EventEnabled( + __in REGHANDLE RegHandle, + __in PCEVENT_DESCRIPTOR EventDescriptor + ); +#endif + +#if (WINVER >= _WIN32_WINNT_VISTA) +BOOLEAN +EVNTAPI +EventProviderEnabled( + __in REGHANDLE RegHandle, + __in UCHAR Level, + __in ULONGLONG Keyword + ); +#endif + +// +// Writing (Publishing/Logging) APIs +// + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventWrite( + __in REGHANDLE RegHandle, + __in PCEVENT_DESCRIPTOR EventDescriptor, + __in ULONG UserDataCount, + __in_ecount_opt(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData + ); +#endif + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventWriteTransfer( + __in REGHANDLE RegHandle, + __in PCEVENT_DESCRIPTOR EventDescriptor, + __in_opt LPCGUID ActivityId, + __in_opt LPCGUID RelatedActivityId, + __in ULONG UserDataCount, + __in_ecount_opt(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData + ); +#endif + +#if (WINVER >= _WIN32_WINNT_WIN7) +ULONG +EVNTAPI +EventWriteEx( + __in REGHANDLE RegHandle, + __in PCEVENT_DESCRIPTOR EventDescriptor, + __in ULONG64 Filter, + __in ULONG Flags, + __in_opt LPCGUID ActivityId, + __in_opt LPCGUID RelatedActivityId, + __in ULONG UserDataCount, + __in_ecount_opt(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData + ); +#endif + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventWriteString( + __in REGHANDLE RegHandle, + __in UCHAR Level, + __in ULONGLONG Keyword, + __in PCWSTR String + ); +#endif + + +// +// ActivityId Control APIs +// + +#if (WINVER >= _WIN32_WINNT_VISTA) +ULONG +EVNTAPI +EventActivityIdControl( + __in ULONG ControlCode, + __inout LPGUID ActivityId + ); +#endif + +#endif // _ETW_KM_ + + +// +// Macros to create Event and Event Data Descriptors +// + +FORCEINLINE +VOID +EventDataDescCreate( + __out PEVENT_DATA_DESCRIPTOR EventDataDescriptor, + __in const VOID* DataPtr, + __in ULONG DataSize + ) +{ + EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr; + EventDataDescriptor->Size = DataSize; + EventDataDescriptor->Reserved = 0; + return; +} + +FORCEINLINE +VOID +EventDescCreate( + __out PEVENT_DESCRIPTOR EventDescriptor, + __in USHORT Id, + __in UCHAR Version, + __in UCHAR Channel, + __in UCHAR Level, + __in USHORT Task, + __in UCHAR Opcode, + __in ULONGLONG Keyword + ) +{ + EventDescriptor->Id = Id; + EventDescriptor->Version = Version; + EventDescriptor->Channel = Channel; + EventDescriptor->Level = Level; + EventDescriptor->Task = Task; + EventDescriptor->Opcode = Opcode; + EventDescriptor->Keyword = Keyword; + return; +} + +FORCEINLINE +VOID +EventDescZero( + __out PEVENT_DESCRIPTOR EventDescriptor + ) +{ + memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR)); + return; +} + +// +// Macros to extract info from an Event Descriptor +// + +FORCEINLINE +USHORT +EventDescGetId( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Id); +} + +FORCEINLINE +UCHAR +EventDescGetVersion( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Version); +} + +FORCEINLINE +USHORT +EventDescGetTask( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Task); +} + +FORCEINLINE +UCHAR +EventDescGetOpcode( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Opcode); +} + +FORCEINLINE +UCHAR +EventDescGetChannel( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Channel); +} + +FORCEINLINE +UCHAR +EventDescGetLevel( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Level); +} + +FORCEINLINE +ULONGLONG +EventDescGetKeyword( + __in PCEVENT_DESCRIPTOR EventDescriptor + ) +{ + return (EventDescriptor->Keyword); +} + +// +// Macros to set info into an Event Descriptor +// + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetId( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in USHORT Id + ) +{ + EventDescriptor->Id = Id; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetVersion( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in UCHAR Version + ) +{ + EventDescriptor->Version = Version; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetTask( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in USHORT Task + ) +{ + EventDescriptor->Task = Task; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetOpcode( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in UCHAR Opcode + ) +{ + EventDescriptor->Opcode = Opcode; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetLevel( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in UCHAR Level + ) +{ + EventDescriptor->Level = Level; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetChannel( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in UCHAR Channel + ) +{ + EventDescriptor->Channel = Channel; + return (EventDescriptor); +} + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescSetKeyword( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in ULONGLONG Keyword + ) +{ + EventDescriptor->Keyword = Keyword; + return (EventDescriptor); +} + + +FORCEINLINE +PEVENT_DESCRIPTOR +EventDescOrKeyword( + __in PEVENT_DESCRIPTOR EventDescriptor, + __in ULONGLONG Keyword + ) +{ + EventDescriptor->Keyword |= Keyword; + return (EventDescriptor); +} + + +#ifdef __cplusplus +} +#endif +#endif + |