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

210 lines
3.8 KiB
C++

struct _FORMATS_MEM_WIN {
DWORD cBits;
FMTTYPE fmtType;
DWORD radix;
DWORD fTwoFields;
DWORD cchMax;
PTSTR lpszDescription;
};
extern _FORMATS_MEM_WIN g_FormatsMemWin[];
extern const int g_nMaxNumFormatsMemWin;
//
// Enum type and string identifier
//
extern struct _INTERFACE_TYPE_NAMES {
INTERFACE_TYPE type;
PTSTR psz;
} rgInterfaceTypeNames[MaximumInterfaceType];
extern struct _BUS_TYPE_NAMES {
BUS_DATA_TYPE type;
PTSTR psz;
} rgBusTypeNames[MaximumBusDataType];
struct GEN_MEMORY_DATA {
MEMORY_TYPE memtype;
int nDisplayFormat;
ANY_MEMORY_DATA any;
};
#define IDC_MEM_PREVIOUS 1234
#define IDC_MEM_NEXT 1235
class MEMWIN_DATA : public EDITWIN_DATA {
public:
char m_OffsetExpr[MAX_OFFSET_EXPR];
BOOL m_UpdateExpr;
ULONG64 m_OffsetRead;
GEN_MEMORY_DATA m_GenMemData;
HWND m_FormatCombo;
HWND m_PreviousButton;
HWND m_NextButton;
ULONG m_Columns;
BOOL m_AllowWrite;
BOOL m_UpdateValue;
char m_ValueExpr[MAX_OFFSET_EXPR];
ULONG m_WindowDataSize;
MEMWIN_DATA();
virtual void Validate();
virtual BOOL HasEditableProperties();
virtual BOOL EditProperties();
virtual HRESULT ReadState(void);
virtual BOOL OnCreate(void);
virtual LRESULT OnCommand(WPARAM wParam, LPARAM lParam);
virtual void OnSize(void);
virtual void OnTimer(WPARAM TimerId);
virtual LRESULT OnNotify(WPARAM wParam, LPARAM lParam);
virtual void OnUpdate(UpdateType Type);
virtual void UpdateColors(void);
void ScrollLower(void);
void ScrollHigher(void);
void WriteValue(ULONG64 Offset);
void UpdateOptions(void);
ULONG64 GetAddressOfCurValue(
PULONG pCharIndex,
CHARRANGE *pCRange
);
};
typedef MEMWIN_DATA *PMEMWIN_DATA;
INT_PTR
DisplayOptionsPropSheet(
HWND hwndOwner,
HINSTANCE hinst,
MEMORY_TYPE memtypeStartPage
);
#if 0
#define MAX_CHUNK_TOREAD 4096 // maximum chunk of memory to read at one go
LRESULT
CALLBACK
MemoryEditProc(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
);
/*
void ViewMem(int view, BOOL fVoidCache);
extern TCHAR memText[MAX_MSG_TXT]; //the selected text for memory dlg
*/
struct memItem {
char iStart;
char cch;
char iFmt;
};
struct memWinDesc {
int iFormat;
ATOM atmAddress;
BOOL fLive;
BOOL fHaveAddr;
BOOL fBadRead; // dis we really read mem or just ??
PTSTR lpbBytes;
memItem *lpMi;
UINT cMi;
BOOL fEdit;
BOOL fFill;
UINT cPerLine;
//ADDR addr;
//ADDR orig_addr;
//ADDR old_addr;
TCHAR szAddress[MAX_MSG_TXT]; //the mem address expression in ascii
UINT cbRead;
};
/*
extern struct memWinDesc MemWinDesc[MAX_VIEWS];
extern struct memWinDesc TempMemWinDesc;
//
// Define the set of memory formats
//
enum {
MW_ASCII = 0,
MW_BYTE,
MW_SHORT,
MW_SHORT_HEX,
MW_SHORT_UNSIGNED,
MW_LONG,
MW_LONG_HEX,
MW_LONG_UNSIGNED,
MW_QUAD,
MW_QUAD_HEX,
MW_QUAD_UNSIGNED,
MW_REAL,
MW_REAL_LONG,
MW_REAL_TEN
};
*/
#if 0
#define MEM_FORMATS {\
1, /* ASCII */ \
1, /* BYTE */ \
2, /* SHORT */ \
2, /* SHORT_HEX */ \
2, /* SHORT_UNSIGNED */ \
4, /* LONG */ \
4, /* LONG_HEX */ \
4, /* LONG_UNSIGNED */ \
8, /* QUAD */ \
8, /* QUAD_HEX */ \
8, /* QUAD_UNSIGNED */ \
4, /* REAL */ \
8, /* REAL_LONG */ \
10, /* REAL_TEN */ \
16 /* */ \
}
#endif
#endif