diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/win32ctl/include/evntprov.h | |
download | pcp-debian.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/win32ctl/include/evntprov.h')
-rw-r--r-- | src/win32ctl/include/evntprov.h | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/src/win32ctl/include/evntprov.h b/src/win32ctl/include/evntprov.h new file mode 100644 index 0000000..c0dc243 --- /dev/null +++ b/src/win32ctl/include/evntprov.h @@ -0,0 +1,354 @@ +/* + * 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 + +#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_ */ + |