1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
//Copyright (C) Microsoft Corporation, All Rights Reserved
//
//Abstract:
//
// Header file for the debug tracing related function defintions and macros.
//
//Environment:
//
// User mode
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
// Define the tracing flags.
//
// Tracing GUID - FC04E08F-6981-4597-A879-311ED3882506
#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID( \
CustomSensorsTraceGuid, (FC04E08F,6981,4597,A879,311ED3882506), \
WPP_DEFINE_BIT(EntryExit) \
WPP_DEFINE_BIT(DataFlow) \
WPP_DEFINE_BIT(Verbose) \
WPP_DEFINE_BIT(Information) \
WPP_DEFINE_BIT(Warning) \
WPP_DEFINE_BIT(Error) \
WPP_DEFINE_BIT(Fatal) \
WPP_DEFINE_BIT(DriverStatus) \
)
#define WPP_FLAG_LEVEL_LOGGER(flag, level) WPP_LEVEL_LOGGER(flag)
#define WPP_FLAG_LEVEL_ENABLED(flag, level) (WPP_LEVEL_ENABLED(flag) && WPP_CONTROL(WPP_BIT_ ## flag).Level >= level)
#define WPP_LEVEL_FLAGS_LOGGER(level,flags) WPP_LEVEL_LOGGER(flags)
#define WPP_LEVEL_FLAGS_ENABLED(level, flags) (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= level)
// This comment block is scanned by the trace preprocessor to define our
// Trace function.
//
// begin_wpp config
//
// FUNC TraceEvents(LEVEL, FLAGS, MSG, ...);
//
// FUNC TraceFatal{LEVEL=TRACE_LEVEL_FATAL,FLAGS=Fatal}(MSG,...);
// FUNC TraceError{LEVEL=TRACE_LEVEL_ERROR,FLAGS=Error}(MSG,...);
// FUNC TraceWarning{LEVEL=TRACE_LEVEL_WARNING,FLAGS=Warning}(MSG,...);
// FUNC TraceInformation{LEVEL=TRACE_LEVEL_INFORMATION,FLAGS=Information}(MSG,...);
// FUNC TraceVerbose{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=Verbose}(MSG,...);
// FUNC TracePerformance{PERF=DUMMY,LEVEL=TRACE_LEVEL_PERF}(FLAGS,MSG,...);
//
// FUNC TraceData{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=DataFlow}(MSG,...);
//
// FUNC TraceDriverStatus{LEVEL=TRACE_LEVEL_INFORMATION,FLAGS=DriverStatus}(MSG,...);
//
// end_wpp
//
// CLX ---------------------------------------------------------------------------------------------------
//
//MACRO: CLX_FunctionEnter
//
//begin_wpp config
//USEPREFIX (CLX_FunctionEnter, "%!STDPREFIX! CLX %!FUNC! FunctionEnter");
//FUNC CLX_FunctionEnter{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(...);
//end_wpp
//MACRO: CLX_FunctionExit
//
//begin_wpp config
//USEPREFIX (CLX_FunctionExit, "%!STDPREFIX! CLX %!FUNC! FunctionExit: %!STATUS!", __status);
//FUNC CLX_FunctionExit{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(CLXEXIT);
//end_wpp
#define WPP_LEVEL_FLAGS_CLXEXIT_ENABLED(LEVEL, FLAGS, status) WPP_LEVEL_FLAGS_ENABLED(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_CLXEXIT_LOGGER(LEVEL, FLAGS, status) WPP_LEVEL_FLAGS_LOGGER(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_CLXEXIT_PRE(LEVEL, FLAGS, status) { \
NTSTATUS __status = status;
#define WPP_LEVEL_FLAGS_CLXEXIT_POST(LEVEL, FLAGS, status) /*TraceMessage()*/; \
}
// SENSOR ------------------------------------------------------------------------------------------------
//MACRO: SENSOR_FunctionEnter
//
//begin_wpp config
//USEPREFIX (SENSOR_FunctionEnter, "%!STDPREFIX! SENSOR %!FUNC! FunctionEnter");
//FUNC SENSOR_FunctionEnter{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(...);
//end_wpp
//MACRO: SENSOR_FunctionExit
//
//begin_wpp config
//USEPREFIX (SENSOR_FunctionExit, "%!STDPREFIX! SENSOR %!FUNC! FunctionExit: %!STATUS!", __status);
//FUNC SENSOR_FunctionExit{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(SENSOREXIT);
//end_wpp
#define WPP_LEVEL_FLAGS_SENSOREXIT_ENABLED(LEVEL, FLAGS, status) WPP_LEVEL_FLAGS_ENABLED(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_SENSOREXIT_LOGGER(LEVEL, FLAGS, status) WPP_LEVEL_FLAGS_LOGGER(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_SENSOREXIT_PRE(LEVEL, FLAGS, status) { \
NTSTATUS __status = status;
#define WPP_LEVEL_FLAGS_SENSOREXIT_POST(LEVEL, FLAGS, status) /*TraceMessage()*/; \
}
// SENSRSVC ------------------------------------------------------------------------------------------------
//MACRO: SENSRSVC_FunctionEnter
//
//begin_wpp config
//USEPREFIX (SENSRSVC_FunctionEnter, "%!STDPREFIX! SENSRSVC %!FUNC! FunctionEnter");
//FUNC SENSRSVC_FunctionEnter{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(...);
//end_wpp
//MACRO: SENSRSVC_FunctionExit
//
//begin_wpp config
//USEPREFIX (SENSRSVC_FunctionExit, "%!STDPREFIX! SENSRSVC %!FUNC! FunctionExit: %!HRESULT!", __hr);
//FUNC SENSRSVC_FunctionExit{LEVEL=TRACE_LEVEL_VERBOSE,FLAGS=EntryExit}(SENSRSVCEXIT);
//end_wpp
#define WPP_LEVEL_FLAGS_SENSRSVCEXIT_ENABLED(LEVEL, FLAGS, hr) WPP_LEVEL_FLAGS_ENABLED(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_SENSRSVCEXIT_LOGGER(LEVEL, FLAGS, hr) WPP_LEVEL_FLAGS_LOGGER(LEVEL, FLAGS)
#define WPP_LEVEL_FLAGS_SENSRSVCEXIT_PRE(LEVEL, FLAGS, hr) { \
HRESULT __hr = hr;
#define WPP_LEVEL_FLAGS_SENSRSVCEXIT_POST(LEVEL, FLAGS, hr) /*TraceMessage()*/; \
}
// WPP Recorder -------------------------------------------------------------------------------------------
//
// The following two macros are required to enable WPP Recorder functionality for clients of the Sensor Class Extension
//
#define WPP_RECORDER_LEVEL_FLAGS_SENSOREXIT_FILTER(LEVEL, FLAGS, status) WPP_RECORDER_LEVEL_FLAGS_FILTER(LEVEL, FLAGS)
#define WPP_RECORDER_LEVEL_FLAGS_SENSOREXIT_ARGS(LEVEL, FLAGS, status) WPP_RECORDER_LEVEL_FLAGS_ARGS(LEVEL, FLAGS)
#ifdef __cplusplus
}
#endif
|