1/* 2 * ksdebug.h 3 * 4 * This file is part of the ReactOS PSDK package. 5 * 6 * Contributors: 7 * Created by Magnus Olsen. 8 * 9 * THIS SOFTWARE IS NOT COPYRIGHTED 10 * 11 * This source code is offered for use in the public domain. You may 12 * use, modify or distribute it freely. 13 * 14 * This code is distributed in the hope that it will be useful but 15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 16 * DISCLAIMED. This includes but is not limited to warranties of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 18 * 19 */ 20 21#include <evntrace.h> 22 23#if !defined(_KSDEBUG_) 24#define _KSDEBUG_ 25 26#if !defined(REMIND) 27#define QUOTE(x) #x 28#define QQUOTE(y) QUOTE(y) 29#define REMIND(str) __FILE__ "(" QQUOTE(__LINE__) ") : " str 30#endif 31 32#if defined(__cplusplus) 33extern "C" { 34#endif 35 36#if (DBG) 37 38#if defined(IRPMJFUNCDESC) 39static const PCHAR IrpMjFuncDesc[] = { 40 "IRP_MJ_CREATE", 41 "IRP_MJ_CREATE_NAMED_PIPE", 42 "IRP_MJ_CLOSE", 43 "IRP_MJ_READ", 44 "IRP_MJ_WRITE", 45 "IRP_MJ_QUERY_INFORMATION", 46 "IRP_MJ_SET_INFORMATION", 47 "IRP_MJ_QUERY_EA", 48 "IRP_MJ_SET_EA", 49 "IRP_MJ_FLUSH_BUFFERS", 50 "IRP_MJ_QUERY_VOLUME_INFORMATION", 51 "IRP_MJ_SET_VOLUME_INFORMATION", 52 "IRP_MJ_DIRECTORY_CONTROL", 53 "IRP_MJ_FILE_SYSTEM_CONTROL", 54 "IRP_MJ_DEVICE_CONTROL", 55 "IRP_MJ_INTERNAL_DEVICE_CONTROL", 56 "IRP_MJ_SHUTDOWN", 57 "IRP_MJ_LOCK_CONTROL", 58 "IRP_MJ_CLEANUP", 59 "IRP_MJ_CREATE_MAILSLOT", 60 "IRP_MJ_QUERY_SECURITY", 61 "IRP_MJ_SET_SECURITY", 62 "IRP_MJ_SET_POWER", 63 "IRP_MJ_QUERY_POWER" 64}; 65#endif /* defined(IRPMJFUNCDESC) */ 66 67#endif /* DBG */ 68 69#if defined(_NTDDK_) 70 71#define DEBUGLVL_BLAB TRACE_LEVEL_VERBOSE 72#define DEBUGLVL_VERBOSE TRACE_LEVEL_VERBOSE 73#define DEBUGLVL_TERSE TRACE_LEVEL_INFORMATION 74#define DEBUGLVL_ERROR TRACE_LEVEL_ERROR 75 76#define DEBUGLVL_WARNING TRACE_LEVEL_WARNING 77#define DEBUGLVL_INFO TRACE_LEVEL_INFORMATION 78 79#if (DBG) 80# if !defined( DEBUG_LEVEL ) 81# if defined( DEBUG_VARIABLE ) 82# if defined( KSDEBUG_INIT ) 83 ULONG DEBUG_VARIABLE = DEBUGLVL_TERSE; 84# else 85 extern ULONG DEBUG_VARIABLE; 86# endif 87# else 88# define DEBUG_VARIABLE DEBUGLVL_TERSE 89# endif 90# else 91# if defined( DEBUG_VARIABLE ) 92# if defined( KSDEBUG_INIT ) 93 ULONG DEBUG_VARIABLE = DEBUG_LEVEL; 94# else 95 extern ULONG DEBUG_VARIABLE; 96# endif 97# else 98# define DEBUG_VARIABLE DEBUG_LEVEL 99# endif 100# endif 101 102#if (NTDDI_VERSION >= NTDDI_WINXP) 103# define _DbgPrintFEx(component, lvl, strings) { \ 104 if ((lvl) <= DEBUG_VARIABLE) { \ 105 DbgPrintEx(component, lvl, STR_MODULENAME); \ 106 DbgPrintEx(component, lvl, strings); \ 107 DbgPrintEx(component, lvl, "\n"); \ 108 if ((lvl) == DEBUGLVL_ERROR) { \ 109 DbgBreakPoint(); \ 110 } \ 111 } \ 112 } 113#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 114 115# define _DbgPrintF(lvl, strings) { \ 116 if (((lvl)==DEBUG_VARIABLE) || (lvl < DEBUG_VARIABLE)) { \ 117 DbgPrint(STR_MODULENAME); \ 118 DbgPrint##strings; \ 119 DbgPrint("\n"); \ 120 if ((lvl) == DEBUGLVL_ERROR) { \ 121 DbgBreakPoint(); \ 122 } \ 123 } \ 124 } 125 126#else /* ! DBG */ 127 128#define _DbgPrintF(lvl, strings) 129 130#if (NTDDI_VERSION >= NTDDI_WINXP) 131#define _DbgPrintFEx(component, lvl, strings) 132#endif 133 134#endif /* DBG */ 135 136#endif /* defined(_NTDDK_) */ 137 138#if defined(__cplusplus) 139} 140#endif 141 142#endif /* _KSDEBUG_ */ 143