| /* | |
| * ksdebug.h | |
| * | |
| * This file is part of the ReactOS PSDK package. | |
| * | |
| * Contributors: | |
| * Created by Magnus Olsen. | |
| * | |
| * THIS SOFTWARE IS NOT COPYRIGHTED | |
| * | |
| * This source code is offered for use in the public domain. You may | |
| * use, modify or distribute it freely. | |
| * | |
| * This code is distributed in the hope that it will be useful but | |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | |
| * DISCLAIMED. This includes but is not limited to warranties of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| * | |
| */ | |
| #include <evntrace.h> | |
| #if !defined(_KSDEBUG_) | |
| #define _KSDEBUG_ | |
| #if !defined(REMIND) | |
| #define QUOTE(x) #x | |
| #define QQUOTE(y) QUOTE(y) | |
| #define REMIND(str) __FILE__ "(" QQUOTE(__LINE__) ") : " str | |
| #endif | |
| #if defined(__cplusplus) | |
| extern "C" { | |
| #endif | |
| #if (DBG) | |
| #if defined(IRPMJFUNCDESC) | |
| static const PCHAR IrpMjFuncDesc[] = { | |
| "IRP_MJ_CREATE", | |
| "IRP_MJ_CREATE_NAMED_PIPE", | |
| "IRP_MJ_CLOSE", | |
| "IRP_MJ_READ", | |
| "IRP_MJ_WRITE", | |
| "IRP_MJ_QUERY_INFORMATION", | |
| "IRP_MJ_SET_INFORMATION", | |
| "IRP_MJ_QUERY_EA", | |
| "IRP_MJ_SET_EA", | |
| "IRP_MJ_FLUSH_BUFFERS", | |
| "IRP_MJ_QUERY_VOLUME_INFORMATION", | |
| "IRP_MJ_SET_VOLUME_INFORMATION", | |
| "IRP_MJ_DIRECTORY_CONTROL", | |
| "IRP_MJ_FILE_SYSTEM_CONTROL", | |
| "IRP_MJ_DEVICE_CONTROL", | |
| "IRP_MJ_INTERNAL_DEVICE_CONTROL", | |
| "IRP_MJ_SHUTDOWN", | |
| "IRP_MJ_LOCK_CONTROL", | |
| "IRP_MJ_CLEANUP", | |
| "IRP_MJ_CREATE_MAILSLOT", | |
| "IRP_MJ_QUERY_SECURITY", | |
| "IRP_MJ_SET_SECURITY", | |
| "IRP_MJ_SET_POWER", | |
| "IRP_MJ_QUERY_POWER" | |
| }; | |
| #endif /* defined(IRPMJFUNCDESC) */ | |
| #endif /* DBG */ | |
| #if defined(_NTDDK_) | |
| #define DEBUGLVL_BLAB TRACE_LEVEL_VERBOSE | |
| #define DEBUGLVL_VERBOSE TRACE_LEVEL_VERBOSE | |
| #define DEBUGLVL_TERSE TRACE_LEVEL_INFORMATION | |
| #define DEBUGLVL_ERROR TRACE_LEVEL_ERROR | |
| #define DEBUGLVL_WARNING TRACE_LEVEL_WARNING | |
| #define DEBUGLVL_INFO TRACE_LEVEL_INFORMATION | |
| #if (DBG) | |
| # if !defined( DEBUG_LEVEL ) | |
| # if defined( DEBUG_VARIABLE ) | |
| # if defined( KSDEBUG_INIT ) | |
| ULONG DEBUG_VARIABLE = DEBUGLVL_TERSE; | |
| # else | |
| extern ULONG DEBUG_VARIABLE; | |
| # endif | |
| # else | |
| # define DEBUG_VARIABLE DEBUGLVL_TERSE | |
| # endif | |
| # else | |
| # if defined( DEBUG_VARIABLE ) | |
| # if defined( KSDEBUG_INIT ) | |
| ULONG DEBUG_VARIABLE = DEBUG_LEVEL; | |
| # else | |
| extern ULONG DEBUG_VARIABLE; | |
| # endif | |
| # else | |
| # define DEBUG_VARIABLE DEBUG_LEVEL | |
| # endif | |
| # endif | |
| #if (NTDDI_VERSION >= NTDDI_WINXP) | |
| # define _DbgPrintFEx(component, lvl, strings) { \ | |
| if ((lvl) <= DEBUG_VARIABLE) { \ | |
| DbgPrintEx(component, lvl, STR_MODULENAME); \ | |
| DbgPrintEx(component, lvl, strings); \ | |
| DbgPrintEx(component, lvl, "\n"); \ | |
| if ((lvl) == DEBUGLVL_ERROR) { \ | |
| DbgBreakPoint(); \ | |
| } \ | |
| } \ | |
| } | |
| #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ | |
| # define _DbgPrintF(lvl, strings) { \ | |
| if (((lvl)==DEBUG_VARIABLE) || (lvl < DEBUG_VARIABLE)) { \ | |
| DbgPrint(STR_MODULENAME); \ | |
| DbgPrint##strings; \ | |
| DbgPrint("\n"); \ | |
| if ((lvl) == DEBUGLVL_ERROR) { \ | |
| DbgBreakPoint(); \ | |
| } \ | |
| } \ | |
| } | |
| #else /* ! DBG */ | |
| #define _DbgPrintF(lvl, strings) | |
| #if (NTDDI_VERSION >= NTDDI_WINXP) | |
| #define _DbgPrintFEx(component, lvl, strings) | |
| #endif | |
| #endif /* DBG */ | |
| #endif /* defined(_NTDDK_) */ | |
| #if defined(__cplusplus) | |
| } | |
| #endif | |
| #endif /* _KSDEBUG_ */ |