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.
 
 
 
 
 
 

159 lines
4.1 KiB

/*++
Copyright (c) 1994-1999 Microsoft Corporation
Module Name :
debugafx.h
Abstract:
Debugging routines using AFX/MFC extensions
Author:
Ronald Meijer (ronaldm)
Project:
Internet Services Manager
Revision History:
--*/
#ifndef _DEBUGAFX_H
#define _DEBUGAFX_H
#if defined(_DEBUG) || DBG
//
// Defined private ASSERT macros because they're not available
// in SDK builds (which always uses retail MFC)
//
#undef ATLASSERT
#undef ASSERT
#undef _ASSERTE
#undef VERIFY
#define _ASSERTE(expr)\
do { if (!(expr) &&\
(IISUIFireAssert(__FILE__, __TIMESTAMP__, __LINE__, #expr)==1))\
DebugBreak(); } while (0)
#define ASSERT(expr) _ASSERTE(expr)
#define VERIFY(expr) _ASSERTE(expr)
#define ATLASSERT(expr) _ASSERTE(expr)
#define ASSERT_PTR(ptr) _ASSERTE(ptr != NULL);
#define ASSERT_READ_PTR(ptr) _ASSERTE(ptr != NULL && !IsBadReadPtr(ptr, sizeof(*ptr)));
#define ASSERT_READ_PTR2(ptr, cb) _ASSERTE(ptr != NULL && !IsBadReadPtr(ptr, cb));
#define ASSERT_WRITE_PTR(ptr) _ASSERTE(ptr != NULL && !IsBadWritePtr(ptr, sizeof(*ptr)));
#define ASSERT_WRITE_PTR2(ptr, cb) _ASSERTE(ptr != NULL && !IsBadWritePtr(ptr, cb));
#define ASSERT_READ_WRITE_PTR(ptr) ASSERT_READ_PTR(ptr); ASSERT_WRITE_PTR(ptr);
#define ASSERT_READ_WRITE_PTR2(ptr, cb) ASSERT_READ_PTR2(ptr, cb); && ASSERT_WRITE_PTR2(ptr, cb);
#define ASSERT_MSG(msg)\
do { if (IISUIFireAssert(__FILE__, __TIMESTAMP__, __LINE__, msg)==1)\
DebugBreak(); } while (0)
int COMDLL IISUIFireAssert(
const char * filename,
const char * timestamp,
int linenum,
const char * expr
);
#else
//
// Retail
//
#define ASSERT_PTR(ptr)
#define ASSERT_READ_PTR(ptr)
#define ASSERT_READ_PTR2(ptr, cb)
#define ASSERT_WRITE_PTR(ptr)
#define ASSERT_WRITE_PTR2(ptr, cb)
#define ASSERT_READ_WRITE_PTR(ptr)
#define ASSERT_READ_WRITE_PTR2(ptr, cb)
#define ASSERT_MSG(msg)
#endif // _DEBUG || DBG
#if defined(_DEBUG) || DBG
#ifndef _DEBUG
//
// SDK Build environment
//
extern COMDLL CDumpContext afxDump;
extern COMDLL BOOL afxTraceEnabled;
#endif // _DEBUG
//
// ENUM for special debug output control tokens
//
enum ENUM_DEBUG_AFX
{
EDBUG_AFX_EOL = -1
};
#define TRACEFMTPGM DbgFmtPgm(THIS_FILE, __LINE__)
#define TRACEOUT(x) { afxDump << x; }
#define TRACEEOL(x) { afxDump << x << EDBUG_AFX_EOL; }
#define TRACEEOLID(x) { afxDump << TRACEFMTPGM << x << EDBUG_AFX_EOL; }
#define TRACEEOLERR(err,x) { if (err) TRACEEOLID(x) }
//
// Append an EOL onto the debug output stream
//
COMDLL CDumpContext & operator <<(
IN CDumpContext & out,
IN ENUM_DEBUG_AFX edAfx
);
#ifndef UNICODE
COMDLL CDumpContext & operator <<(
IN CDumpContext & out,
IN LPCWSTR pwchStr
);
#endif UNICODE
//
// Format a program name and line number for output (removes the path info)
//
COMDLL extern LPCSTR DbgFmtPgm(
IN LPCSTR szFn,
IN int line
);
COMDLL CDumpContext & operator <<(
IN CDumpContext & out,
IN const GUID & guid
);
#else // !_DEBUG
//
// Retail definitions
//
#define TRACEOUT(x) ;
#define TRACEEOL(x) ;
#define TRACEEOLID(x) ;
#define TRACEEOLERR(err, x) ;
#endif // _DEBUG
#define TRACE_RETURN(msg, err) TRACEEOLID(msg); return err;
#define TRACE_NOTIMPL(msg) TRACE_RETURN(msg, E_NOTIMPL);
#define TRACE_NOINTERFACE(msg) TRACE_RETURN(msg, E_NOINTERFACE);
#define TRACE_UNEXPECTED(msg) TRACE_RETURN(msg, E_UNEXPECTED);
#define TRACE_POINTER(msg) TRACE_RETURN(msg, E_POINTER);
#endif // _DEBUGAFX_H