| /* |
| * evntprov.h |
| * |
| * This file is part of the ReactOS PSDK package. |
| * |
| * Contributors: |
| * Created by Amine Khaldi. |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #ifndef _EVNTPROV_H_ |
| #define _EVNTPROV_H_ |
| |
| #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 |
| |
| #include <guiddef.h> |
| |
| #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 |
| |
| 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; |
| |
| typedef struct _EVENT_DATA_DESCRIPTOR { |
| ULONGLONG Ptr; |
| ULONG Size; |
| ULONG Reserved; |
| } EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR; |
| |
| struct _EVENT_FILTER_DESCRIPTOR { |
| ULONGLONG Ptr; |
| ULONG Size; |
| ULONG Type; |
| }; |
| #ifndef DEFINED_PEVENT_FILTER_DESC |
| typedef struct _EVENT_FILTER_DESCRIPTOR EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR; |
| #define DEFINED_PEVENT_FILTER_DESC 1 |
| #endif /* for evntrace.h */ |
| |
| 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_ /* for wdm.h */ |
| |
| typedef VOID |
| (NTAPI *PENABLECALLBACK)( |
| LPCGUID SourceId, |
| ULONG IsEnabled, |
| UCHAR Level, |
| ULONGLONG MatchAnyKeyword, |
| ULONGLONG MatchAllKeyword, |
| PEVENT_FILTER_DESCRIPTOR FilterData, |
| PVOID CallbackContext); |
| |
| #if (_WIN32_WINNT >= 0x0600) |
| ULONG EVNTAPI EventRegister( |
| LPCGUID ProviderId, |
| PENABLECALLBACK EnableCallback, |
| PVOID CallbackContext, |
| PREGHANDLE RegHandle |
| ); |
| |
| ULONG EVNTAPI EventUnregister( |
| REGHANDLE RegHandle |
| ); |
| |
| BOOLEAN EVNTAPI EventEnabled( |
| REGHANDLE RegHandle, |
| PCEVENT_DESCRIPTOR EventDescriptor |
| ); |
| |
| BOOLEAN EVNTAPI EventProviderEnabled( |
| REGHANDLE RegHandle, |
| UCHAR Level, |
| ULONGLONG Keyword |
| ); |
| |
| ULONG EVNTAPI EventWrite( |
| REGHANDLE RegHandle, |
| PCEVENT_DESCRIPTOR EventDescriptor, |
| ULONG UserDataCount, |
| PEVENT_DATA_DESCRIPTOR UserData |
| ); |
| |
| ULONG EVNTAPI EventWriteTransfer( |
| REGHANDLE RegHandle, |
| PCEVENT_DESCRIPTOR EventDescriptor, |
| LPCGUID ActivityId, |
| LPCGUID RelatedActivityId, |
| ULONG UserDataCount, |
| PEVENT_DATA_DESCRIPTOR UserData |
| ); |
| |
| ULONG EVNTAPI EventWriteString( |
| REGHANDLE RegHandle, |
| UCHAR Level, |
| ULONGLONG Keyword, |
| PCWSTR String |
| ); |
| |
| ULONG EVNTAPI EventActivityIdControl( |
| ULONG ControlCode, |
| LPGUID ActivityId |
| ); |
| |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ |
| |
| #if (_WIN32_WINNT >= 0x0601) |
| ULONG EVNTAPI EventWriteEx( |
| REGHANDLE RegHandle, |
| PCEVENT_DESCRIPTOR EventDescriptor, |
| ULONG64 Filter, |
| ULONG Flags, |
| LPCGUID ActivityId, |
| LPCGUID RelatedActivityId, |
| ULONG UserDataCount, |
| PEVENT_DATA_DESCRIPTOR UserData |
| ); |
| #endif /*(_WIN32_WINNT >= 0x0601)*/ |
| |
| #endif /* _ETW_KM_ */ |
| |
| FORCEINLINE |
| VOID |
| EventDataDescCreate( |
| PEVENT_DATA_DESCRIPTOR EventDataDescriptor, |
| const VOID* DataPtr, |
| ULONG DataSize) |
| { |
| EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr; |
| EventDataDescriptor->Size = DataSize; |
| EventDataDescriptor->Reserved = 0; |
| } |
| |
| FORCEINLINE |
| VOID |
| EventDescCreate( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| USHORT Id, |
| UCHAR Version, |
| UCHAR Channel, |
| UCHAR Level, |
| USHORT Task, |
| UCHAR Opcode, |
| ULONGLONG Keyword) |
| { |
| EventDescriptor->Id = Id; |
| EventDescriptor->Version = Version; |
| EventDescriptor->Channel = Channel; |
| EventDescriptor->Level = Level; |
| EventDescriptor->Task = Task; |
| EventDescriptor->Opcode = Opcode; |
| EventDescriptor->Keyword = Keyword; |
| } |
| |
| FORCEINLINE |
| VOID |
| EventDescZero( |
| PEVENT_DESCRIPTOR EventDescriptor) |
| { |
| memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR)); |
| } |
| |
| FORCEINLINE |
| USHORT |
| EventDescGetId( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Id); |
| } |
| |
| FORCEINLINE |
| UCHAR |
| EventDescGetVersion( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Version); |
| } |
| |
| FORCEINLINE |
| USHORT |
| EventDescGetTask( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Task); |
| } |
| |
| FORCEINLINE |
| UCHAR |
| EventDescGetOpcode( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Opcode); |
| } |
| |
| FORCEINLINE |
| UCHAR |
| EventDescGetChannel( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Channel); |
| } |
| |
| FORCEINLINE |
| UCHAR |
| EventDescGetLevel( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Level); |
| } |
| |
| FORCEINLINE |
| ULONGLONG |
| EventDescGetKeyword( |
| PCEVENT_DESCRIPTOR EventDescriptor) |
| { |
| return (EventDescriptor->Keyword); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetId( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| USHORT Id) |
| { |
| EventDescriptor->Id = Id; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetVersion( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| UCHAR Version) |
| { |
| EventDescriptor->Version = Version; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetTask( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| USHORT Task) |
| { |
| EventDescriptor->Task = Task; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetOpcode( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| UCHAR Opcode) |
| { |
| EventDescriptor->Opcode = Opcode; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetLevel( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| UCHAR Level) |
| { |
| EventDescriptor->Level = Level; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetChannel( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| UCHAR Channel) |
| { |
| EventDescriptor->Channel = Channel; |
| return (EventDescriptor); |
| } |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescSetKeyword( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| ULONGLONG Keyword) |
| { |
| EventDescriptor->Keyword = Keyword; |
| return (EventDescriptor); |
| } |
| |
| |
| FORCEINLINE |
| PEVENT_DESCRIPTOR |
| EventDescOrKeyword( |
| PEVENT_DESCRIPTOR EventDescriptor, |
| ULONGLONG Keyword) |
| { |
| EventDescriptor->Keyword |= Keyword; |
| return (EventDescriptor); |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _EVNTPROV_H_ */ |
| |