142 lines
2.6 KiB
C
142 lines
2.6 KiB
C
#ifndef _PLUGINS_H
|
|
#define _PLUGINS_H
|
|
|
|
#ifndef PLUG_IMPEXP
|
|
#ifdef BUILD_DBG
|
|
#define PLUG_IMPEXP __declspec(dllexport)
|
|
#else
|
|
#define PLUG_IMPEXP __declspec(dllimport)
|
|
#endif //BUILD_DBG
|
|
#endif //PLUG_IMPEXP
|
|
|
|
#include "_plugin_types.h"
|
|
|
|
//structures
|
|
struct PLUG_INITSTRUCT
|
|
{
|
|
//provided by the debugger
|
|
int pluginHandle;
|
|
//provided by the pluginit function
|
|
int sdkVersion;
|
|
int pluginVersion;
|
|
char pluginName[256];
|
|
};
|
|
|
|
//callback structures
|
|
struct PLUG_CB_INITDEBUG
|
|
{
|
|
const char* szFileName;
|
|
};
|
|
|
|
struct PLUG_CB_STOPDEBUG
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
struct PLUG_CB_CREATEPROCESS
|
|
{
|
|
CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo;
|
|
IMAGEHLP_MODULE64* modInfo;
|
|
const char* DebugFileName;
|
|
};
|
|
|
|
struct PLUG_CB_EXITPROCESS
|
|
{
|
|
EXIT_PROCESS_DEBUG_INFO* ExitProcess;
|
|
};
|
|
|
|
struct PLUG_CB_CREATETHREAD
|
|
{
|
|
CREATE_THREAD_DEBUG_INFO* CreateThread;
|
|
};
|
|
|
|
struct PLUG_CB_EXITTHREAD
|
|
{
|
|
EXIT_THREAD_DEBUG_INFO* ExitThread;
|
|
};
|
|
|
|
struct PLUG_CB_SYSTEMBREAKPOINT
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
struct PLUG_CB_LOADDLL
|
|
{
|
|
LOAD_DLL_DEBUG_INFO* LoadDll;
|
|
IMAGEHLP_MODULE64* modInfo;
|
|
const char* modname;
|
|
};
|
|
|
|
struct PLUG_CB_UNLOADDLL
|
|
{
|
|
UNLOAD_DLL_DEBUG_INFO* UnloadDll;
|
|
};
|
|
|
|
struct PLUG_CB_OUTPUTDEBUGSTRING
|
|
{
|
|
OUTPUT_DEBUG_STRING_INFO* DebugString;
|
|
};
|
|
|
|
struct PLUG_CB_EXCEPTION
|
|
{
|
|
EXCEPTION_DEBUG_INFO* Exception;
|
|
};
|
|
|
|
struct PLUG_CB_BREAKPOINT
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
struct PLUG_CB_PAUSEDEBUG
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
struct PLUG_CB_RESUMEDEBUG
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
struct PLUG_CB_STEPPED
|
|
{
|
|
void* reserved;
|
|
};
|
|
|
|
//enums
|
|
enum CBTYPE
|
|
{
|
|
CB_INITDEBUG, //PLUG_CB_INITDEBUG
|
|
CB_STOPDEBUG, //PLUG_CB_STOPDEBUG
|
|
CB_CREATEPROCESS, //PLUG_CB_CREATEPROCESS
|
|
CB_EXITPROCESS, //PLUG_CB_EXITPROCESS
|
|
CB_CREATETHREAD, //PLUG_CB_CREATETHREAD
|
|
CB_EXITTHREAD, //PLUG_CB_EXITTHREAD
|
|
CB_SYSTEMBREAKPOINT, //PLUG_CB_SYSTEMBREAKPOINT
|
|
CB_LOADDLL, //PLUG_CB_LOADDLL
|
|
CB_UNLOADDLL, //PLUG_CB_UNLOADDLL
|
|
CB_OUTPUTDEBUGSTRING, //PLUG_CB_OUTPUTDEBUGSTRING
|
|
CB_EXCEPTION, //PLUG_CB_EXCEPTION
|
|
CB_BREAKPOINT, //PLUG_CB_BREAKPOINT
|
|
CB_PAUSEDEBUG, //PLUG_CB_PAUSEDEBUG
|
|
CB_RESUMEDEBUG, //PLUG_CB_RESUMEDEBUG
|
|
CB_STEPPED //PLUG_CB_STEPPED
|
|
};
|
|
|
|
//typedefs
|
|
typedef void (*CBPLUGIN)(CBTYPE cbType, void* callbackInfo);
|
|
|
|
//exports
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
PLUG_IMPEXP void _plugin_registercallback(int pluginHandle, CBTYPE cbType, CBPLUGIN cbPlugin);
|
|
PLUG_IMPEXP bool _plugin_unregistercallback(int pluginHandle, CBTYPE cbType);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _PLUGINS_H
|