Files
Work/hookproc/EXCPTDLG.HPP
2024-08-07 09:16:27 -04:00

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