#ifndef _HOOKPROC_EXCEPTDIALOG_HPP_ #define _HOOKPROC_EXCEPTDIALOG_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_FONT_HPP_ #include #endif #ifndef _DIALOG_DYNAMICDIALOG_HPP_ #include #endif #ifndef _DECODE_DISASSEMBLER_HPP_ #include #endif #ifndef _DEBUG_EXCEPTIONRECORD_HPP_ #include #endif #ifndef _DEBUG_CONTEXT_HPP_ #include #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