Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

157 lines
4.0 KiB

/*** amldebug.h - AML Debugger Definitions
*
* Copyright (c) 1996,1997 Microsoft Corporation
* Author: Michael Tsang (MikeTs)
* Created 09/24/96
*
* MODIFICATION HISTORY
*/
#ifndef _AMLDEBUG_H
#define _AMLDEBUG_H
#ifdef DEBUGGER
/*** Constants
*/
// DNS flags
#define DNSF_RECURSE 0x00000001
// DS flags
#define DSF_VERBOSE 0x00000001
// dwfDebug flags
#define DBGF_IN_DEBUGGER 0x00000001
#define DBGF_IN_VXDMODE 0x00000002
#define DBGF_IN_KDSHELL 0x00000004
#define DBGF_VERBOSE_ON 0x00000008
#define DBGF_AMLTRACE_ON 0x00000010
#define DBGF_TRIGGER_MODE 0x00000020
#define DBGF_SINGLE_STEP 0x00000040
#define DBGF_STEP_OVER 0x00000080
#define DBGF_STEP_MODES (DBGF_SINGLE_STEP | DBGF_STEP_OVER)
#define DBGF_TRACE_NONEST 0x00000100
#define DBGF_DUMPDATA_PHYADDR 0x00000200
//
// Important! Don't move the DBGF_DUMPDATA_* bits unless you update the
// following DATASIZE() macro.
//
#define DBGF_DUMPDATA_MASK 0x00000c00
#define DBGF_DUMPDATA_BYTE 0x00000000
#define DBGF_DUMPDATA_WORD 0x00000400
#define DBGF_DUMPDATA_DWORD 0x00000800
#define DBGF_DUMPDATA_STRING 0x00000c00
#define DATASIZE(f) (((f) == DBGF_DUMPDATA_STRING)? 0: \
(1L << ((f) >> 10)))
#define DBGF_DEBUGGER_REQ 0x00001000
#define DBGF_CHECKING_TRACE 0x00002000
#define DBGF_ERRBREAK_ON 0x00004000
#define DBGF_LOGEVENT_ON 0x00008000
#define DBGF_LOGEVENT_MUTEX 0x00010000
#define DBGF_DEBUG_SPEW_ON 0x00020000
#define MAX_TRIG_PTS 10
#define MAX_TRIGPT_LEN 31
#endif
#define MAX_ERRBUFF_LEN 255
#define MAX_BRK_PTS 10
#ifdef DEBUGGER
#define MAX_UNASM_CODES 0x10
#define DEF_MAXLOG_ENTRIES 204 //8K buffer
/*** Macros
*/
#define ASSERTRANGE(p,n) (TRUE)
#endif
/*** Type definitions
*/
#define BPF_ENABLED 0x00000001
typedef struct _brkpt
{
ULONG dwfBrkPt;
PUCHAR pbBrkPt;
} BRKPT, *PBRKPT;
typedef struct _objsym
{
struct _objsym *posPrev;
struct _objsym *posNext;
PUCHAR pbOp;
PNSOBJ pnsObj;
} OBJSYM, *POBJSYM;
typedef struct _eventlog
{
ULONG dwEvent;
ULONGLONG ullTime;
ULONG_PTR uipData1;
ULONG_PTR uipData2;
ULONG_PTR uipData3;
ULONG_PTR uipData4;
ULONG_PTR uipData5;
ULONG_PTR uipData6;
ULONG_PTR uipData7;
} EVENTLOG, *PEVENTLOG;
typedef struct _dbgr
{
ULONG dwfDebugger;
int iPrintLevel;
ULONG_PTR uipDumpDataAddr;
PUCHAR pbUnAsm;
PUCHAR pbUnAsmEnd;
PUCHAR pbBlkBegin;
PUCHAR pbBlkEnd;
POBJSYM posSymbolList;
BRKPT BrkPts[MAX_BRK_PTS];
ULONG dwLogSize;
ULONG dwLogIndex;
PEVENTLOG pEventLog;
EVHANDLE hConMessage;
EVHANDLE hConPrompt;
NTSTATUS rcLastError;
char szLastError[MAX_ERRBUFF_LEN + 1];
} DBGR, *PDBGR;
/*** Exported Data
*/
extern DBGR gDebugger;
#ifdef DEBUGGER
/*** Exported function prototypes
*/
VOID LOCAL AddObjSymbol(PUCHAR pbOp, PNSOBJ pnsObj);
VOID LOCAL FreeSymList(VOID);
int LOCAL CheckBP(PUCHAR pbOp);
VOID LOCAL PrintBuffData(PUCHAR pb, ULONG dwLen);
VOID LOCAL PrintIndent(PCTXT pctxt);
VOID LOCAL PrintObject(POBJDATA pdata);
VOID LOCAL LogEvent(ULONG dwEvent, ULONG_PTR uipData1, ULONG_PTR uipData2,
ULONG_PTR uipData3, ULONG_PTR uipData4, ULONG_PTR uipData5,
ULONG_PTR uipData6, ULONG_PTR uipData7);
VOID LOCAL LogSchedEvent(ULONG dwEvent, ULONG_PTR uipData1, ULONG_PTR uipData2,
ULONG_PTR uipData3);
BOOLEAN LOCAL SetLogSize(ULONG dwLogSize);
VOID LOCAL LogError(NTSTATUS rcErr);
VOID LOCAL CatError(PSZ pszFormat, ...);
VOID LOCAL ConPrintf(PSZ pszFormat, ...);
VOID LOCAL ConPrompt(PSZ pszPrompt, PSZ pszBuff, ULONG dwcbBuff);
BOOLEAN LOCAL CheckAndEnableDebugSpew(BOOLEAN fEnable);
#endif //ifdef DEBUGGER
#ifdef DEBUG
VOID LOCAL DumpMemObjCounts(VOID);
#endif //ifdef DEBUG
#endif //ifndef _AMLDEBUG_H