Home | History | Annotate | Download | only in include
      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)
     33 extern "C" {
     34 #endif
     35 
     36 #if (DBG)
     37 
     38 #if defined(IRPMJFUNCDESC)
     39 static 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