|
|
/*++
Copyright (c) 1998-2000 Microsoft Corporation
Module Name: wintrace.h
Abstract: This module contains public definitions of the wintrace debug system.
Author: Michael Tsang (MikeTs) 01-May-2000
Environment: User mode
Revision History:
--*/
#ifndef _WINTRACE_H
#define _WINTRACE_H
#ifdef __cplusplus
extern "C" { #endif
//
// Constants
//
#define MAX_CLIENTNAME_LEN 16
#define MAX_TRACETXT_LEN 256
#define TRACETXT_MSGTYPE_MASK 0x00000003
#define TRACETXT_MSGTYPE_NONE 0x00000000
#define TRACETXT_MSGTYPE_INFO 0x00000001
#define TRACETXT_MSGTYPE_WARN 0x00000002
#define TRACETXT_MSGTYPE_ERROR 0x00000003
#define TRACETXT_BREAK 0x80000000
//
// Macros
//
#ifndef EXPORT
#define EXPORT __stdcall
#endif
#ifndef LOCAL
#define LOCAL __stdcall
#endif
#ifdef WINTRACE
#define TRACEINIT(p,t,v) TraceInit(p,t,v)
#define TRACETERMINATE() TraceTerminate()
#define TRACEPROC(s,n) static PSZ ProcName = s; \
static int ProcLevel = n; #define TRACEENTER(p) { \
if (IsTraceProcOn(ProcName, ProcLevel, TRUE))\ { \ TraceProc p; \ } \ giIndentLevel++; \ if (gdwfTraceTxt & TRACETXT_BREAK) \ { \ DebugBreak(); \ } \ } #define TRACEEXIT(p) { \
giIndentLevel--; \ if (IsTraceProcOn(ProcName, ProcLevel, FALSE))\ { \ TraceProc p; \ } \ } #define TRACEMSG(t,n,p) if (IsTraceMsgOn(ProcName, n)) \
{ \ gdwfTraceTxt |= (t); \ TraceMsg p; \ } #define TRACEINFO(n,p) TRACEMSG(TRACETXT_MSGTYPE_INFO, n, p)
#define TRACEWARN(p) TRACEMSG(TRACETXT_MSGTYPE_WARN, 1, p)
#define TRACEERROR(p) TRACEMSG(TRACETXT_MSGTYPE_ERROR, 0, p)
#define TRACEASSERT(x) if (!(x)) \
{ \ TRACEERROR(("Assertion failed in file %s " \ "at line %d\n", \ __FILE__, __LINE__)); \ } #else
#define TRACEINIT(p,t,v)
#define TRACETERMINATE()
#define TRACEPROC(s,n)
#define TRACEENTER(p)
#define TRACEEXIT(p)
#define TRACEMSG(t,n,p)
#define TRACEINFO(n,p)
#define TRACEWARN(p)
#define TRACEERROR(p)
#define TRACEASSERT(x)
#endif
//
// Type definitions
//
typedef struct _NAMETABLE { ULONG Code; PSZ pszName; } NAMETABLE, *PNAMETABLE;
//
// Exported Data
//
#ifdef WINTRACE
extern int giIndentLevel; extern DWORD gdwfTraceTxt; extern NAMETABLE WMMsgNames[]; #endif
//
// Exported function prototypes
//
#ifdef WINTRACE
BOOL EXPORT TraceInit( IN PSZ pszClientName, IN int iDefTraceLevel, IN int iDefVerboseLevel );
VOID EXPORT TraceTerminate( VOID );
BOOL EXPORT IsTraceProcOn( IN PSZ pszProcName, IN int iProcLevel, IN BOOL fEnter );
VOID EXPORT TraceProc( IN PSZ pszFormat, ... );
BOOL EXPORT IsTraceMsgOn( IN PSZ pszProcName, IN int iVerboseLevel );
VOID EXPORT TraceMsg( IN PSZ pszFormat, ... );
PSZ EXPORT LookupName( IN ULONG Code, IN PNAMETABLE NameTable ); #endif
#ifdef __cplusplus
} #endif
#endif //ifndef _WINTRACE_H
|