WindowsXP-SP1/termsrv/inc/atrcapi.h

840 lines
49 KiB
C

/**INC+**********************************************************************/
/* Header: atrcapi.h */
/* */
/* Purpose: tracing API header */
/* */
/* Copyright(C) Microsoft Corporation 1997 */
/* */
/****************************************************************************/
/** Changes:
* $Log: Y:/logs/h/dcl/atrcapi.h_v $
*
* Rev 1.12 05 Sep 1997 10:36:56 SJ
* SFR1334: Zippy enhancements
*
* Rev 1.11 01 Sep 1997 19:44:04 SJ
* SFR1333: win16 trace DLL fails to set its default trace options
*
* Rev 1.10 28 Aug 1997 14:46:08 SJ
* SFR1004: Use new trace groups - modify zippy accordingly
*
* Rev 1.9 22 Aug 1997 15:10:20 SJ
* SFR1291: Win16 Trace DLL doesn't write integers to ini file properly
*
* Rev 1.8 19 Aug 1997 10:58:26 SJ
* SFR1219: UT_Malloc and UT_Free tracing is confusing
*
* Rev 1.7 31 Jul 1997 19:40:38 SJ
* SFR1041: Port zippy to Win16
*
* Rev 1.6 14 Jul 1997 12:47:36 SJ
* SFR1004: Use new trace groups
*
* Rev 1.5 09 Jul 1997 17:05:00 AK
* SFR1016: Initial changes to support Unicode
**/
/**INC-**********************************************************************/
#ifndef _H_ATRCAPI
#define _H_ATRCAPI
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/****************************************************************************/
/* */
/* CONSTANTS */
/* */
/****************************************************************************/
/****************************************************************************/
/* Define the trace level. */
/* */
/* TRC_LEVEL_DBG : All tracing is enabled */
/* TRC_LEVEL_NRM : Debug level tracing is disabled */
/* TRC_LEVEL_ALT : Normal and debug level tracing is disabled */
/* TRC_LEVEL_ERR : Alert, normal and debug level tracing is */
/* disabled */
/* TRC_LEVEL_ASSERT : Error, alert, normal and debug level tracing */
/* is disabled */
/* TRC_LEVEL_DIS : All tracing is disabled. */
/****************************************************************************/
#define TRC_LEVEL_DBG 0
#define TRC_LEVEL_NRM 1
#define TRC_LEVEL_ALT 2
#define TRC_LEVEL_ERR 3
#define TRC_LEVEL_ASSERT 4
#define TRC_LEVEL_DIS 5
/****************************************************************************/
/* Trace type for profile tracing (function entry / exit) */
/****************************************************************************/
#define TRC_PROFILE_TRACE 8
/****************************************************************************/
/* Tracing can be switched off at compile time to allow for 'debug' and */
/* 'retail' versions of the product. The following macros disable specific */
/* trace processing. */
/* */
/* TRC_ENABLE_DBG - Enable debug tracing */
/* TRC_ENABLE_NRM - Enable normal tracing */
/* TRC_ENABLE_ALT - Enable alert tracing */
/* TRC_ENABLE_ERR - Enable error tracing */
/* TRC_ENABLE_ASSERT - Enable assert tracing */
/* TRC_ENABLE_PRF - Enable function profile tracing */
/****************************************************************************/
#if (TRC_CL == TRC_LEVEL_DBG)
#define TRC_ENABLE_DBG
#define TRC_ENABLE_NRM
#define TRC_ENABLE_ALT
#define TRC_ENABLE_ERR
#define TRC_ENABLE_ASSERT
#endif
#if (TRC_CL == TRC_LEVEL_NRM)
#define TRC_ENABLE_NRM
#define TRC_ENABLE_ALT
#define TRC_ENABLE_ERR
#define TRC_ENABLE_ASSERT
#endif
#if (TRC_CL == TRC_LEVEL_ALT)
#define TRC_ENABLE_ALT
#define TRC_ENABLE_ERR
#define TRC_ENABLE_ASSERT
#endif
#if (TRC_CL == TRC_LEVEL_ERR)
#define TRC_ENABLE_ERR
#define TRC_ENABLE_ASSERT
#endif
#if (TRC_CL == TRC_LEVEL_ASSERT)
#define TRC_ENABLE_ASSERT
#endif
#ifdef TRC_CP
#define TRC_ENABLE_PRF
#endif
/****************************************************************************/
/* Component groups. These are as follows: */
/* */
/* Client side: */
/* TRC_GROUP_NETWORK : Network layer */
/* TRC_GROUP_SECURITY : Security layer */
/* TRC_GROUP_CORE : The core */
/* TRC_GROUP_UI : User Interface */
/* TRC_GROUP_UTILITIES : Utilities */
/* TRC_GROUP_UNUSEDx : UNUSED */
/* TRC_GROUP_TRACE */
/* */
/****************************************************************************/
#define TRC_GROUP_NETWORK DCFLAGN(0)
#define TRC_GROUP_SECURITY DCFLAGN(1)
#define TRC_GROUP_CORE DCFLAGN(2)
#define TRC_GROUP_UI DCFLAGN(3)
#define TRC_GROUP_UTILITIES DCFLAGN(4)
#define TRC_GROUP_UNUSED1 DCFLAGN(5)
#define TRC_GROUP_UNUSED2 DCFLAGN(6)
#define TRC_GROUP_UNUSED3 DCFLAGN(7)
#define TRC_GROUP_UNUSED4 DCFLAGN(8)
#define TRC_GROUP_UNUSED5 DCFLAGN(9)
#define TRC_GROUP_TRACE DCFLAGN(10)
/****************************************************************************/
/* TRC_GROUP must be defined - if it is not defined then display an error. */
/****************************************************************************/
#ifndef TRC_GROUP
#error TRC_GROUP must be defined
#endif /* ifndef TRC_GROUP */
/****************************************************************************/
/* Trace option flags. These set various tracing options as follows: */
/* */
/* TRC_OPT_BREAK_ON_ERROR : Break to the debugger on an error. */
/* TRC_OPT_BEEP_ON_ERROR : Beep on an error. */
/* TRC_OPT_FILE_OUTPUT : Direct trace output to a disk file. */
/* TRC_OPT_DEBUGGER_OUTPUT : Direct trace output to the debugger. */
/* TRC_OPT_FLUSH_ON_TRACE : Flush each trace line to the disk file. */
/* TRC_OPT_PROFILE_TRACING : Enable profile tracing. */
/* TRC_OPT_STACK_TRACING : Enable stack tracing. */
/* TRC_OPT_PROCESS_ID : Display the process ID on every trace line.*/
/* TRC_OPT_THREAD_ID : Display the thread (Win32 only) on every */
/* trace line. */
/* TRC_OPT_TIME_STAMP : Display the time stamp on every line. */
/* TRC_OPT_RELATIVE_TIME_STAMP : (Reserved) Display the relative time. */
/* TRC_OPT_BREAK_ON_ASSERT : Break to the debugger on ASSERTS */
/****************************************************************************/
#define TRC_OPT_BREAK_ON_ERROR DCFLAG32(0)
#define TRC_OPT_BEEP_ON_ERROR DCFLAG32(1)
#define TRC_OPT_FILE_OUTPUT DCFLAG32(2)
#define TRC_OPT_DEBUGGER_OUTPUT DCFLAG32(3)
#define TRC_OPT_FLUSH_ON_TRACE DCFLAG32(4)
#define TRC_OPT_PROFILE_TRACING DCFLAG32(5)
#define TRC_OPT_STACK_TRACING DCFLAG32(6)
#define TRC_OPT_PROCESS_ID DCFLAG32(7)
#define TRC_OPT_THREAD_ID DCFLAG32(8)
#define TRC_OPT_TIME_STAMP DCFLAG32(9)
#define TRC_OPT_RELATIVE_TIME_STAMP DCFLAG32(10)
#define TRC_OPT_BREAK_ON_ASSERT DCFLAG32(11)
/****************************************************************************/
/* Character versions of the maximum and minimum trace levels. */
/****************************************************************************/
#define TRC_LEVEL_MIN_CHAR '0'
#define TRC_LEVEL_MAX_CHAR '5'
/****************************************************************************/
/* Character for function entry / exit tracing. */
/****************************************************************************/
#define TRC_LEVEL_PRF_CHAR 'P'
/****************************************************************************/
/* The TRC_TEST macro can be compiled in or out. When compiled in, it is */
/* equivalent to TRC_DBG. It is normally compiled out. To compile it in, */
/* define TRC_ENABLE_TST. */
/****************************************************************************/
#ifdef TRC_ENABLE_TST
#define TRC_TST TRC_DBG
#else
#define TRC_TST(x)
#endif /* TRC_ENABLE_TST */
/****************************************************************************/
/* The trace function naming macro. */
/****************************************************************************/
#if (TRC_CL < TRC_LEVEL_DIS)
#define TRC_FN(A) static const DCTCHAR __fnname[] = _T(A); \
PDCTCHAR trc_fn = (PDCTCHAR)__fnname; \
PDCTCHAR trc_file = _file_name_;
#else
#define TRC_FN(A)
#endif
/****************************************************************************/
/* Entry and exit trace macros. */
/****************************************************************************/
#define TRC_ENTRY TRC_PRF((TB, TEXT("Enter {")));
#define TRC_EXIT TRC_PRF((TB, TEXT("Exit }")));
/****************************************************************************/
/* Trace buffer definition. */
/* see TRCX below */
/* the second parameter is the length of the output buffer in characters */
/* (TRC_LINE_BUFFER_SIZE) */
/****************************************************************************/
#define TB TRC_GetBuffer(), 255
/****************************************************************************/
/* Internal buffer sizes. */
/* */
/* TRC_PREFIX_LIST_SIZE : the length of the prefix string */
/* TRC_LINE_BUFFER_SIZE : the length of the raw trace string as output by */
/* an application */
/* TRC_FRMT_BUFFER_SIZE : the length of the formatted trace string */
/* buffer - this includes the time, process ID, */
/* thread ID and function name - It must be longer */
/* than TRC_LINE_BUFFER_SIZE */
/* TRC_FILE_NAME_SIZE : the maximum length of the fully qualified */
/* trace output file name. */
/****************************************************************************/
#define TRC_PREFIX_LIST_SIZE 100
#define TRC_LINE_BUFFER_SIZE 256
#define TRC_FRMT_BUFFER_SIZE 400
#define TRC_FILE_NAME_SIZE DC_MAX_PATH
/****************************************************************************/
/* The number of trace files. This must be set to 2 - any other number is */
/* not supported. */
/****************************************************************************/
#define TRC_NUM_FILES 2
/****************************************************************************/
/* The minimum and maximum file sizes. */
/* In Win32, the trace DLL will fail to initialize if the file size is set */
/* to zero or to too high a value. */
/* Go for 1 Kb to 32 Meg. */
/****************************************************************************/
#define TRC_MIN_TRC_FILE_SIZE (0x400)
#define TRC_MAX_TRC_FILE_SIZE (0x2000000)
/****************************************************************************/
/* Defaults */
/****************************************************************************/
/****************************************************************************/
/* This is a copy of the comment in TRCSetDefaults, which should be updated */
/* whenever these defaults change. */
/* */
/* We set the following things: */
/* */
/* - trace level to Alert. */
/* - enable all component groups. */
/* - remove all prefixes. */
/* - set the maximum trace file size to the default value. */
/* - set the data truncation size to the default value. */
/* - set the function name size to the default value. */
/* - enable the beep and file flags. */
/* - set the first trace file name to TRC1.TXT */
/* - set the second trace file name to TRC2.TXT */
/* In Win32, additionally */
/* - set time stamp */
/* - set process ID */
/* - set thread ID */
/* */
/****************************************************************************/
#define TRC_DEFAULT_MAX_FILE_SIZE (100000)
#define TRC_DEFAULT_FUNC_NAME_LENGTH (12)
#define TRC_DEFAULT_DATA_TRUNC_SIZE (64)
#define TRC_DEFAULT_PREFIX_LIST (0)
#define TRC_DEFAULT_COMPONENTS (0xFFFFFFFF)
#ifdef OS_WIN32
#ifdef OS_WINCE
#define TRC_DEFAULT_FLAGS (TRC_OPT_BEEP_ON_ERROR | \
TRC_OPT_DEBUGGER_OUTPUT | \
TRC_OPT_THREAD_ID | \
TRC_OPT_TIME_STAMP )
#else // OS_WINCE
#define TRC_DEFAULT_FLAGS (TRC_OPT_BEEP_ON_ERROR | \
TRC_OPT_DEBUGGER_OUTPUT | \
TRC_OPT_FILE_OUTPUT | \
TRC_OPT_PROCESS_ID | \
TRC_OPT_THREAD_ID | \
TRC_OPT_TIME_STAMP )
#endif // OS_WINCE
#else ifdef OS_WIN16
#define TRC_DEFAULT_FLAGS (TRC_OPT_BEEP_ON_ERROR | \
TRC_OPT_DEBUGGER_OUTPUT | \
TRC_OPT_FILE_OUTPUT )
#endif
#define TRC_DEFAULT_TRACE_LEVEL (TRC_LEVEL_ALT)
#define TRC_DEFAULT_FILE_NAME0 (_T("TRC1.TXT"))
#define TRC_DEFAULT_FILE_NAME1 (_T("TRC2.TXT"))
/****************************************************************************/
/* */
/* TYPEDEFS */
/* */
/****************************************************************************/
/****************************************************************************/
/* TRC_CONFIG */
/* ========== */
/* This structure stores information about the current trace configuration. */
/* */
/* traceLevel : the current trace level. */
/* components : currently enabled component groups. */
/* maxFileSize : the maximum trace file size. */
/* dataTruncSize : the amount of data that can be traced at a time. */
/* flags : trace flags. */
/* funcNameLength : number of characters of the function name traced to */
/* the output file. */
/* prefixList : a list of prefixes. */
/* fileNames : the name of the trace files. */
/* */
/****************************************************************************/
typedef struct tagTRC_CONFIG
{
DCUINT32 traceLevel;
DCUINT32 dataTruncSize;
DCUINT32 funcNameLength;
DCUINT32 components;
DCUINT32 maxFileSize;
DCUINT32 flags;
DCTCHAR prefixList[TRC_PREFIX_LIST_SIZE];
DCTCHAR fileNames[TRC_NUM_FILES][TRC_FILE_NAME_SIZE];
} TRC_CONFIG;
typedef TRC_CONFIG DCPTR PTRC_CONFIG;
/****************************************************************************/
/* */
/* MACROS */
/* */
/****************************************************************************/
/****************************************************************************/
/* STANDARD TRACING AND ASSERTION MACROS */
/* */
/* TRC_ASSERT is for internal assertions and traces an error before popping */
/* up a message box and then terminating. It is not NLS enabled and should */
/* only be used for calls from one DC component to another. External APIs */
/* must not use TRC_ASSERT. */
/* */
/* TRC_ABORT is used on logically unreachable paths (for example */
/* the default brach of a switch which should cover all cases already). */
/* */
/* A typical trace statement will have the form: */
/* */
/* TRC_NRM((TB, _T("Hello world: %hu"), worldNumber)); */
/* */
/* The following macros either expand this to: */
/* */
/* TRCX(TRC_LEVEL_NRM, (TB, _T("Hello world: %hu"), worldNumber)); */
/* */
/* if normal level tracing is enabled or ignore it if normal level tracing */
/* is disabled. */
/* */
/****************************************************************************/
#ifdef TRC_ENABLE_DBG
#define TRC_DBG(string) TRCX(TRC_LEVEL_DBG, string)
#else
#define TRC_DBG(string)
#endif
#ifdef TRC_ENABLE_NRM
#define TRC_NRM(string) TRCX(TRC_LEVEL_NRM, string)
#else
#define TRC_NRM(string)
#endif
#ifdef TRC_ENABLE_ALT
#define TRC_ALT(string) TRCX(TRC_LEVEL_ALT, string)
#else
#define TRC_ALT(string)
#endif
#ifdef TRC_ENABLE_ERR
#define TRC_ERR(string) TRCX(TRC_LEVEL_ERR, string)
#else
#define TRC_ERR(string)
#endif
#ifdef TRC_ENABLE_ASSERT
#define TRC_ASSERT(condition, string) \
if (!(condition)) TRCX(TRC_LEVEL_ASSERT, string)
#define TRC_ABORT(string) TRCX(TRC_LEVEL_ASSERT, string)
#else
#define TRC_ASSERT(condition, string)
#define TRC_ABORT(string)
#endif
/****************************************************************************/
/* Function profile (entry/exit) tracing. */
/****************************************************************************/
#ifdef TRC_ENABLE_PRF
#define TRC_PRF(string) TRCP(string)
#else
#define TRC_PRF(string)
#endif
VOID TRCSaferSprintf(PDCTCHAR outBuf, UINT cchLen, const PDCTCHAR format,...);
/****************************************************************************/
/* Now define the actual tracing macro, TRCX. This macro compares the */
/* tracer's level against the global trace level. If the tracer's level is */
/* the same or higher than the global trace level then we: */
/* */
/* - print the 'string' which is in the form: */
/* (TB, _T("Hello world %hu"), worldNumber) which expands to */
/* (TRC_BufferGet(), "Hello world %hu", worldNumber) */
/* - call TRC_BufferTrace to actually trace the line out. */
/* */
/* Note that TRC_BufferGet() also grabs the mutex to prevent other threads */
/* from pre-empting us while we are tracing and that TRC_BufferTrace() will */
/* free the mutex for us once the trace line has been written. */
/****************************************************************************/
/****************************************************************************/
/* Use the comma operator to make sure that TRCX macros to an Lvalue. */
/* The innermost trc_fn is simply there to ensure that the whole expression */
/* is assignable. It can be replaced by any other variable, if need be. */
/****************************************************************************/
#if !defined(TRC_CONVERTOANSI)
#define TRCX(level, string) \
( \
(level >= TRC_GetTraceLevel()) ? \
( \
(TRCSaferSprintf string, \
TRC_TraceBuffer(level, TRC_GROUP, (DCUINT)__LINE__, trc_fn, trc_file),\
trc_fn) \
) \
: \
0 \
)
#define TRCP(string) \
{ \
if (TRC_ProfileTraceEnabled()) \
{ \
TRCSaferSprintf string, \
TRC_TraceBuffer(TRC_PROFILE_TRACE, \
TRC_GROUP, \
(DCUINT)__LINE__, \
trc_fn, \
trc_file); \
} \
}
#else
#define TRCX(level, string) \
( \
(level >= TRC_GetTraceLevel()) ? \
( \
( \
TRC_ConvertAndSprintf string, \
TRC_TraceBuffer(level, TRC_GROUP, (DCUINT)__LINE__, trc_fn, trc_file),\
trc_fn) \
) \
: \
0 \
)
#define TRCP(string) \
{ \
if (TRC_ProfileTraceEnabled()) \
{ \
TRC_ConvertAndSprintf string; \
TRC_TraceBuffer(TRC_PROFILE_TRACE, \
TRC_GROUP, \
(DCUINT)__LINE__, \
trc_fn, \
trc_file); \
} \
}
#endif
/****************************************************************************/
/* TRACE DATA MACROS */
/* */
/* These are very similar to the standard tracing macros defined above */
/* except that they do not accept a variable number of parameters. */
/* */
/* A typical ObMan data trace line will have the form: */
/* */
/* TRC_DATA_NRM("Some data", pData, sizeof(SOME_DATA)); */
/* */
/* If the appropriate level of tracing is enabled (normal in this case) */
/* then this line will be expanded by the following macros to: */
/* */
/* TRCX_DATA(TRC_GROUP_OBMAN, TRC_LEVEL_NRM, "Some data", pData, size); */
/* */
/****************************************************************************/
#ifdef TRC_ENABLE_DBG
#define TRC_DATA_DBG(string, buffer, length) \
TRCX_DATA(TRC_GROUP, TRC_LEVEL_DBG, _T(string), buffer, length)
#else
#define TRC_DATA_DBG(string, buffer, length)
#endif
#ifdef TRC_ENABLE_NRM
#define TRC_DATA_NRM(string, buffer, length) \
TRCX_DATA(TRC_GROUP, TRC_LEVEL_NRM, _T(string), buffer, length)
#else
#define TRC_DATA_NRM(string, buffer, length)
#endif
#ifdef TRC_ENABLE_ALT
#define TRC_DATA_ALT(string, buffer, length) \
TRCX_DATA(TRC_GROUP, TRC_LEVEL_ALT, _T(string), buffer, length)
#else
#define TRC_DATA_ALT(string, buffer, length)
#endif
#ifdef TRC_ENABLE_ERR
#define TRC_DATA_ERR(string, buffer, length) \
TRCX_DATA(TRC_GROUP, TRC_LEVEL_ERR, _T(string), buffer, length)
#else
#define TRC_DATA_ERR(string, buffer, length)
#endif
/****************************************************************************/
/* Network, TDD and Obman trace data macros - these are just normal level */
/* data tracing. */
/****************************************************************************/
#ifdef TRC_ENABLE_NRM
#define TRC_DATA_NET(string, buffer, length) \
TRCX_DATA(TRC_GROUP_NETDATA, TRC_LEVEL_NRM, string, buffer, length)
#define TRC_DATA_TDD(string, buffer, length) \
TRCX_DATA(TRC_GROUP_TDDDATA, TRC_LEVEL_NRM, string, buffer, length)
#define TRC_DATA_OBMAN(string, buffer, length) \
TRCX_DATA(TRC_GROUP_OBMANDATA, TRC_LEVEL_NRM, string, buffer, length)
#else
#define TRC_DATA_NET(string, buffer, length)
#define TRC_DATA_TDD(string, buffer, length)
#define TRC_DATA_OBMAN(string, buffer, length)
#endif
/****************************************************************************/
/* Define the trace data macro. This is used for tracing data blocks. */
/****************************************************************************/
#define TRCX_DATA(group, level, string, buffer, length) \
{ \
if (level >= TRC_GetTraceLevel()) \
{ \
TRCSaferSprintf(TB, string); \
TRC_TraceData(level, \
group, \
(DCINT)__LINE__, \
trc_fn, \
trc_file, \
(PDCUINT8)buffer, \
length); \
} \
}
/****************************************************************************/
/* */
/* FUNCTION PROTOTYPES */
/* */
/****************************************************************************/
/* */
/* TRC_Initialize */
/* TRC_Terminate */
/* TRC_GetBuffer */
/* TRC_TraceBuffer */
/* TRC_GetConfig */
/* TRC_SetConfig */
/* TRC_TraceData */
/* TRC_GetTraceLevel */
/* TRC_ProfileTraceEnabled */
/* */
/****************************************************************************/
/****************************************************************************/
/* API FUNCTION: TRC_Initialize(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function initializes the tracing for this component. */
/* */
/* PARAMETERS: */
/* =========== */
/* initShared : Boolean indicating whether we should attempt to create */
/* the trace config shared memory or not. */
/* */
/* RETURNS: */
/* ======== */
/* 0 : success. */
/* TRC_RC_XXX : failure. */
/* */
/****************************************************************************/
DCUINT32 DCAPI TRC_Initialize(DCBOOL initShared);
/****************************************************************************/
/* API FUNCTION: TRC_Terminate(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function terminates tracing for this component. */
/* */
/* PARAMETERS: */
/* =========== */
/* termShared : Boolean indicating if shared memory should be released */
/* or not. */
/* */
/* RETURNS: */
/* ======== */
/* Nothing. */
/* */
/****************************************************************************/
DCVOID DCAPI TRC_Terminate(DCBOOL termShared);
/****************************************************************************/
/* API FUNCTION: TRC_GetBuffer(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function grabs the mutex and returns a pointer to the trace */
/* buffer. */
/* */
/* PARAMETERS: */
/* =========== */
/* None. */
/* */
/* RETURNS: */
/* ======== */
/* A pointer to the trace buffer. */
/* */
/****************************************************************************/
PDCTCHAR DCAPI TRC_GetBuffer(DCVOID);
/****************************************************************************/
/* API FUNCTION: TRC_TraceBuffer(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function copies the trace line that is currently in the trace */
/* buffer into the trace file and / or to the debugger. It assumes that the */
/* mutex has already been acquired before it is called and releases the */
/* mutex before returning. */
/* */
/* PARAMETERS: */
/* =========== */
/* traceLevel : the requested trace level. */
/* traceComponent : the component group that the source file is in. */
/* lineNumber : the line number of the source file traced from. */
/* funcName : the function name traced from. */
/* fileName : the file name of the module requesting trace. */
/* */
/* RETURNS: */
/* ======== */
/* Nothing. */
/* */
/****************************************************************************/
DCVOID DCAPI TRC_TraceBuffer(DCUINT traceLevel,
DCUINT traceComponent,
DCUINT lineNumber,
PDCTCHAR funcName,
PDCTCHAR fileName);
/****************************************************************************/
/* API FUNCTION: TRC_GetConfig(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function copies the current trace settings into the buffer pointed */
/* to by pTraceConfig. */
/* */
/* PARAMETERS: */
/* =========== */
/* pTraceConfig : a pointer to a TRC_CONFIG structure. */
/* length : the length of the buffer. */
/* */
/* RETURNS: */
/* ======== */
/* TRUE : success. */
/* FALSE : failure. */
/* */
/****************************************************************************/
DCBOOL DCAPI TRC_GetConfig(PTRC_CONFIG pTraceConfig,
DCUINT length);
/****************************************************************************/
/* API FUNCTION: TRC_SetConfig(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function sets the trace configuration to that specified in the */
/* passed TRC_CONFIG structure. */
/* */
/* PARAMETERS: */
/* =========== */
/* pTraceConfig : a pointer to a TRC_CONFIG structure. */
/* length : the length of the buffer. */
/* */
/* RETURNS: */
/* ======== */
/* TRUE : success. */
/* FALSE : failure. */
/* */
/****************************************************************************/
DCBOOL DCAPI TRC_SetConfig(PTRC_CONFIG pTraceConfig,
DCUINT length);
/****************************************************************************/
/* API FUNCTION: TRC_TraceData(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* */
/* PARAMETERS: */
/* =========== */
/* traceLevel : the requested trace level. */
/* traceComponent : the component group that the source file is in. */
/* lineNumber : the line number of the source file traced from. */
/* funcName : the function name traced from. */
/* fileName : the file name of the module requesting trace. */
/* buffer : the actual data to be traced. */
/* bufLength : the length of the data. */
/* */
/* RETURNS: */
/* ======== */
/* Nothing. */
/* */
/****************************************************************************/
DCVOID DCAPI TRC_TraceData(DCUINT traceLevel,
DCUINT traceComponent,
DCUINT lineNumber,
PDCTCHAR funcName,
PDCTCHAR fileName,
PDCUINT8 buffer,
DCUINT bufLength);
/****************************************************************************/
/* API FUNCTION: TRC_GetTraceLevel(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function returns the current trace level. */
/* */
/* PARAMETERS: */
/* =========== */
/* None. */
/* */
/* RETURNS: */
/* ======== */
/* The current trace level. */
/* */
/****************************************************************************/
DCUINT DCAPI TRC_GetTraceLevel(DCVOID);
/****************************************************************************/
/* API FUNCTION: TRC_ProfileTraceEnabled(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function returns the function entry/exit trace setting. */
/* */
/* PARAMETERS: */
/* =========== */
/* None. */
/* */
/* RETURNS: */
/* ======== */
/* TRUE / FALSE - is the profile tracing enabled. */
/* */
/****************************************************************************/
DCBOOL DCAPI TRC_ProfileTraceEnabled(DCVOID);
/****************************************************************************/
/* API FUNCTION: TRC_ResetTraceFiles(...) */
/* */
/* DESCRIPTION: */
/* ============ */
/* This function resets the trace files. After checking that trace is */
/* initialized it calls the OS specific internal function. */
/* */
/* PARAMETERS: */
/* =========== */
/* None. */
/* */
/* RETURNS: */
/* ======== */
/* TRUE / FALSE - is the profile tracing enabled. */
/* */
/****************************************************************************/
DCBOOL DCAPI TRC_ResetTraceFiles(DCVOID);
/****************************************************************************/
/* Before including this file the TRC_FILE macro should be defined. This */
/* is much more efficient than relying on __FILE__ to give the correct */
/* filename since it includes unnecessary path info (and extension info). */
/* In addition each use of __FILE__ causes a new constant string to be */
/* placed in the data segment. */
/****************************************************************************/
#if (TRC_CL < TRC_LEVEL_DIS)
/************************************************************************/
/* Define another layer for _T() to work around preprocessor problems */
/************************************************************************/
#define TRC_T(x) _T(x)
#ifdef TRC_FILE
#define _file_name_ (PDCTCHAR)__filename
static const DCTCHAR __filename[] = TRC_T(TRC_FILE);
#endif /* TRC_FILE */
#endif
/****************************************************************************/
/* */
/* OPERATING SYSTEM SPECIFIC INCLUDES */
/* */
/****************************************************************************/
#include <wtrcapi.h>
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _H_ATRCAPI */