📄 record.h
字号:
#pragma once
#define DEBUG_MSG 0
#define EXTRA_MSG 1
#define HOOK_MSG 2
#define UNKNOWN_MSG -1
#define UPDATE_INTERVAL 20
#define UPDATE_INTERVAL_TIME 3000
struct Type ;
// record for all paramters decoded
struct ParamBlock
{
LPBYTE m_pBlock ;
DWORD m_dwSize ;
BOOL m_bFunction ;
BOOL m_bStruct ;
CString m_strMsg ;
CPtrArray m_arStruct ;
public :
ParamBlock ( ) ;
~ParamBlock ( ) ;
void Present ( CTreeCtrl& ctrl , HTREEITEM hParent ) ;
} ;
// record register information
struct Register
{
DWORD Eax ;
DWORD Ebx ;
DWORD Ecx ;
DWORD Edx ;
DWORD Ebp ;
DWORD Esp ;
DWORD Esi ;
DWORD Edi ;
DWORD Flags ;
} ;
// record for detail information about a hooked calling
struct Dispatch
{
// attribute
DWORD m_dwTime1 , m_dwTime2 ;
DWORD m_dwDepth ;
DWORD m_dwReturn ;
BOOL m_bPending ;
DWORD m_dwListItem ;
CString m_strFunction ;
BOOL m_bHasName ;
WORD m_wOrdinal ;
BOOL m_bExport ;
BOOL m_bPostInvalid ;
BOOL m_bWillDeleted ;
CString m_strImportName ;
CString m_strExportName ;
CString m_strImportPathName ;
CString m_strExportPathName ;
Register* m_pReg ;
Register* m_pRegPost ;
ParamBlock* m_pParamBlock ;
ParamBlock* m_pParamBlockPost ;
Type* m_pType ;
public :
Dispatch ( ) ;
~Dispatch ( ) ;
} ;
// basic record
struct Record
{
UINT m_nType ;
UINT m_nIconID ;
DWORD m_dwTime ;
CString m_strMsg ;
Dispatch* m_pDispatch ;
public :
Record ( ) ;
~Record ( ) ;
void Present ( CString& msg ) ;
void Present2 ( CString& msg ) ;
} ;
class CDancerDoc ;
// manager for performing results recording
class CRecordManager
{
public :
// attribute
CPtrArray m_arRecord ;
DWORD m_dwUpdated ;
DWORD m_dwUpdated2 ;
DWORD m_dwBaseTime ;
FILE* m_pFile ;
CDancerDoc* m_pDancerDoc ;
CRITICAL_SECTION m_csSync ;
public :
CRecordManager ( ) ;
~CRecordManager ( ) ;
// operation
void Start ( ) ;
void Stop ( ) ;
void AttachTo ( CDancerDoc* pDancerDoc ) ; // attach to a document
void Dispose ( ) ;
void ClearAll ( ) ;
void AddDebugMsg ( const CString& msg , UINT nIcon ) ;
void AddExtraMsg ( const CString& msg , UINT nIcon ) ;
Record* AddHookMsg ( Dispatch* pDispatch ) ;
void CompleteMsg ( Dispatch* pDispatch ) ; // called when a call finished
void Update ( ) ;
private :
void Dump ( Record* pRecord ) ; // dump to log file
void Dump ( ) ;
void AddMsg ( Record* pRecord ) ;
} ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -