113 lines
2.9 KiB
C++
113 lines
2.9 KiB
C++
#ifndef _HOOKPROC_EXCEPTDIALOG_HPP_
|
|
#define _HOOKPROC_EXCEPTDIALOG_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_FONT_HPP_
|
|
#include <common/font.hpp>
|
|
#endif
|
|
#ifndef _DIALOG_DYNAMICDIALOG_HPP_
|
|
#include <dialog/dyndlg.hpp>
|
|
#endif
|
|
#ifndef _DECODE_DISASSEMBLER_HPP_
|
|
#include <decode/disasm.hpp>
|
|
#endif
|
|
#ifndef _DEBUG_EXCEPTIONRECORD_HPP_
|
|
#include <debug/except.hpp>
|
|
#endif
|
|
#ifndef _DEBUG_CONTEXT_HPP_
|
|
#include <debug/context.hpp>
|
|
#endif
|
|
|
|
class ExceptDlg : public DynamicDialog
|
|
{
|
|
public:
|
|
ExceptDlg(void);
|
|
virtual ~ExceptDlg();
|
|
WORD performDialog(const ExceptionRecord &exceptionRecord,const Context &exceptionContext);
|
|
DWORD eax(void)const;
|
|
void eax(DWORD eax);
|
|
DWORD ebx(void)const;
|
|
void ebx(DWORD ebx);
|
|
DWORD ecx(void)const;
|
|
void ecx(DWORD ecx);
|
|
DWORD edx(void)const;
|
|
void edx(DWORD edx);
|
|
DWORD esi(void)const;
|
|
void esi(DWORD esi);
|
|
DWORD edi(void)const;
|
|
void edi(DWORD edi);
|
|
DWORD esp(void)const;
|
|
void esp(DWORD esp);
|
|
DWORD ebp(void)const;
|
|
void ebp(DWORD ebp);
|
|
DWORD eip(void)const;
|
|
void eip(DWORD eip);
|
|
WORD ds(void)const;
|
|
void ds(WORD ds);
|
|
WORD es(void)const;
|
|
void es(WORD es);
|
|
WORD fs(void)const;
|
|
void fs(WORD fs);
|
|
WORD gs(void)const;
|
|
void gs(WORD gs);
|
|
WORD cs(void)const;
|
|
void cs(WORD cs);
|
|
WORD ss(void)const;
|
|
void ss(WORD ss);
|
|
BOOL signFlag(void)const;
|
|
void signFlag(BOOL signFlag);
|
|
BOOL carryFlag(void)const;
|
|
void carryFlag(BOOL carryFlag);
|
|
BOOL overflowFlag(void)const;
|
|
void overflowFlag(BOOL overflowFlag);
|
|
BOOL zeroFlag(void)const;
|
|
void zeroFlag(BOOL zeroFlag);
|
|
BOOL parityFlag(void)const;
|
|
void parityFlag(BOOL parityFlag);
|
|
BOOL auxiliaryFlag(void)const;
|
|
void auxiliaryFlag(BOOL auxiliaryFlag);
|
|
BOOL directionFlag(void)const;
|
|
void directionFlag(BOOL directionFlag);
|
|
BOOL interruptFlag(void)const;
|
|
void interruptFlag(BOOL interruptFlag);
|
|
void clear(void);
|
|
protected:
|
|
virtual WORD dlgCode(CallbackData &someCallbackData);
|
|
virtual WORD dlgCommand(DWORD commandID,CallbackData &someCallbackData);
|
|
virtual BOOL dlgInitDialog(CallbackData &someCallbackData);
|
|
virtual void dlgDestroyDialog(CallbackData &someCallbackData);
|
|
private:
|
|
enum {EditControlID=200,MaxDecodeBytes=96};
|
|
enum {DebugEAX=500,DebugEBX=501,DebugECX=502,DebugEDX=503,DebugESI=504,DebugEDI=505,DebugESP=506,
|
|
DebugEBP=507,DebugDS=508,DebugES=509,DebugFS=510,DebugGS=511,DebugCS=512,DebugSS=513,
|
|
DebugEIP=514,DebugFlagsSign=515,DebugFlagsCarry=516,DebugFlagsOverflow=517,DebugFlagsZero=518,
|
|
DebugFlagsParity=519,DebugFlagsAuxiliary=520,DebugFlagsDirection=521,DebugFlagsInterrupt=522};
|
|
ExceptDlg(const ExceptDlg &loginDialog);
|
|
void showException(DWORD exceptionAddress);
|
|
void showContext(void);
|
|
|
|
DisAssembler mDisAssembler;
|
|
ExceptionRecord mExceptionRecord;
|
|
Context mExceptionContext;
|
|
Font mEditFont;
|
|
};
|
|
|
|
inline
|
|
ExceptDlg::ExceptDlg(void)
|
|
: mEditFont("MS LineDraw",-8,Font::PitchFixed|Font::WeightBold)
|
|
{
|
|
}
|
|
|
|
inline
|
|
ExceptDlg::ExceptDlg(const ExceptDlg &/*argDialog*/)
|
|
{
|
|
}
|
|
|
|
inline
|
|
ExceptDlg::~ExceptDlg()
|
|
{
|
|
}
|
|
#endif
|
|
|