summaryrefslogtreecommitdiff
path: root/src/win32ctl/include/evntprov.h
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/win32ctl/include/evntprov.h
downloadpcp-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.h354
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_ */
+