| /* |
| * 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_ */ |