Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename IDirect3D9N>
- struct MyDirect3D9
- {
- static BOOL Hook(IDirect3D9N* obj);
- // ...
- }
- BOOL MyDirect3D9<IDirect3D9> Hook(LPDIRECT3D9EX obj)
- {
- BOOL rv = FALSE;
- rv |= VTHOOKFUNC(IDirect3D9, CreateDevice);
- // Like 5 more functions for other interfaces
- rv |= HookVTable(
- obj,
- 0,
- reinterpret_cast<FARPROC>(MyQueryInterface),
- reinterpret_cast<FARPROC&>(QueryInterface),
- __FUNCTION__": QueryInterface");
- return rv;
- }
- BOOL MyDirect3D9<IDirect3D9Ex> Hook(LPDIRECT3D9EX obj)
- {
- BOOL rv = FALSE;
- rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDevice);
- // Like 5 more functions for other interfaces
- rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDeviceEx);
- // Like 5 more Ex functions for other interfaces
- rv |= HookVTable(
- obj,
- 0,
- reinterpret_cast<FARPROC>(MyQueryInterface),
- reinterpret_cast<FARPROC&>(QueryInterface),
- __FUNCTION__": QueryInterface");
- return rv;
- }
- /*
- * VS
- */
- template<typename IDirect3D9N>
- struct MyDirect3D9
- {
- static BOOL Hook(IDirect3D9N* obj);
- {
- BOOL rv = FALSE;
- rv |= VTHOOKFUNC(IDirect3D9N, CreateDevice);
- // Like 5 more functions for other interfaces
- rv |= HookEx(obj);
- rv |= HookVTable(
- obj,
- 0,
- reinterpret_cast<FARPROC>(MyQueryInterface),
- reinterpret_cast<FARPROC&>(QueryInterface),
- __FUNCTION__": QueryInterface");
- return rv;
- }
- static BOOL HookEx(IDirect3D9N* obj);
- // ...
- }
- BOOL MyDirect3D9<IDirect3D9> HookEx(LPDIRECT3D9 obj)
- {
- return TRUE;
- }
- BOOL MyDirect3D9<IDirect3D9Ex> HookEx(LPDIRECT3D9EX obj)
- {
- BOOL rv = FALSE;
- rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDeviceEx);
- // Like 5 more Ex functions for other interfaces
- return rv;
- }
Advertisement
Add Comment
Please, Sign In to add comment