YaLTeR

Which one?

Feb 9th, 2016
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. template<typename IDirect3D9N>
  2. struct MyDirect3D9
  3. {
  4.     static BOOL Hook(IDirect3D9N* obj);
  5.     // ...
  6. }
  7.  
  8. BOOL MyDirect3D9<IDirect3D9> Hook(LPDIRECT3D9EX obj)
  9. {
  10.     BOOL rv = FALSE;
  11.     rv |= VTHOOKFUNC(IDirect3D9, CreateDevice);
  12.     // Like 5 more functions for other interfaces
  13.     rv |= HookVTable(
  14.         obj,
  15.         0,
  16.         reinterpret_cast<FARPROC>(MyQueryInterface),
  17.         reinterpret_cast<FARPROC&>(QueryInterface),
  18.         __FUNCTION__": QueryInterface");
  19.     return rv;
  20. }
  21.  
  22. BOOL MyDirect3D9<IDirect3D9Ex> Hook(LPDIRECT3D9EX obj)
  23. {
  24.     BOOL rv = FALSE;
  25.     rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDevice);
  26.     // Like 5 more functions for other interfaces
  27.     rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDeviceEx);
  28.     // Like 5 more Ex functions for other interfaces
  29.     rv |= HookVTable(
  30.         obj,
  31.         0,
  32.         reinterpret_cast<FARPROC>(MyQueryInterface),
  33.         reinterpret_cast<FARPROC&>(QueryInterface),
  34.         __FUNCTION__": QueryInterface");
  35.     return rv;
  36. }
  37.  
  38. /*
  39.  * VS
  40.  */
  41.  
  42. template<typename IDirect3D9N>
  43. struct MyDirect3D9
  44. {
  45.     static BOOL Hook(IDirect3D9N* obj);
  46.     {
  47.         BOOL rv = FALSE;
  48.         rv |= VTHOOKFUNC(IDirect3D9N, CreateDevice);
  49.         // Like 5 more functions for other interfaces
  50.         rv |= HookEx(obj);
  51.         rv |= HookVTable(
  52.             obj,
  53.             0,
  54.             reinterpret_cast<FARPROC>(MyQueryInterface),
  55.             reinterpret_cast<FARPROC&>(QueryInterface),
  56.             __FUNCTION__": QueryInterface");
  57.         return rv;
  58.     }
  59.  
  60.     static BOOL HookEx(IDirect3D9N* obj);
  61.     // ...
  62. }
  63.  
  64. BOOL MyDirect3D9<IDirect3D9> HookEx(LPDIRECT3D9 obj)
  65. {
  66.     return TRUE;
  67. }
  68.  
  69. BOOL MyDirect3D9<IDirect3D9Ex> HookEx(LPDIRECT3D9EX obj)
  70. {
  71.     BOOL rv = FALSE;
  72.     rv |= VTHOOKFUNC(IDirect3D9Ex, CreateDeviceEx);
  73.     // Like 5 more Ex functions for other interfaces
  74.     return rv;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment