windows-nt/Source/XPSP1/NT/termsrv/inc/atrcint.h
2020-09-26 16:20:57 +08:00

238 lines
13 KiB
C

/**INC+**********************************************************************/
/* Header: atrcint.h */
/* */
/* Purpose: Internal tracing functions header */
/* */
/* Copyright(C) Microsoft Corporation 1997 */
/* */
/****************************************************************************/
/** Changes:
* $Log: Y:/logs/h/dcl/atrcint.h_v $
*
* Rev 1.5 10 Jul 1997 18:06:00 AK
* SFR1016: Initial changes to support Unicode
*
* Rev 1.4 10 Jul 1997 17:16:14 KH
* SFR1022: Get 16-bit trace working
**/
/**INC-**********************************************************************/
#ifndef _H_ATRCINT
#define _H_ATRCINT
/****************************************************************************/
/* */
/* CONSTANTS */
/* */
/****************************************************************************/
/****************************************************************************/
/* Internal trace state flags. Trace can be in one of three states: */
/* */
/* TRC_STATE_UNINTIALIZED : trace has been loaded but not been */
/* initialized. If a call is made to output a */
/* line then trace will automatically intialize */
/* itself and move to TRC_STATE_INITIALIZED. */
/* */
/* TRC_STATE_INITIALIZED : this is the normal state - trace is loaded and */
/* initialized. Outputting of trace lines is */
/* permitted in this mode. */
/* */
/* TRC_STATE_TERMINATED : trace has been terminated. Outputting of */
/* trace lines is no longer allowed and any calls */
/* to output a line will be rejected. */
/* */
/****************************************************************************/
#define TRC_STATE_UNINITIALIZED 0
#define TRC_STATE_INITIALIZED 1
#define TRC_STATE_TERMINATED 2
/****************************************************************************/
/* Internal trace status flags. These are used in the <trcStatus> field of */
/* the TRC_SHARED_DATA structure. */
/* */
/* TRC_STATUS_ASSERT_DISPLAYED : is an assert box displayed? */
/****************************************************************************/
#define TRC_STATUS_ASSERT_DISPLAYED DCFLAG32(0)
/****************************************************************************/
/* Trace format definitions. These are used for printing various parts of */
/* the trace lines. */
/* */
/* TIME is the time in the form hours, mins, secs, hundredths. */
/* DATE is the date in the form day, month, year. */
/* FUNC is the module function name. This is of variable size. */
/* LINE is the line number within the source file. */
/* PROC is the process identifier. */
/* THRD is the thread identifier. */
/* */
/****************************************************************************/
#define TRC_TIME_FMT _T("%02d:%02d:%02d.%02d")
#define TRC_DATE_FMT _T("%02d/%02d/%02d")
#define TRC_FUNC_FMT _T("%-*.*s")
#define TRC_LINE_FMT _T("%04d")
#define TRC_PROC_FMT _T("%04.4lx")
#define TRC_THRD_FMT _T("%04.4lx")
/****************************************************************************/
/* Assert box title */
/****************************************************************************/
#define TRC_ASSERT_TITLE _T("ASSERTion failed")
/****************************************************************************/
/* Internal buffer sizes. */
/* */
/* TRC_NUM_PREFIXES : the number of prefixes supported. */
/* TRC_PREFIX_LENGTH : the length of each prefix string. */
/* TRC_MAX_SYMNAME_SIZE : the maximum length of a symbol name. */
/****************************************************************************/
#define TRC_NUM_PREFIXES 20
#define TRC_PREFIX_LENGTH 8
#define TRC_MAX_SYMNAME_SIZE 1024
/****************************************************************************/
/* Maximum number of functions to write out in a stack trace. */
/****************************************************************************/
#define TRC_MAX_SIZE_STACK_TRACE 100
/****************************************************************************/
/* */
/* TYPEDEFS */
/* */
/****************************************************************************/
/****************************************************************************/
/* TRC_FILTER */
/* ========== */
/* The pointer to the filter definition for internal tracing */
/* */
/* trcStatus : status flag to prevent multiple assert displays. */
/* trcPfxNameArray : prefix name array. */
/* trcPfxLevelArray : prefix level array. */
/* trcPfxFnLvlArray : prefix function entry/exit trace flag array. */
/* trcPfxStartArray : prefix line number range start */
/* trcPfxEndArray : prefix line number range end */
/* */
/****************************************************************************/
typedef struct tagTRC_FILTER
{
DCUINT32 trcStatus;
DCTCHAR trcPfxNameArray[TRC_NUM_PREFIXES][TRC_PREFIX_LENGTH];
DCUINT32 trcPfxLevelArray[TRC_NUM_PREFIXES];
DCBOOL32 trcPfxFnLvlArray[TRC_NUM_PREFIXES];
DCUINT32 trcPfxStartArray[TRC_NUM_PREFIXES];
DCUINT32 trcPfxEndArray[TRC_NUM_PREFIXES];
} TRC_FILTER;
typedef TRC_FILTER DCPTR PTRC_FILTER;
/****************************************************************************/
/* TRC_LINE */
/* ======== */
/* The TRC_LINE structure defines the format of a data trace line header. */
/* */
/* address : the address of the data block. */
/* hexData : the data in hex format. */
/* asciiData : the data in ascii format. */
/* end : terminating characters at the end of the line (CR+LF). */
/* */
/****************************************************************************/
typedef struct tagTRC_LINE
{
DCTCHAR address[10];
DCTCHAR hexData[36];
DCTCHAR asciiData[16];
DCTCHAR end[3];
} TRC_LINE;
typedef TRC_LINE DCPTR PTRC_LINE;
/****************************************************************************/
/* */
/* MACROS */
/* */
/****************************************************************************/
/****************************************************************************/
/* TRCInternalError */
/* ================ */
/* This macro outputs an internal error string to the debug console and */
/* the trace file. */
/****************************************************************************/
#define TRCInternalError(pText) \
{ \
TRCOutput(pText, DC_ASTRLEN(pText), TRC_LEVEL_ALT); \
}
/****************************************************************************/
/* */
/* FUNCTION PROTOTYPES */
/* */
/****************************************************************************/
/****************************************************************************/
/* */
/* TRCCheckState */
/* TRCDumpLine */
/* TRCInternalTrace */
/* TRCOutput */
/* TRCReadFlag */
/* TRCReadSharedDataConfig */
/* TRCResetTraceFiles */
/* TRCSetDefaults */
/* TRCShouldTraceThis */
/* TRCSplitPrefixes */
/* TRCStrnicmp */
/* TRCWriteFlag */
/* TRCWriteSharedDataConfig */
/* */
/****************************************************************************/
DCBOOL32 DCINTERNAL TRCCheckState(DCVOID);
DCVOID DCINTERNAL TRCDumpLine(PDCUINT8 buffer,
DCUINT length,
DCUINT32 offset,
DCUINT traceLevel);
DCVOID DCINTERNAL TRCInternalTrace(DCUINT32 type);
DCVOID DCINTERNAL TRCOutput(PDCTCHAR pText,
DCINT length,
DCINT traceLevel);
DCVOID DCINTERNAL TRCReadFlag(PDCTCHAR entryName,
DCUINT32 flag,
PDCUINT32 pSetting);
DCVOID DCINTERNAL TRCReadSharedDataConfig(DCVOID);
DCVOID DCINTERNAL TRCResetTraceFiles(DCVOID);
DCVOID DCINTERNAL TRCSetDefaults(DCVOID);
DCBOOL DCINTERNAL TRCShouldTraceThis(DCUINT32 traceComponent,
DCUINT32 traceLevel,
PDCTCHAR pFileName,
DCUINT32 lineNumber);
DCVOID DCINTERNAL TRCSplitPrefixes(DCVOID);
DCINT32 DCINTERNAL TRCStrnicmp(PDCTCHAR pSource,
PDCTCHAR pTarget,
DCUINT32 count);
DCVOID DCINTERNAL TRCWriteFlag(PDCTCHAR entryName,
DCUINT32 flag,
DCUINT32 setting);
DCVOID DCINTERNAL TRCWriteSharedDataConfig(DCVOID);
DCVOID DCINTERNAL TRCNotifyAllTasks(DCVOID);
/****************************************************************************/
/* */
/* OPERATING SYSTEM SPECIFIC INCLUDES */
/* */
/****************************************************************************/
#include <wtrcint.h>
#endif /* _H_ATRCINT */