Hello folks! I created my own ddraw.dll and FakeDirectDrawCreate() func. When I tried to get IID_IDirectDrawSurface3 pointer my app don't work. What is the problem? Thanks in advance.
__declspec(dllexport) HRESULT WINAPI FakeDirectDrawCreate(GUID FAR *lpGUID, LPVOID *lplpDD, IUnknown FAR *pUnkOuter )
{
DirectDrawCreate_Type OldFn = (DirectDrawCreate_Type)ddraw.DirectDrawCreate;
HRESULT hr = OldFn( lpGUID, lplpDD, pUnkOuter );
*lplpDD =(LPDIRECTDRAW) new MyDirectDraw((LPDIRECTDRAW)*lplpDD);
return hr;
}
//MyDirectDraw class
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObj)
{
m_device->QueryInterface(riid, ppvObj);
if (riid==IID_IDirectDraw2)
{
*ppvObj =(LPDIRECTDRAW2) new MyDirectDraw2((LPDIRECTDRAW2)*ppvObj);
}
return S_OK;
}
//MyDirectDraw class
HRESULT STDMETHODCALLTYPE CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc2,
LPDIRECTDRAWSURFACE FAR *lplpDDSurface,
IUnknown FAR *pUnkOuter)
{
m_device2->CreateSurface(lpDDSurfaceDesc2, lplpDDSurface, pUnkOuter );
*lplpDDSurface =(LPDIRECTDRAWSURFACE) new MyDirectDrawSurface((LPDIRECTDRAW2)m_device2, *lplpDDSurface);
}
//MyDirectDrawSurface class
HRESULT STDMETHODCALLTYPE QueryInterface ( REFIID riid, void** ppvObj)
{
else if(riid==IID_IDirectDrawSurface3)
{
*ppvObj =(LPDIRECTDRAWSURFACE3) new MyDirectDrawSurface3((LPDIRECTDRAW2)m_device, (LPDIRECTDRAWSURFACE3)*ppvObj);
}
}
class MyDirectDraw : public IDirectDraw
class MyDirectDraw2 : public IDirectDraw2
class MyDirectDrawSurface : public IDirectDrawSurface
class MyDirectDrawSurface3 : public IDirectDrawSurface3