Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) Microsoft Corporation, 1999 - 1999
Module Name:
debug.h
Abstract:
Prototypes and definitions for debugging.
Author:
Keisuke Tsuchida (KeisukeT)
Environment:
user mode only
Notes:
Revision History:
--*/
#ifndef __MYDEBUG__
#define __MYDEBUG__
//
// Include custom debug header.
//
#include <windows.h>
#include <coredbg.h>
//
// Driver specific definition
//
#define NAME_DRIVER TEXT("STI_CI.DLL: ") // Prefix of output message. (Should be driver name)
#define REGVAL_DEBUGLEVEL TEXT("STICIDebugLevel") // Debug trace level for this binary.
//
// Defines
//
#define MAX_TEMPBUF 256
// Bit mask for trace level and flags
#define BITMASK_TRACE_LEVEL 0x0000000f
#define BITMASK_TRACE_FLAG 0x00000ff0
#define BITMASK_DEBUG_FLAG 0x0000f000
// Basic trace level
#define NO_TRACE 0 // Shows nothing.
#define MIN_TRACE 1 // Shows only error or warning.
#define MAX_TRACE 2 // Shows progress and status.
#define ULTRA_TRACE 3 // Shows progress and status in retail.
#define NEVER_TRACE 4 // Never show this unless specific bit is set.
// Trace flag to enable specific message spew. (1=on)
#define TRACE_FLAG_PROC 0x010 // Show message when entering process.(1=on)
#define TRACE_FLAG_RET 0x020 // Show message when leaving process.(1=on)
#define TRACE_FLAG_DUMP 0x040 // Show transaction data dump.
#define TRACE_IGNORE_TAG 0x080 // Disable tag check (1=disabled).
#define TRACE_MESSAGEBOX 0x100 // Show MessageBox instead of debug spew.
// Conbination of trace level and flag.
#define TRACE_PROC_ENTER ULTRA_TRACE | TRACE_FLAG_PROC // Entering procedure.
#define TRACE_PROC_LEAVE ULTRA_TRACE | TRACE_FLAG_RET // Leaving procedure.
#define TRACE_CRITICAL MIN_TRACE // Critical error. Spew always.
#define TRACE_ERROR MIN_TRACE // Error.
#define TRACE_WARNING MIN_TRACE // Possible wrong behavior.
#define TRACE_DUMP_DATA NEVER_TRACE | TRACE_FLAG_DUMP // Dump transaction data.
#define TRACE_DEVICE_DATA MAX_TRACE // Show device data.
#define TRACE_STATUS MAX_TRACE // Show status.
// Debug flag to enable/disable DEBUG_BREAKPOINT()
#define DEBUG_FLAG_DISABLE 0x1000 // Disable DEBUG_BREAK. (1=disable)
#define DEBUG_PROC_BREAK 0x2000 // Stop at the beginning of each procedure.
//
// Prototypes
//
VOID MyDebugInit( VOID );
void __cdecl DbgPrint( LPSTR lpstrMessage, ... );
void __cdecl DbgPrint( LPWSTR lpstrMessage, ... );
//
// Macro
//
#define DebugTrace(_t_, _x_) { \
if((TRACE_ERROR & BITMASK_TRACE_LEVEL) == (_t_ & BITMASK_TRACE_LEVEL )){ \ DBG_ERR(_x_); \ } else if((TRACE_WARNING & BITMASK_TRACE_LEVEL) == (_t_ & BITMASK_TRACE_LEVEL )){ \ DBG_WRN(_x_); \ } else if((TRACE_STATUS & BITMASK_TRACE_LEVEL) == (_t_ & BITMASK_TRACE_LEVEL )){ \ DBG_TRC(_x_); \ } else if( (_t_ & TRACE_FLAG_PROC) || (_t_ & TRACE_FLAG_RET )){ \ DBG_TRC(_x_); \ } \ }
#if DBG
//
// Macro for BreakPoint
//
#define DEBUG_BREAKPOINT() { \
if (DebugTraceLevel & DEBUG_FLAG_DISABLE) { \ DbgPrint(NAME_DRIVER); \ DbgPrint("*** Hit DEBUG_BREAKPOINT ***\r\n"); \ } else { \ DebugBreak(); \ } \ }
#else // DBG
#define DEBUG_BREAKPOINT()
#endif // DBG
//
// Original debug macro.
//
#if ORIGINAL_DEBUG
#if DBG
//
// Macro for debug output
//
// Note: If trace level is higher than DebugTraceLevel or specific bit is set,
// debug message will be shown.
//
#define DebugTrace(_t_, _x_) { \
if ( ((DebugTraceLevel & BITMASK_TRACE_LEVEL) >= (_t_ & BITMASK_TRACE_LEVEL )) || \ (DebugTraceLevel & BITMASK_TRACE_FLAG & (_t_)) ) { \ DbgPrint(NAME_DRIVER); \ DbgPrint _x_ ; \ } \ if( (DebugTraceLevel & DEBUG_PROC_BREAK & (_t_)) && \ (DebugTraceLevel & TRACE_FLAG_PROC) ) { \ DEBUG_BREAKPOINT(); \ } \ }
#else // DBG
#define DebugTrace(_t_, _x_)
#endif // DBG
#endif // ORIGINAL_DEBUG
//
// Obsolete
//
#define Report(_x_)
#endif // __MYDEBUG__
|