openDecal/Native/Inject/DirectDrawSurfaceHook.h
erik d1442e3747 Initial commit: Complete open-source Decal rebuild
All 5 phases of the open-source Decal rebuild:

Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil)
Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs
  - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters
  - Decal.Core, DecalControls, DecalRender, D3DService
Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL
Phase 4: DenAgent WinForms tray application
Phase 5: WiX installer and build script

25 C# projects building with 0 errors.
Native C++ projects require VS 2022 + Windows SDK (x86).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:27:56 +01:00

879 lines
19 KiB
C++

#ifndef __DIRECTDRAWSURFACEHOOK_H_
#define __DIRECTDRAWSURFACEHOOK_H_
#include "resource.h"
#define BEGIN_COM_MAP_EX(x) \
public: typedef x _ComMapClass; \
static HRESULT WINAPI _Cache(void* pv, REFIID iid, void** ppvObject, DWORD dw) \
{ \
_ComMapClass* p = (_ComMapClass*)pv; \
HRESULT hRes = CComObjectRootBase::_Cache(pv, iid, ppvObject, dw); \
return hRes; \
} \
IUnknown* _GetRawUnknown() \
{ ATLASSERT(_GetEntries()[0].pFunc == _ATL_SIMPLEMAPENTRY); return (IUnknown*)((int)this+_GetEntries()->dw); } \
_ATL_DECLARE_GET_UNKNOWN(x) \
HRESULT _InternalQueryInterface(REFIID iid, void** ppvObject) \
{ return InternalQueryInterface(this, _GetEntries(), iid, ppvObject); } \
const static _ATL_INTMAP_ENTRY* WINAPI _GetEntries() { \
static const _ATL_INTMAP_ENTRY _entries[] = { DEBUG_QI_ENTRY(x)
/*
#define BEGIN_COM_MAP(x) public: \
typedef x _ComMapClass; \
static HRESULT WINAPI _Cache(void* pv, REFIID iid, void** ppvObject, DWORD_PTR dw)\
{\
_ComMapClass* p = (_ComMapClass*)pv;\
p->Lock();\
HRESULT hRes = CComObjectRootBase::_Cache(pv, iid, ppvObject, dw);\
p->Unlock();\
return hRes;\
}\
IUnknown* _GetRawUnknown() \
{ ATLASSERT(_GetEntries()[0].pFunc == _ATL_SIMPLEMAPENTRY); return (IUnknown*)((DWORD_PTR)this+_GetEntries()->dw); } \
_ATL_DECLARE_GET_UNKNOWN(x)\
HRESULT _InternalQueryInterface(REFIID iid, void** ppvObject) \
{ return InternalQueryInterface(this, _GetEntries(), iid, ppvObject); } \
const static _ATL_INTMAP_ENTRY* WINAPI _GetEntries() { \
static const _ATL_INTMAP_ENTRY _entries[] = { DEBUG_QI_ENTRY(x)
/////
public: typedef CDirectDrawSurfaceHook _ComMapClass;
static HRESULT WINAPI _Cache(void* pv, REFIID iid, void** ppvObject, DWORD dw)
{
_ComMapClass* p = (_ComMapClass*)pv;
HRESULT hRes = CComObjectRootBase::_Cache(pv, iid, ppvObject, dw);
return hRes;
}
IUnknown* _GetRawUnknown()
{
ATLASSERT(_GetEntries()[0].pFunc == _ATL_SIMPLEMAPENTRY);
return (IUnknown*)((int)this+_GetEntries()->dw);
}
_ATL_DECLARE_GET_UNKNOWN(x)
HRESULT _InternalQueryInterface(REFIID iid, void** ppvObject)
{
return InternalQueryInterface(this, _GetEntries(), iid, ppvObject);
}
const static _ATL_INTMAP_ENTRY* WINAPI _GetEntries()
{
static const _ATL_INTMAP_ENTRY _entries[] = { DEBUG_QI_ENTRY(x)
/////
*/
class ATL_NO_VTABLE CDirectDrawSurfaceHook :
public CComObjectRootEx<CComMultiThreadModel>,
public IDirectDrawSurface,
public IDirectDrawSurface2,
public IDirectDrawSurface3,
public IDirectDrawSurface4
{
public:
CDirectDrawSurfaceHook()
{
}
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP_EX(CDirectDrawSurfaceHook)
COM_INTERFACE_ENTRY_IID( IID_IDirectDrawSurface, IDirectDrawSurface )
COM_INTERFACE_ENTRY_IID( IID_IDirectDrawSurface2, IDirectDrawSurface2 )
COM_INTERFACE_ENTRY_IID( IID_IDirectDrawSurface3, IDirectDrawSurface3 )
COM_INTERFACE_ENTRY_IID( IID_IDirectDrawSurface4, IDirectDrawSurface4 )
END_COM_MAP()
CComPtr< IDirectDrawSurface > m_pDDS;
CComPtr< IDirectDrawSurface2 > m_pDDS2;
CComPtr< IDirectDrawSurface3 > m_pDDS3;
CComPtr< IDirectDrawSurface4 > m_pDDS4;
void setObject( IUnknown *pDevice );
void setSurfaceNum( long nSurfaceNum );
long m_nSurfaceNum;
public:
/* IDirectDrawSurface */
STDMETHOD(AddAttachedSurface)(LPDIRECTDRAWSURFACE p1)
{
return m_pDDS->AddAttachedSurface(p1);
}
STDMETHOD(AddOverlayDirtyRect)(LPRECT p1)
{
return m_pDDS4->AddOverlayDirtyRect(p1);
//return m_pDDS->AddOverlayDirtyRect(p1);
}
STDMETHOD(Blt)(LPRECT p1,LPDIRECTDRAWSURFACE p2, LPRECT p3,DWORD p4, LPDDBLTFX p5)
{
return m_pDDS->Blt(p1, p2, p3, p4, p5);
}
STDMETHOD(BltBatch)(LPDDBLTBATCH p1, DWORD p2, DWORD p3)
{
return m_pDDS4->BltBatch(p1, p2, p3);
//return m_pDDS->BltBatch(p1, p2, p3);
}
STDMETHOD(BltFast)(DWORD p1,DWORD p2,LPDIRECTDRAWSURFACE p3, LPRECT p4,DWORD p5)
{
return m_pDDS->BltFast(p1,p2,p3,p4,p5);
}
STDMETHOD(DeleteAttachedSurface)(DWORD p1,LPDIRECTDRAWSURFACE p2)
{
return m_pDDS->DeleteAttachedSurface(p1,p2);
}
STDMETHOD(EnumAttachedSurfaces)(LPVOID p1,LPDDENUMSURFACESCALLBACK p2)
{
return m_pDDS->EnumAttachedSurfaces(p1, p2);
}
STDMETHOD(EnumOverlayZOrders)(DWORD p1,LPVOID p2,LPDDENUMSURFACESCALLBACK p3)
{
return m_pDDS->EnumOverlayZOrders(p1, p2, p3);
}
STDMETHOD(Flip)(LPDIRECTDRAWSURFACE p1, DWORD p2)
{
return m_pDDS->Flip(p1, p2);
}
STDMETHOD(GetAttachedSurface)(LPDDSCAPS p1, LPDIRECTDRAWSURFACE FAR *p2)
{
return m_pDDS->GetAttachedSurface(p1, p2);
}
STDMETHOD(GetBltStatus)(DWORD p1)
{
return m_pDDS4->GetBltStatus(p1);
} //turn m_pDDS->GetBltStatus(p1);
STDMETHOD(GetCaps)(LPDDSCAPS p1)
{
return m_pDDS->GetCaps(p1);
}
STDMETHOD(GetClipper)(LPDIRECTDRAWCLIPPER FAR* p1)
{
return m_pDDS4->GetClipper(p1);
//turn m_pDDS->GetClipper(p1);
}
STDMETHOD(GetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS4->GetColorKey(p1, p2);
//return m_pDDS->GetColorKey(p1, p2);
}
STDMETHOD(GetDC)(HDC FAR *p1)
{
//MessageBox(0, "I gota DC", "asd", 0);
return m_pDDS4->GetDC(p1);
//return m_pDDS->GetDC(p1);
}
STDMETHOD(GetFlipStatus)(DWORD p1)
{
return m_pDDS4->GetFlipStatus(p1);
//return m_pDDS->GetFlipStatus(p1);
}
STDMETHOD(GetOverlayPosition)(LPLONG p1, LPLONG p2)
{
return m_pDDS4->GetOverlayPosition(p1, p2);
//return m_pDDS->GetOverlayPosition(p1, p2);
}
STDMETHOD(GetPalette)(LPDIRECTDRAWPALETTE FAR* p1)
{
return m_pDDS4->GetPalette(p1);
//return m_pDDS->GetPalette(p1);
}
STDMETHOD(GetPixelFormat)(LPDDPIXELFORMAT p1)
{
return m_pDDS4->GetPixelFormat(p1);
//return m_pDDS->GetPixelFormat(p1);
}
STDMETHOD(GetSurfaceDesc)(LPDDSURFACEDESC p1)
{
return m_pDDS->GetSurfaceDesc(p1);
}
STDMETHOD(Initialize)(LPDIRECTDRAW p1, LPDDSURFACEDESC p2)
{
return m_pDDS->Initialize(p1, p2);
}
STDMETHOD(IsLost)()
{
return m_pDDS4->IsLost();
//return m_pDDS->IsLost();
}
STDMETHOD(Lock)(LPRECT p1,LPDDSURFACEDESC p2,DWORD p3,HANDLE p4)
{
return m_pDDS->Lock(p1, p2, p3, p4);
}
STDMETHOD(ReleaseDC)(HDC p1)
{
return m_pDDS4->ReleaseDC(p1);
//return m_pDDS->ReleaseDC(p1);
}
STDMETHOD(Restore)()
{
return m_pDDS4->Restore();
//return m_pDDS->Restore();
}
STDMETHOD(SetClipper)(LPDIRECTDRAWCLIPPER p1)
{
return m_pDDS4->SetClipper(p1);
//return m_pDDS->SetClipper(p1);
}
STDMETHOD(SetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS4->SetColorKey(p1, p2);
//return m_pDDS->SetColorKey(p1, p2);
}
STDMETHOD(SetOverlayPosition)(LONG p1, LONG p2)
{
return m_pDDS4->SetOverlayPosition(p1, p2);
//return m_pDDS->SetOverlayPosition(p1, p2);
}
STDMETHOD(SetPalette)(LPDIRECTDRAWPALETTE p1)
{
return m_pDDS4->SetPalette(p1);
//return m_pDDS->SetPalette(p1);
}
STDMETHOD(Unlock)(LPVOID p1)
{
return m_pDDS->Unlock(p1);
}
STDMETHOD(UpdateOverlay)(LPRECT p1, LPDIRECTDRAWSURFACE p2,LPRECT p3,DWORD p4, LPDDOVERLAYFX p5)
{
return m_pDDS->UpdateOverlay(p1,p2,p3,p4,p5);
}
STDMETHOD(UpdateOverlayDisplay)(DWORD p1)
{
return m_pDDS4->UpdateOverlayDisplay(p1);
//return m_pDDS->UpdateOverlayDisplay(p1);
}
STDMETHOD(UpdateOverlayZOrder)(DWORD p1, LPDIRECTDRAWSURFACE p2)
{
return m_pDDS->UpdateOverlayZOrder(p1, p2);
}
/* IDirectDrawSurface2*/
STDMETHOD(AddAttachedSurface)(LPDIRECTDRAWSURFACE2 p1)
{
return m_pDDS2->AddAttachedSurface(p1);
}
/*
STDMETHOD(AddOverlayDirtyRect)(LPRECT p1)
{
return m_pDDS2->AddOverlayDirtyRect(p1);
}
*/
STDMETHOD(Blt)(LPRECT p1,LPDIRECTDRAWSURFACE2 p2, LPRECT p3,DWORD p4, LPDDBLTFX p5)
{
return m_pDDS2->Blt(p1,p2,p3,p4,p5);
}
/* STDMETHOD(BltBatch)(LPDDBLTBATCH p1, DWORD p2, DWORD p3)
{
return m_pDDS2->BltBatch(p1,p2,p3);
}
*/
STDMETHOD(BltFast)(DWORD p1,DWORD p2,LPDIRECTDRAWSURFACE2 p3, LPRECT p4,DWORD p5)
{
return m_pDDS2->BltFast(p1,p2,p3,p4,p5);
}
STDMETHOD(DeleteAttachedSurface)(DWORD p1,LPDIRECTDRAWSURFACE2 p2)
{
return m_pDDS2->DeleteAttachedSurface(p1,p2);
}
/* STDMETHOD(EnumAttachedSurfaces)(LPVOID p1,LPDDENUMSURFACESCALLBACK p2)
{
return m_pDDS2->EnumAttachedSurfaces(p1,p2);
}
*/
/* STDMETHOD(EnumOverlayZOrders)(DWORD p1,LPVOID p2,LPDDENUMSURFACESCALLBACK p3)
{
return m_pDDS2->EnumOverlayZOrders(p1,p2,p3);
}
*/
STDMETHOD(Flip)(LPDIRECTDRAWSURFACE2 p1, DWORD p2)
{
return m_pDDS2->Flip(p1, p2);
}
STDMETHOD(GetAttachedSurface)(LPDDSCAPS p1, LPDIRECTDRAWSURFACE2 FAR *p2)
{
return m_pDDS2->GetAttachedSurface(p1, p2);
}
/* STDMETHOD(GetBltStatus)(DWORD p1)
{
return m_pDDS2->GetBltStatus(p1);
}
*/
/* STDMETHOD(GetCaps)(LPDDSCAPS p1)
{
return m_pDDS2->GetCaps(p1);
}
*/
/* STDMETHOD(GetClipper)(LPDIRECTDRAWCLIPPER FAR* p1)
{
return m_pDDS2->GetClipper(p1);
}
*/
/* STDMETHOD(GetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS2->GetColorKey(p1, p2);
}
*/
/* STDMETHOD(GetDC)(HDC FAR *p1)
{
return m_pDDS2->GetDC(p1);
}
*/
/* STDMETHOD(GetFlipStatus)(DWORD p1)
{
return m_pDDS2->GetFlipStatus(p1);
}
*/
/* STDMETHOD(GetOverlayPosition)(LPLONG p1, LPLONG p2)
{
return m_pDDS2->GetOverlayPosition(p1,p2);
}
*/
/* STDMETHOD(GetPalette)(LPDIRECTDRAWPALETTE FAR* p1)
{
return m_pDDS2->GetPalette(p1);
}
*/
/* STDMETHOD(GetPixelFormat)(LPDDPIXELFORMAT p1)
{
return m_pDDS2->GetPixelFormat(p1);
}
*/
/* STDMETHOD(GetSurfaceDesc)(LPDDSURFACEDESC p1)
{
return m_pDDS2->GetSurfaceDesc(p1);
}
*/
/* STDMETHOD(Initialize)(LPDIRECTDRAW p1, LPDDSURFACEDESC p2)
{
return m_pDDS2->Initialize(p1, p2);
}
*/
/* STDMETHOD(IsLost)()
{
return m_pDDS2->IsLost();
}
*/
/* STDMETHOD(Lock)(LPRECT p1,LPDDSURFACEDESC p2,DWORD p3,HANDLE p4)
{
return m_pDDS2->Lock(p1, p2, p3, p4);
}
*/
/* STDMETHOD(ReleaseDC)(HDC p1)
{
return m_pDDS2->ReleaseDC(p1);
}
*/
/* STDMETHOD(Restore)()
{
return m_pDDS2->Restore();
}
*/
/* STDMETHOD(SetClipper)(LPDIRECTDRAWCLIPPER p1)
{
return m_pDDS2->SetClipper(p1);
}
*/
/* STDMETHOD(SetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS2->SetColorKey(p1, p2);
}
*/
/* STDMETHOD(SetOverlayPosition)(LONG p1, LONG p2)
{
return m_pDDS2->SetOverlayPosition(p1, p2);
}
*/
/* STDMETHOD(SetPalette)(LPDIRECTDRAWPALETTE p1)
{
return m_pDDS2->SetPalette(p1);
}
*/
/* STDMETHOD(Unlock)(LPVOID p1)
{
return m_pDDS2->Unlock(p1);
}
*/
STDMETHOD(UpdateOverlay)(LPRECT p1, LPDIRECTDRAWSURFACE2 p2,LPRECT p3,DWORD p4, LPDDOVERLAYFX p5)
{
return m_pDDS2->UpdateOverlay(p1, p2, p3, p4, p5);
}
/* STDMETHOD(UpdateOverlayDisplay)(DWORD p1)
{
return m_pDDS2->UpdateOverlayDisplay(p1);
}
*/
STDMETHOD(UpdateOverlayZOrder)(DWORD p1, LPDIRECTDRAWSURFACE2 p2)
{
return m_pDDS2->UpdateOverlayZOrder(p1, p2);
}
STDMETHOD(GetDDInterface)(LPVOID FAR *p1)
{
return m_pDDS4->GetDDInterface(p1);
//return m_pDDS2->GetDDInterface(p1);
}
STDMETHOD(PageLock)(DWORD p1)
{
return m_pDDS4->PageLock(p1);
//return m_pDDS2->PageLock(p1);
}
STDMETHOD(PageUnlock)(DWORD p1)
{
return m_pDDS4->PageUnlock(p1);
//return m_pDDS2->PageUnlock(p1);
}
/* IDirectDrawSurface3 */
STDMETHOD(AddAttachedSurface)(LPDIRECTDRAWSURFACE3 p1)
{
return m_pDDS3->AddAttachedSurface(p1);
}
/* STDMETHOD(AddOverlayDirtyRect)(LPRECT p1)
{
return m_pDDS3->AddOverlayDirtyRect(p1);
}
*/
STDMETHOD(Blt)(LPRECT p1,LPDIRECTDRAWSURFACE3 p2, LPRECT p3,DWORD p4, LPDDBLTFX p5)
{
return m_pDDS3->Blt(p1,p2,p3,p4,p5);
}
/* STDMETHOD(BltBatch)(LPDDBLTBATCH p1, DWORD p2, DWORD p3)
{
return m_pDDS3->BltBatch(p1, p2, p3);
}
*/
STDMETHOD(BltFast)(DWORD p1,DWORD p2,LPDIRECTDRAWSURFACE3 p3, LPRECT p4,DWORD p5)
{
return m_pDDS3->BltFast(p1,p2,p3,p4,p5);
}
STDMETHOD(DeleteAttachedSurface)(DWORD p1,LPDIRECTDRAWSURFACE3 p2)
{
return m_pDDS3->DeleteAttachedSurface(p1,p2);
}
/* STDMETHOD(EnumAttachedSurfaces)(LPVOID p1,LPDDENUMSURFACESCALLBACK p2)
{
return m_pDDS3->EnumAttachedSurfaces(p1, p2);
}
*/
/* STDMETHOD(EnumOverlayZOrders)(DWORD p1,LPVOID p2,LPDDENUMSURFACESCALLBACK p3)
{
return m_pDDS3->EnumOverlayZOrders(p1,p2,p3);
}
*/
STDMETHOD(Flip)(LPDIRECTDRAWSURFACE3 p1, DWORD p2)
{
return m_pDDS3->Flip(p1,p2);
}
STDMETHOD(GetAttachedSurface)(LPDDSCAPS p1, LPDIRECTDRAWSURFACE3 FAR *p2)
{
return m_pDDS3->GetAttachedSurface(p1,p2);
}
/* STDMETHOD(GetBltStatus)(DWORD p1)
{
return m_pDDS3->GetBltStatus(p1);
}
*/
/* STDMETHOD(GetCaps)(LPDDSCAPS p1)
{
return m_pDDS3->GetCaps(p1);
}
*/
/* STDMETHOD(GetClipper)(LPDIRECTDRAWCLIPPER FAR* p1)
{
return m_pDDS3->GetClipper(p1);
}
*/
/* STDMETHOD(GetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS3->GetColorKey(p1, p2);
}
*/
/* STDMETHOD(GetDC)(HDC FAR *p1)
{
return m_pDDS3->GetDC(p1);
}
*/
/* STDMETHOD(GetFlipStatus)(DWORD p1)
{
return m_pDDS3->GetFlipStatus(p1);
}
*/
/* STDMETHOD(GetOverlayPosition)(LPLONG p1, LPLONG p2)
{
return m_pDDS3->GetOverlayPosition(p1, p2);
}
*/
/* STDMETHOD(GetPalette)(LPDIRECTDRAWPALETTE FAR* p1)
{
return m_pDDS3->GetPalette(p1);
}
*/
/* STDMETHOD(GetPixelFormat)(LPDDPIXELFORMAT p1)
{
return m_pDDS3->GetPixelFormat(p1);
}
*/
/* STDMETHOD(GetSurfaceDesc)(LPDDSURFACEDESC p1)
{
return m_pDDS3->GetSurfaceDesc(p1);
}
*/
/* STDMETHOD(Initialize)(LPDIRECTDRAW p1, LPDDSURFACEDESC p2)
{
return m_pDDS3->Initialize(p1, p2);
}
*/
/* STDMETHOD(IsLost)()
{
return m_pDDS3->IsLost();
}
*/
/* STDMETHOD(Lock)(LPRECT p1,LPDDSURFACEDESC p2,DWORD p3,HANDLE p4)
{
return m_pDDS3->Lock(p1, p2, p3, p4);
}
*/
/* STDMETHOD(ReleaseDC)(HDC p1)
{
return m_pDDS3->ReleaseDC(p1);
}
*/
/* STDMETHOD(Restore)()
{
return m_pDDS3->Restore();
}
*/
/* STDMETHOD(SetClipper)(LPDIRECTDRAWCLIPPER p1)
{
return m_pDDS3->SetClipper(p1);
}
*/
/* STDMETHOD(SetColorKey)(DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS3->SetColorKey(p1, p2);
}
*/
/* STDMETHOD(SetOverlayPosition)(LONG p1, LONG p2)
{
return m_pDDS3->SetOverlayPosition(p1,p2);
}
*/
/* STDMETHOD(SetPalette)(LPDIRECTDRAWPALETTE p1)
{
return m_pDDS3->SetPalette(p1);
}
*/
/* STDMETHOD(Unlock)(LPVOID p1)
{
return m_pDDS3->Unlock(p1);
}
*/
STDMETHOD(UpdateOverlay)(LPRECT p1, LPDIRECTDRAWSURFACE3 p2, LPRECT p3,DWORD p4, LPDDOVERLAYFX p5)
{
return m_pDDS3->UpdateOverlay(p1,p2,p3,p4,p5);
}
/* STDMETHOD(UpdateOverlayDisplay)(DWORD p1)
{
return m_pDDS3->UpdateOverlayDisplay(p1);
}
*/
STDMETHOD(UpdateOverlayZOrder)(DWORD p1, LPDIRECTDRAWSURFACE3 p2)
{
return m_pDDS3->UpdateOverlayZOrder(p1, p2);
}
/* STDMETHOD(GetDDInterface)(LPVOID FAR *p1)
{
return m_pDDS3->GetDDInterface(p1);
}
*/
/* STDMETHOD(PageLock)(DWORD p1)
{
return m_pDDS3->PageLock(p1);
}
*/
/* STDMETHOD(PageUnlock)(DWORD p1)
{
return m_pDDS3->PageUnlock(p1);
}
*/
STDMETHOD(SetSurfaceDesc)(LPDDSURFACEDESC p1, DWORD p2)
{
return m_pDDS3->SetSurfaceDesc(p1, p2);
}
/* IDirectDrawSurface4 */
STDMETHOD(AddAttachedSurface)(LPDIRECTDRAWSURFACE4 p1)
{
return m_pDDS4->AddAttachedSurface(p1);
}
/* STDMETHOD(AddOverlayDirtyRect)(LPRECT p1)
{
return m_pDDS4->AddOverlayDirtyRect(p1);
}
*/
STDMETHOD(Blt)(LPRECT p1, LPDIRECTDRAWSURFACE4 p2, LPRECT p3, DWORD p4, LPDDBLTFX p5);
/* STDMETHOD(BltBatch)( LPDDBLTBATCH p1, DWORD p2, DWORD p3)
{
return m_pDDS4->BltBatch(p1, p2, p3);
}
*/
STDMETHOD(BltFast)( DWORD p1,DWORD p2,LPDIRECTDRAWSURFACE4 p3, LPRECT p4,DWORD p5)
{
MessageBeep(0);
return m_pDDS4->BltFast(p1, p2, p3, p4, p5);
}
STDMETHOD(DeleteAttachedSurface)( DWORD p1,LPDIRECTDRAWSURFACE4 p2)
{
return m_pDDS4->DeleteAttachedSurface(p1, p2);
}
STDMETHOD(EnumAttachedSurfaces)( LPVOID p1,LPDDENUMSURFACESCALLBACK2 p2)
{
return m_pDDS4->EnumAttachedSurfaces(p1, p2);
}
STDMETHOD(EnumOverlayZOrders)( DWORD p1,LPVOID p2,LPDDENUMSURFACESCALLBACK2 p3)
{
return m_pDDS4->EnumOverlayZOrders(p1, p2, p3);
}
STDMETHOD(Flip)( LPDIRECTDRAWSURFACE4 p1, DWORD p2);
STDMETHOD(GetAttachedSurface)( LPDDSCAPS2 p1, LPDIRECTDRAWSURFACE4 FAR *p2)
{
return m_pDDS4->GetAttachedSurface(p1, p2);
}
/* STDMETHOD(GetBltStatus)( DWORD p1)
{
return m_pDDS4->GetBltStatus(p1);
}
*/
STDMETHOD(GetCaps)( LPDDSCAPS2 p1)
{
return m_pDDS4->GetCaps(p1);
}
/* STDMETHOD(GetClipper)( LPDIRECTDRAWCLIPPER FAR* p1)
{
return m_pDDS4->GetClipper(p1);
}
*/
/* STDMETHOD(GetColorKey)( DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS4->GetColorKey(p1, p2);
}
*/
/* STDMETHOD(GetDC)( HDC FAR *p1)
{
return m_pDDS4->GetDC(p1);
}
*/
/* STDMETHOD(GetFlipStatus)( DWORD p1)
{
return m_pDDS4->GetFlipStatus(p1);
}
*/
/* STDMETHOD(GetOverlayPosition)( LPLONG p1, LPLONG p2)
{
return m_pDDS4->GetOverlayPosition(p1, p2);
}
*/
/* STDMETHOD(GetPalette)( LPDIRECTDRAWPALETTE FAR* p1)
{
return m_pDDS4->GetPalette(p1);
}
*/
/* STDMETHOD(GetPixelFormat)( LPDDPIXELFORMAT p1)
{
return m_pDDS4->GetPixelFormat(p1);
}
*/
STDMETHOD(GetSurfaceDesc)( LPDDSURFACEDESC2 p1)
{
return m_pDDS4->GetSurfaceDesc(p1);
}
STDMETHOD(Initialize)( LPDIRECTDRAW p1, LPDDSURFACEDESC2 p2)
{
return m_pDDS4->Initialize(p1, p2);
}
/* STDMETHOD(IsLost)()
{
return m_pDDS4->IsLost();
}
*/
STDMETHOD(Lock)(LPRECT p1,LPDDSURFACEDESC2 p2,DWORD p3,HANDLE p4)
{
return m_pDDS4->Lock(p1, p2, p3, p4);
}
/* STDMETHOD(ReleaseDC)( HDC p1)
{
return m_pDDS4->ReleaseDC(p1);
}
*/
/* STDMETHOD(Restore)()
{
return m_pDDS4->Restore();
}
*/
/* STDMETHOD(SetClipper)( LPDIRECTDRAWCLIPPER p1)
{
return m_pDDS4->SetClipper(p1);
}
*/
/* STDMETHOD(SetColorKey)( DWORD p1, LPDDCOLORKEY p2)
{
return m_pDDS4->SetColorKey(p1, p2);
}
*/
/* STDMETHOD(SetOverlayPosition)( LONG p1, LONG p2)
{
return m_pDDS4->SetOverlayPosition(p1, p2);
}
*/
/* STDMETHOD(SetPalette)( LPDIRECTDRAWPALETTE p1)
{
return m_pDDS4->SetPalette(p1);
}
*/
STDMETHOD(Unlock)(LPRECT p1)
{
return m_pDDS4->Unlock(p1);
}
STDMETHOD(UpdateOverlay)( LPRECT p1, LPDIRECTDRAWSURFACE4 p2,LPRECT p3,DWORD p4, LPDDOVERLAYFX p5)
{
return m_pDDS4->UpdateOverlay(p1, p2, p3, p4, p5);
}
/* STDMETHOD(UpdateOverlayDisplay)( DWORD p1)
{
return m_pDDS4->UpdateOverlayDisplay(p1);
}
*/
STDMETHOD(UpdateOverlayZOrder)( DWORD p1, LPDIRECTDRAWSURFACE4 p2)
{
return m_pDDS4->UpdateOverlayZOrder(p1, p2);
}
/* STDMETHOD(GetDDInterface)( LPVOID FAR *p1)
{
return m_pDDS4->GetDDInterface(p1);
}
*/
/* STDMETHOD(PageLock)( DWORD p1)
{
return m_pDDS4->PageLock(p1);
}
*/
/* STDMETHOD(PageUnlock)( DWORD p1)
{
return m_pDDS4->PageUnlock(p1);
}
*/
STDMETHOD(SetSurfaceDesc)( LPDDSURFACEDESC2 p1, DWORD p2)
{
return m_pDDS4->SetSurfaceDesc(p1, p2);
}
STDMETHOD(SetPrivateData)( REFGUID p1, LPVOID p2, DWORD p3, DWORD p4)
{
return m_pDDS4->SetPrivateData(p1, p2, p3, p4);
}
STDMETHOD(GetPrivateData)( REFGUID p1, LPVOID p2, LPDWORD p3)
{
return m_pDDS4->GetPrivateData(p1, p2, p3);
}
STDMETHOD(FreePrivateData)( REFGUID p1)
{
return m_pDDS4->FreePrivateData(p1);
}
STDMETHOD(GetUniquenessValue)( LPDWORD p1)
{
return m_pDDS4->GetUniquenessValue(p1);
}
STDMETHOD(ChangeUniquenessValue)()
{
return m_pDDS4->ChangeUniquenessValue();
}
};
#endif //__DIRECTDRAWSURFACEHOOK_H_