DECLARE_INTERFACE_( IDirectDraw, IUnknown )
{
	     /*** IUnknown methods ***/
    /* 00 */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
    /* 04 */ STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
    /* 08 */ STDMETHOD_(ULONG,Release) (THIS) PURE;
	     /*** IDirectDraw methods ***/
    /* 0C */ STDMETHOD(Compact)(THIS) PURE;
    /* 10 */ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
    /* 14 */ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
    /* 18 */ STDMETHOD(CreateSurface)(THIS_  LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
    /* 1C */ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
    /* 20 */ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
    /* 24 */ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
    /* 28 */ STDMETHOD(FlipToGDISurface)(THIS) PURE;
    /* 2C */ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
    /* 30 */ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
    /* 34 */ STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD ) PURE;
    /* 38 */ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
    /* 3C */ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
    /* 40 */ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
    /* 44 */ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
    /* 48 */ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
    /* 4C */ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
    /* 50 */ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
    /* 54 */ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
    /* 58 */ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
};

DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
{
	     /*** IUnknown methods ***/
    /* 00 */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
    /* 04 */ STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
    /* 08 */ STDMETHOD_(ULONG,Release) (THIS) PURE;
	     /*** IDirectDrawSurface methods ***/
    /* 0C */ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
    /* 10 */ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
    /* 14 */ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
    /* 18 */ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
    /* 1C */ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
    /* 20 */ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
    /* 24 */ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
    /* 28 */ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
    /* 2C */ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
    /* 30 */ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
    /* 34 */ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
    /* 38 */ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
    /* 3C */ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
    /* 40 */ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
    /* 44 */ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
    /* 48 */ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
    /* 4C */ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
    /* 50 */ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
    /* 54 */ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
    /* 58 */ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
    /* 5C */ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
    /* 60 */ STDMETHOD(IsLost)(THIS) PURE;
    /* 64 */ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
    /* 68 */ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
    /* 6C */ STDMETHOD(Restore)(THIS) PURE;
    /* 70 */ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
    /* 74 */ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
    /* 78 */ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
    /* 7C */ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
    /* 80 */ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
    /* 84 */ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
    /* 88 */ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
    /* 8C */ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
};

DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
{
	     /*** IUnknown methods ***/
    /* 00 */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
    /* 04 */ STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
    /* 08 */ STDMETHOD_(ULONG,Release) (THIS) PURE;
	     /*** IDirectDrawPalette methods ***/
    /* 0C */ STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
    /* 10 */ STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
    /* 14 */ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
    /* 18 */ STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
};
