1 #ifndef _STORSWTR_H_
2 #define _STORSWTR_H_
3
4 #include <stdarg.h>
5
6 #ifdef TRACE_LEVEL_FATAL
7 #undef TRACE_LEVEL_FATAL
8 #endif
9
10 #ifdef TRACE_LEVEL_ERROR
11 #undef TRACE_LEVEL_ERROR
12 #endif
13
14 #ifdef TRACE_LEVEL_WARNING
15 #undef TRACE_LEVEL_WARNING
16 #endif
17
18 #ifdef TRACE_LEVEL_INFORMATION
19 #undef TRACE_LEVEL_INFORMATION
20 #endif
21
22 #ifdef TRACE_LEVEL_VERBOSE
23 #undef TRACE_LEVEL_VERBOSE
24 #endif
25
26 #define TRACE_LEVEL_FATAL 1
27 #define TRACE_LEVEL_ERROR 2
28 #define TRACE_LEVEL_WARNING 3
29 #define TRACE_LEVEL_INFORMATION 4
30 #define TRACE_LEVEL_VERBOSE 5
31
32 // if defined, uses KdPrint instead of WMI tracing
33 #ifndef DEBUG_USE_KDPRINT
34
35 #define WPP_NORMAL_FLAGS WPP_DEFINE_BIT(TRACE_FLAG_GENERAL) \
36 WPP_DEFINE_BIT(TRACE_FLAG_PNP) \
37 WPP_DEFINE_BIT(TRACE_FLAG_POWER) \
38 WPP_DEFINE_BIT(TRACE_FLAG_RW) \
39 WPP_DEFINE_BIT(TRACE_FLAG_IOCTL) \
40 WPP_DEFINE_BIT(TRACE_FLAG_QUEUE) \
41 WPP_DEFINE_BIT(TRACE_FLAG_WMI) \
42 WPP_DEFINE_BIT(TRACE_FLAG_TIMER) \
43 WPP_DEFINE_BIT(TRACE_FLAG_INIT) \
44 WPP_DEFINE_BIT(TRACE_FLAG_LOCK) \
45 WPP_DEFINE_BIT(TRACE_FLAG_DEBUG1) \
46 WPP_DEFINE_BIT(TRACE_FLAG_DEBUG2) \
47 WPP_DEFINE_BIT(TRACE_FLAG_MCN) \
48 WPP_DEFINE_BIT(TRACE_FLAG_ISR) \
49 WPP_DEFINE_BIT(TRACE_FLAG_ENUM) \
50 WPP_DEFINE_BIT(TRACE_FLAG_LOGOTEST) \
51 WPP_DEFINE_BIT(TRACE_FLAG_DUMP) \
52 WPP_DEFINE_BIT(TRACE_FLAG_SCSI)
53
54 #define WPP_CONTROL_GUIDS_NORMAL_FLAGS(_GUID) \
55 WPP_DEFINE_CONTROL_GUID(wppCtlGuid, _GUID, WPP_NORMAL_FLAGS)
56
57 #define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) \
58 (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= lvl)
59 #define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) WPP_LEVEL_LOGGER(flags)
60
61 #define DEBUG_USE_WPP
62
63 #else // DEBUG_USE_KDPRINT
64
65 #ifdef DEBUG_USE_WPP
66 #undef DEBUG_USE_WPP
67 #endif
68
69 #ifdef WPP_INIT_TRACING
70 #undef WPP_INIT_TRACING
71 #endif
72
73 #ifdef WPP_CLEANUP
74 #undef WPP_CLEANUP
75 #endif
76
77 #define WPP_INIT_TRACING(_DRIVER, _REGISTRY)
78 #define WPP_CLEANUP(_DRIVER)
79
80 typedef enum _DEBUG_FLAGS {
81 TRACE_FLAG_GENERAL = 0,
82 TRACE_FLAG_PNP,
83 TRACE_FLAG_POWER,
84 TRACE_FLAG_RW,
85 TRACE_FLAG_IOCTL,
86 TRACE_FLAG_QUEUE,
87 TRACE_FLAG_WMI,
88 TRACE_FLAG_TIMER,
89 TRACE_FLAG_INIT,
90 TRACE_FLAG_LOCK,
91 TRACE_FLAG_DEBUG1,
92 TRACE_FLAG_DEBUG2,
93 TRACE_FLAG_MCN,
94 TRACE_FLAG_ISR,
95 TRACE_FLAG_ENUM,
96 TRACE_FLAG_LOGOTEST,
97 TRACE_FLAG_DUMP,
98 TRACE_FLAG_SCSI
99 } DEBUG_FLAGS, *PDEBUG_FLAGS;
100
101 #if DBG && (NTDDI_VERSION >= NTDDI_WINXP)
102
103 #define TracePrint(x) StorDebugPrint x
104
105 #if DEBUG_MAIN_SOURCE
106
StorDebugPrint(int DebugPrintLevel,DEBUG_FLAGS DebugPrintFlags,PCCHAR DebugMessage,...)107 void StorDebugPrint(int DebugPrintLevel, DEBUG_FLAGS DebugPrintFlags, PCCHAR DebugMessage, ...)
108 {
109 va_list ap;
110 UNREFERENCED_PARAMETER(DebugPrintFlags);
111 va_start(ap, DebugMessage);
112 vDbgPrintEx(DEBUG_COMP_ID, DebugPrintLevel, DebugMessage, ap);
113 va_end(ap);
114 }
115
116 #else
117
118 void StorDebugPrint(int DebugPrintLevel, DEBUG_FLAGS DebugPrintFlags, PCCHAR DebugMessage, ...);
119
120 #endif // DEBUG_MAIN_SOURCE
121
122 #else // DBG && (NTDDI_VERSION >= NTDDI_WINXP)
123
124 #define TracePrint(x)
125
126 #endif // DBG && (NTDDI_VERSION >= NTDDI_WINXP)
127
128 #endif // DEBUG_USE_KDPRINT
129
130 #endif // _STORSWTR_H_
131