windows-nt/Source/XPSP1/NT/sdktools/debuggers/windbg/windbg.h
2020-09-26 16:20:57 +08:00

233 lines
5.4 KiB
C

/*++
Copyright (c) 1992-2001 Microsoft Corporation
Module Name:
Windbg.h
Abstract:
Main header file for the Windbg debugger.
--*/
#if ! defined( _WINDBG_ )
#define _WINDBG_
//----------------------------------------------------------------------------
//
// Global limit constants.
//
//----------------------------------------------------------------------------
#define MAX_MSG_TXT 4096 //Max text width in message boxes
#define TMP_STRING_SIZE 8192 //All purpose strings
#define MAX_CMDLINE_TXT 8192 //Max size for command line
#define MAX_VAR_MSG_TXT 8192 //Max size of a message built at run-time
#define MAX_LINE_SIZE 512 //Max inside length of editor line
#define MAX_USER_LINE MAX_LINE_SIZE //Max length of user line
//----------------------------------------------------------------------------
//
// UI constants.
//
//----------------------------------------------------------------------------
//
// Private window messages
//
#define WU_UPDATE (WM_USER + 0)
#define WU_INVALIDATE (WM_USER + 1)
#define WU_START_ENGINE (WM_USER + 2)
#define WU_ENGINE_STARTED (WM_USER + 3)
#define WU_SWITCH_WORKSPACE (WM_USER + 4)
#define WU_ENGINE_IDLE (WM_USER + 5)
#define WU_RECONFIGURE (WM_USER + 6)
// Position of window menu.
#define WINDOWMENU 4
// Position of file menu.
#define FILEMENU 0
// Toolbar control identifier.
#define ID_TOOLBAR 100
// Generic customize button ID.
#define ID_CUSTOMIZE 29876
// Generic show/hide toolbar button ID.
#define ID_SHOW_TOOLBAR 29877
// For MDI default menu handling.
#define IDM_FIRSTCHILD 30000
/*
** Include the defines which are used have numbers for string
** resources.
*/
#include "res_str.h"
//----------------------------------------------------------------------------
//
// Variables.
//
//----------------------------------------------------------------------------
// Set when the debugger is exiting.
extern BOOL g_Exit;
extern ULONG g_CommandLineStart;
extern BOOL g_QuietMode;
extern ULONG g_DefPriority;
typedef BOOL (WINAPI* PFN_FlashWindowEx)(PFLASHWINFO pfwi);
extern PFN_FlashWindowEx g_FlashWindowEx;
//Handle to instance data
extern HINSTANCE g_hInst;
//Main window frame
extern HWND g_hwndFrame;
// Handle to MDI client
extern HWND g_hwndMDIClient;
// Width and height of MDI client.
extern ULONG g_MdiWidth, g_MdiHeight;
//Handle to accelerator table
extern HACCEL g_hMainAccTable;
//Keyboard Hooks functions
extern HHOOK hKeyHook;
// menu that belongs to g_hwndFrame
extern HMENU g_hmenuMain;
extern HMENU g_hmenuMainSave;
//Window submenu
extern HMENU g_hmenuWindowSub;
// WinDBG title text
extern TCHAR g_MainTitleText[MAX_MSG_TXT];
extern TCHAR g_ExeFilePath[];
extern TCHAR g_DumpFilePath[];
extern TCHAR g_SrcFilePath[];
enum
{
COL_PLAIN,
COL_PLAIN_TEXT,
COL_CURRENT_LINE,
COL_CURRENT_LINE_TEXT,
COL_BP_CURRENT_LINE,
COL_BP_CURRENT_LINE_TEXT,
COL_ENABLED_BP,
COL_ENABLED_BP_TEXT,
COL_DISABLED_BP,
COL_DISABLED_BP_TEXT,
COL_COUNT
};
#define OUT_MASK_COL_BASE 0xff00
#define OUT_MASK_COL_COUNT 66
#define USER_OUT_MASK_COL 64
struct INDEXED_COLOR
{
PSTR Name;
COLORREF Color;
COLORREF Default;
HBRUSH Brush;
};
extern INDEXED_COLOR g_Colors[];
extern INDEXED_COLOR g_OutMaskColors[];
#define CUSTCOL_COUNT 16
extern COLORREF g_CustomColors[];
//----------------------------------------------------------------------------
//
// Functions.
//
//----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
void UpdateFrameTitle(void);
void SetTitleServerText(PCSTR Format, ...);
void SetTitleSessionText(PCSTR Format, ...);
void SetTitleExplicitText(PCSTR Text);
void UpdateTitleSessionText(void);
BOOL CreateUiInterfaces(BOOL Remote, LPTSTR CreateOptions);
void ReleaseUiInterfaces(void);
BOOL ParseCommandLine(BOOL FirstParse);
#define StartDebugging() \
PostMessage(g_hwndFrame, WU_START_ENGINE, 0, 0)
void StopDebugging(BOOL UserRequest);
void TerminateApplication(BOOL Cancellable);
INDEXED_COLOR* GetIndexedColor(ULONG Index);
BOOL SetColor(ULONG Index, COLORREF Color);
BOOL GetOutMaskColors(ULONG Mask, COLORREF* Fg, COLORREF* Bg);
//----------------------------------------------------------------------------
//
// Macros.
//
//----------------------------------------------------------------------------
// Dbg have to be used for every assertion during Debugging time.
// If false Dbg Opens a fatal error message Box and Stops program
// Standard function to prompt an Assertion False
void ShowAssert(PTSTR condition, UINT line, PTSTR file);
// First, a sanity check
#ifdef Dbg
#undef Dbg
#endif
// Assert are assertions that will stay in final Release.
// If false Assert Opens a fatal error message Box and Stops program
#define RAssert(condition) \
{ \
if (!(condition)) \
{ \
ShowAssert( _T(#condition), __LINE__, _T(__FILE__) ); \
} \
}
#ifdef DBG
#define Assert RAssert
#define Dbg RAssert
#else // !DBG
//#pragma warning(disable: 4553) // disable warnings for pure expressions
//#pragma warning(disable: 4552) // disable level 4 warnings
#define Assert(x) ((void)0)
#define Dbg(condition) condition
#endif
#endif // _WINDBG_