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 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