Greetings!
New to SourceHook so decided to start from scratch - make a simple test hooking virtual function following the description at
http://wiki.alliedmods.net/SourceHook_Development
Expecting the output:
unhooked testfn
unhooked testfn
mytestfn
mytestfn
unhooked testfn
unhooked testfn
and get
unhooked testfn
unhooked testfn
unhooked testfn
unhooked testfn
unhooked testfn
unhooked testfn
Please point what points i'am missing
Code:
#include <SourceHook.h>
#include <sourcehook_impl.h>
using namespace SourceHook;
SourceHook::Impl::CSourceHookImpl g_SourceHook;
SourceHook::ISourceHook *g_SHPtr = &g_SourceHook;
int g_PLID = 0;
class Test
{
public:
void test(void)
{
testfn();
}
virtual void testfn(void)
{
printf("unhooked testfn\n");
}
};
SH_DECL_HOOK0_void(Test,testfn,SH_NOATTRIB,0);
SH_DECL_MANUALHOOK0_void(1,0,0,0);
Test ts1;
void mytestfn(void)
{
printf("mytestfn\n");
RETURN_META(MRES_SUPERCEDE);
}
int _tmain(int argc, _TCHAR* argv[])
{
Test tst;
ts1.testfn();
tst.testfn();
SH_ADD_MANUALHOOK(1, &ts1, SH_STATIC(mytestfn), false);
SH_ADD_HOOK(Test,testfn,&tst,SH_STATIC(mytestfn),false);
ts1.testfn();
tst.testfn();
SH_REMOVE_MANUALHOOK(1, &ts1, SH_STATIC(mytestfn), false);
SH_REMOVE_HOOK(Test,testfn,&tst,SH_STATIC(mytestfn),false);
ts1.testfn();
tst.testfn();
return 0;
}