1 /* Direct Draw Thunks and old vtables
2 * Copyright 2000 TransGaming Technologies Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #include "wine/port.h"
28 #define NONAMELESSUNION
35 #include "wine/exception.h"
41 #include "ddraw_private.h"
42 #include "wine/debug.h"
44 WINE_DEFAULT_DEBUG_CHANNEL(ddraw_thunk
);
45 WINE_DECLARE_DEBUG_CHANNEL(ddraw
);
48 IDirectDrawImpl_QueryInterface(LPDIRECTDRAW This
, REFIID iid
, LPVOID
*ppObj
)
50 return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl
,
57 IDirectDraw2Impl_QueryInterface(LPDIRECTDRAW2 This
, REFIID iid
, LPVOID
*ppObj
)
59 return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl
,
66 IDirectDraw3Impl_QueryInterface(LPDIRECTDRAW3 This
, REFIID iid
, LPVOID
*ppObj
)
68 return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl
,
75 IDirectDraw4Impl_QueryInterface(LPDIRECTDRAW4 This
, REFIID iid
, LPVOID
*ppObj
)
77 return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl
,
84 IDirectDrawImpl_AddRef(LPDIRECTDRAW iface
)
86 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw
, iface
);
87 ULONG ref
= InterlockedIncrement(&This
->ref1
);
89 TRACE("(%p) : incrementing IDirectDraw refcount from %u.\n", This
, ref
-1);
91 if(ref
== 1) InterlockedIncrement(&This
->numIfaces
);
97 IDirectDraw2Impl_AddRef(LPDIRECTDRAW2 iface
)
99 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw2
, iface
);
100 ULONG ref
= InterlockedIncrement(&This
->ref2
);
102 TRACE("(%p) : incrementing IDirectDraw2 refcount from %u.\n", This
, ref
-1);
104 if(ref
== 1) InterlockedIncrement(&This
->numIfaces
);
110 IDirectDraw3Impl_AddRef(LPDIRECTDRAW3 iface
)
112 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw3
, iface
);
113 ULONG ref
= InterlockedIncrement(&This
->ref3
);
115 TRACE("(%p) : incrementing IDirectDraw3 refcount from %u.\n", This
, ref
-1);
117 if(ref
== 1) InterlockedIncrement(&This
->numIfaces
);
123 IDirectDraw4Impl_AddRef(LPDIRECTDRAW4 iface
)
125 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw4
, iface
);
126 ULONG ref
= InterlockedIncrement(&This
->ref4
);
128 TRACE("(%p) : incrementing IDirectDraw4 refcount from %u.\n", This
, ref
-1);
130 if(ref
== 1) InterlockedIncrement(&This
->numIfaces
);
136 IDirectDrawImpl_Release(LPDIRECTDRAW iface
)
138 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw
, iface
);
139 ULONG ref
= InterlockedDecrement(&This
->ref1
);
141 TRACE_(ddraw
)("(%p)->() decrementing IDirectDraw refcount from %u.\n", This
, ref
+1);
145 ULONG ifacecount
= InterlockedDecrement(&This
->numIfaces
);
146 if(ifacecount
== 0) IDirectDrawImpl_Destroy(This
);
153 IDirectDraw2Impl_Release(LPDIRECTDRAW2 iface
)
155 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw2
, iface
);
156 ULONG ref
= InterlockedDecrement(&This
->ref2
);
158 TRACE_(ddraw
)("(%p)->() decrementing IDirectDraw2 refcount from %u.\n", This
, ref
+1);
162 ULONG ifacecount
= InterlockedDecrement(&This
->numIfaces
);
163 if(ifacecount
== 0) IDirectDrawImpl_Destroy(This
);
170 IDirectDraw3Impl_Release(LPDIRECTDRAW3 iface
)
172 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw3
, iface
);
173 ULONG ref
= InterlockedDecrement(&This
->ref3
);
175 TRACE_(ddraw
)("(%p)->() decrementing IDirectDraw3 refcount from %u.\n", This
, ref
+1);
179 ULONG ifacecount
= InterlockedDecrement(&This
->numIfaces
);
180 if(ifacecount
== 0) IDirectDrawImpl_Destroy(This
);
187 IDirectDraw4Impl_Release(LPDIRECTDRAW4 iface
)
189 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw4
, iface
);
190 ULONG ref
= InterlockedDecrement(&This
->ref4
);
192 TRACE_(ddraw
)("(%p)->() decrementing IDirectDraw4 refcount from %u.\n", This
, ref
+1);
196 ULONG ifacecount
= InterlockedDecrement(&This
->numIfaces
);
197 if(ifacecount
== 0) IDirectDrawImpl_Destroy(This
);
203 static HRESULT WINAPI
204 IDirectDrawImpl_Compact(LPDIRECTDRAW This
)
206 return IDirectDraw7_Compact(COM_INTERFACE_CAST(IDirectDrawImpl
,
207 IDirectDraw
, IDirectDraw7
,
211 static HRESULT WINAPI
212 IDirectDraw2Impl_Compact(LPDIRECTDRAW2 This
)
214 return IDirectDraw7_Compact(COM_INTERFACE_CAST(IDirectDrawImpl
,
215 IDirectDraw2
, IDirectDraw7
,
219 static HRESULT WINAPI
220 IDirectDraw3Impl_Compact(LPDIRECTDRAW3 This
)
222 return IDirectDraw7_Compact(COM_INTERFACE_CAST(IDirectDrawImpl
,
223 IDirectDraw3
, IDirectDraw7
,
227 static HRESULT WINAPI
228 IDirectDraw4Impl_Compact(LPDIRECTDRAW4 This
)
230 return IDirectDraw7_Compact(COM_INTERFACE_CAST(IDirectDrawImpl
,
231 IDirectDraw4
, IDirectDraw7
,
235 static HRESULT WINAPI
236 IDirectDrawImpl_CreateClipper(LPDIRECTDRAW This
, DWORD dwFlags
,
237 LPDIRECTDRAWCLIPPER
*ppClipper
,
240 return IDirectDraw7_CreateClipper(COM_INTERFACE_CAST(IDirectDrawImpl
,
244 dwFlags
, ppClipper
, pUnkOuter
);
247 static HRESULT WINAPI
248 IDirectDraw2Impl_CreateClipper(LPDIRECTDRAW2 This
, DWORD dwFlags
,
249 LPDIRECTDRAWCLIPPER
*ppClipper
,
252 return IDirectDraw7_CreateClipper(COM_INTERFACE_CAST(IDirectDrawImpl
,
256 dwFlags
, ppClipper
, pUnkOuter
);
259 static HRESULT WINAPI
260 IDirectDraw3Impl_CreateClipper(LPDIRECTDRAW3 This
, DWORD dwFlags
,
261 LPDIRECTDRAWCLIPPER
*ppClipper
,
264 return IDirectDraw7_CreateClipper(COM_INTERFACE_CAST(IDirectDrawImpl
,
268 dwFlags
, ppClipper
, pUnkOuter
);
271 static HRESULT WINAPI
272 IDirectDraw4Impl_CreateClipper(LPDIRECTDRAW4 This
, DWORD dwFlags
,
273 LPDIRECTDRAWCLIPPER
*ppClipper
,
276 return IDirectDraw7_CreateClipper(COM_INTERFACE_CAST(IDirectDrawImpl
,
280 dwFlags
, ppClipper
, pUnkOuter
);
283 static HRESULT WINAPI
284 IDirectDrawImpl_CreatePalette(LPDIRECTDRAW This
, DWORD dwFlags
,
285 LPPALETTEENTRY pEntries
,
286 LPDIRECTDRAWPALETTE
*ppPalette
,
290 hr
= IDirectDraw7_CreatePalette(COM_INTERFACE_CAST(IDirectDrawImpl
,
294 dwFlags
, pEntries
, ppPalette
, pUnkOuter
);
295 if(SUCCEEDED(hr
) && *ppPalette
)
297 IDirectDrawPaletteImpl
*impl
= ICOM_OBJECT(IDirectDrawPaletteImpl
, IDirectDrawPalette
, *ppPalette
);
298 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
302 impl
->ifaceToRelease
= NULL
;
308 static HRESULT WINAPI
309 IDirectDraw2Impl_CreatePalette(LPDIRECTDRAW2 This
, DWORD dwFlags
,
310 LPPALETTEENTRY pEntries
,
311 LPDIRECTDRAWPALETTE
*ppPalette
,
315 hr
= IDirectDraw7_CreatePalette(COM_INTERFACE_CAST(IDirectDrawImpl
,
319 dwFlags
, pEntries
, ppPalette
, pUnkOuter
);
320 if(SUCCEEDED(hr
) && *ppPalette
)
322 IDirectDrawPaletteImpl
*impl
= ICOM_OBJECT(IDirectDrawPaletteImpl
, IDirectDrawPalette
, *ppPalette
);
323 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
327 impl
->ifaceToRelease
= NULL
;
332 static HRESULT WINAPI
333 IDirectDraw3Impl_CreatePalette(LPDIRECTDRAW3 This
, DWORD dwFlags
,
334 LPPALETTEENTRY pEntries
,
335 LPDIRECTDRAWPALETTE
*ppPalette
,
339 hr
= IDirectDraw7_CreatePalette(COM_INTERFACE_CAST(IDirectDrawImpl
,
343 dwFlags
, pEntries
, ppPalette
, pUnkOuter
);
344 if(SUCCEEDED(hr
) && *ppPalette
)
346 IDirectDrawPaletteImpl
*impl
= ICOM_OBJECT(IDirectDrawPaletteImpl
, IDirectDrawPalette
, *ppPalette
);
347 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
351 IDirectDraw4_AddRef(This
);
352 impl
->ifaceToRelease
= (IUnknown
*) This
;
357 static HRESULT WINAPI
358 IDirectDraw4Impl_CreatePalette(LPDIRECTDRAW4 This
, DWORD dwFlags
,
359 LPPALETTEENTRY pEntries
,
360 LPDIRECTDRAWPALETTE
*ppPalette
,
364 hr
= IDirectDraw7_CreatePalette(COM_INTERFACE_CAST(IDirectDrawImpl
,
368 dwFlags
, pEntries
, ppPalette
, pUnkOuter
);
369 if(SUCCEEDED(hr
) && *ppPalette
)
371 IDirectDrawPaletteImpl
*impl
= ICOM_OBJECT(IDirectDrawPaletteImpl
, IDirectDrawPalette
, *ppPalette
);
372 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
376 IDirectDraw4_AddRef(This
);
377 impl
->ifaceToRelease
= (IUnknown
*) This
;
382 static HRESULT WINAPI
383 IDirectDrawImpl_CreateSurface(LPDIRECTDRAW This
, LPDDSURFACEDESC pSDesc
,
384 LPDIRECTDRAWSURFACE
*ppSurface
,
387 LPDIRECTDRAWSURFACE7 pSurface7
;
388 IDirectDrawSurfaceImpl
*impl
;
391 /* the LPDDSURFACEDESC -> LPDDSURFACEDESC2 conversion should be ok,
392 * since the data layout is the same */
393 hr
= IDirectDraw7_CreateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
397 (LPDDSURFACEDESC2
)pSDesc
, &pSurface7
, pUnkOuter
);
399 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
400 * IDirectDrawSurface vtable layout at the beginning */
401 *ppSurface
= (LPDIRECTDRAWSURFACE
) COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
402 IDirectDrawSurface7
, IDirectDrawSurface3
,
405 impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, pSurface7
);
406 if(SUCCEEDED(hr
) && impl
)
409 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
413 IDirectDraw_AddRef(This
);
414 impl
->ifaceToRelease
= (IUnknown
*) This
;
420 static HRESULT WINAPI
421 IDirectDraw2Impl_CreateSurface(LPDIRECTDRAW2 This
, LPDDSURFACEDESC pSDesc
,
422 LPDIRECTDRAWSURFACE
*ppSurface
,
425 LPDIRECTDRAWSURFACE7 pSurface7
;
426 IDirectDrawSurfaceImpl
*impl
;
429 hr
= IDirectDraw7_CreateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
433 (LPDDSURFACEDESC2
)pSDesc
, &pSurface7
, pUnkOuter
);
435 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
436 * IDirectDrawSurface vtable layout at the beginning */
437 *ppSurface
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
438 IDirectDrawSurface7
, IDirectDrawSurface3
,
441 impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, pSurface7
);
442 if(SUCCEEDED(hr
) && impl
)
445 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
449 IDirectDraw2_AddRef(This
);
450 impl
->ifaceToRelease
= (IUnknown
*) This
;
456 static HRESULT WINAPI
457 IDirectDraw3Impl_CreateSurface(LPDIRECTDRAW3 This
, LPDDSURFACEDESC pSDesc
,
458 LPDIRECTDRAWSURFACE
*ppSurface
,
461 LPDIRECTDRAWSURFACE7 pSurface7
;
462 IDirectDrawSurfaceImpl
*impl
;
465 hr
= IDirectDraw7_CreateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
469 (LPDDSURFACEDESC2
)pSDesc
, &pSurface7
, pUnkOuter
);
471 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
472 * IDirectDrawSurface vtable layout at the beginning */
473 *ppSurface
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
474 IDirectDrawSurface7
, IDirectDrawSurface3
,
477 impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, pSurface7
);
478 if(SUCCEEDED(hr
) && impl
)
481 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
485 IDirectDraw3_AddRef(This
);
486 impl
->ifaceToRelease
= (IUnknown
*) This
;
492 static HRESULT WINAPI
493 IDirectDraw4Impl_CreateSurface(LPDIRECTDRAW4 This
, LPDDSURFACEDESC2 pSDesc
,
494 LPDIRECTDRAWSURFACE4
*ppSurface
,
498 IDirectDrawSurfaceImpl
*impl
;
500 hr
= IDirectDraw7_CreateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
505 (LPDIRECTDRAWSURFACE7
*)ppSurface
,
507 impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, *ppSurface
);
508 if(SUCCEEDED(hr
) && impl
)
511 IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl
,
515 IDirectDraw4_AddRef(This
);
516 impl
->ifaceToRelease
= (IUnknown
*) This
;
521 static HRESULT WINAPI
522 IDirectDrawImpl_DuplicateSurface(LPDIRECTDRAW This
, LPDIRECTDRAWSURFACE pSrc
,
523 LPDIRECTDRAWSURFACE
*ppDst
)
525 LPDIRECTDRAWSURFACE7 pDst7
;
528 hr
= IDirectDraw7_DuplicateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
531 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
537 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
538 * IDirectDrawSurface vtable layout at the beginning */
539 *ppDst
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
540 IDirectDrawSurface3
, pDst7
);
545 static HRESULT WINAPI
546 IDirectDraw2Impl_DuplicateSurface(LPDIRECTDRAW2 This
, LPDIRECTDRAWSURFACE pSrc
,
547 LPDIRECTDRAWSURFACE
*ppDst
)
549 LPDIRECTDRAWSURFACE7 pDst7
;
552 hr
= IDirectDraw7_DuplicateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
555 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
561 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
562 * IDirectDrawSurface vtable layout at the beginning */
563 *ppDst
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
564 IDirectDrawSurface3
, pDst7
);
569 static HRESULT WINAPI
570 IDirectDraw3Impl_DuplicateSurface(LPDIRECTDRAW3 This
, LPDIRECTDRAWSURFACE pSrc
,
571 LPDIRECTDRAWSURFACE
*ppDst
)
573 LPDIRECTDRAWSURFACE7 pDst7
;
576 hr
= IDirectDraw7_DuplicateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
579 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
585 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
586 * IDirectDrawSurface vtable layout at the beginning */
587 *ppDst
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
588 IDirectDrawSurface3
, pDst7
);
593 static HRESULT WINAPI
594 IDirectDraw4Impl_DuplicateSurface(LPDIRECTDRAW4 This
,
595 LPDIRECTDRAWSURFACE4 pSrc
,
596 LPDIRECTDRAWSURFACE4
*ppDst
)
598 return IDirectDraw7_DuplicateSurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
602 (LPDIRECTDRAWSURFACE7
)pSrc
,
603 (LPDIRECTDRAWSURFACE7
*)ppDst
);
606 struct displaymodescallback_context
608 LPDDENUMMODESCALLBACK func
;
612 static HRESULT CALLBACK
613 EnumDisplayModesCallbackThunk(LPDDSURFACEDESC2 pDDSD2
, LPVOID context
)
616 struct displaymodescallback_context
*cbcontext
= context
;
618 memcpy(&DDSD
,pDDSD2
,sizeof(DDSD
));
619 DDSD
.dwSize
= sizeof(DDSD
);
621 return cbcontext
->func(&DDSD
, cbcontext
->context
);
624 static HRESULT WINAPI
625 IDirectDrawImpl_EnumDisplayModes(LPDIRECTDRAW This
, DWORD dwFlags
,
626 LPDDSURFACEDESC pDDSD
, LPVOID context
,
627 LPDDENUMMODESCALLBACK cb
)
629 struct displaymodescallback_context cbcontext
;
632 cbcontext
.context
= context
;
634 return IDirectDraw7_EnumDisplayModes(COM_INTERFACE_CAST(IDirectDrawImpl
,
638 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
, &cbcontext
,
639 EnumDisplayModesCallbackThunk
);
642 static HRESULT WINAPI
643 IDirectDraw2Impl_EnumDisplayModes(LPDIRECTDRAW2 This
, DWORD dwFlags
,
644 LPDDSURFACEDESC pDDSD
, LPVOID context
,
645 LPDDENUMMODESCALLBACK cb
)
647 struct displaymodescallback_context cbcontext
;
650 cbcontext
.context
= context
;
652 return IDirectDraw7_EnumDisplayModes(COM_INTERFACE_CAST(IDirectDrawImpl
,
656 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
, &cbcontext
,
657 EnumDisplayModesCallbackThunk
);
660 static HRESULT WINAPI
661 IDirectDraw3Impl_EnumDisplayModes(LPDIRECTDRAW3 This
, DWORD dwFlags
,
662 LPDDSURFACEDESC pDDSD
, LPVOID context
,
663 LPDDENUMMODESCALLBACK cb
)
665 struct displaymodescallback_context cbcontext
;
668 cbcontext
.context
= context
;
670 return IDirectDraw7_EnumDisplayModes(COM_INTERFACE_CAST(IDirectDrawImpl
,
674 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
, &cbcontext
,
675 EnumDisplayModesCallbackThunk
);
678 static HRESULT WINAPI
679 IDirectDraw4Impl_EnumDisplayModes(LPDIRECTDRAW4 This
, DWORD dwFlags
,
680 LPDDSURFACEDESC2 pDDSD
, LPVOID context
,
681 LPDDENUMMODESCALLBACK2 cb
)
683 return IDirectDraw7_EnumDisplayModes(COM_INTERFACE_CAST(IDirectDrawImpl
,
687 dwFlags
, pDDSD
, context
, cb
);
690 struct surfacescallback_context
692 LPDDENUMSURFACESCALLBACK func
;
696 static HRESULT CALLBACK
697 EnumSurfacesCallbackThunk(LPDIRECTDRAWSURFACE7 pSurf
, LPDDSURFACEDESC2 pDDSD
,
700 struct surfacescallback_context
*cbcontext
= context
;
702 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
703 * IDirectDrawSurface vtable layout at the beginning */
704 return cbcontext
->func((LPDIRECTDRAWSURFACE
)
705 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
,
707 IDirectDrawSurface3
, pSurf
),
708 (LPDDSURFACEDESC
)pDDSD
, cbcontext
->context
);
711 static HRESULT WINAPI
712 IDirectDrawImpl_EnumSurfaces(LPDIRECTDRAW This
, DWORD dwFlags
,
713 LPDDSURFACEDESC pDDSD
, LPVOID context
,
714 LPDDENUMSURFACESCALLBACK cb
)
716 struct surfacescallback_context cbcontext
;
719 cbcontext
.context
= context
;
721 return IDirectDraw7_EnumSurfaces(COM_INTERFACE_CAST(IDirectDrawImpl
,
724 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
,
725 &cbcontext
, EnumSurfacesCallbackThunk
);
728 static HRESULT WINAPI
729 IDirectDraw2Impl_EnumSurfaces(LPDIRECTDRAW2 This
, DWORD dwFlags
,
730 LPDDSURFACEDESC pDDSD
, LPVOID context
,
731 LPDDENUMSURFACESCALLBACK cb
)
733 struct surfacescallback_context cbcontext
;
736 cbcontext
.context
= context
;
738 return IDirectDraw7_EnumSurfaces(COM_INTERFACE_CAST(IDirectDrawImpl
,
741 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
,
742 &cbcontext
, EnumSurfacesCallbackThunk
);
745 static HRESULT WINAPI
746 IDirectDraw3Impl_EnumSurfaces(LPDIRECTDRAW3 This
, DWORD dwFlags
,
747 LPDDSURFACEDESC pDDSD
, LPVOID context
,
748 LPDDENUMSURFACESCALLBACK cb
)
750 struct surfacescallback_context cbcontext
;
753 cbcontext
.context
= context
;
755 return IDirectDraw7_EnumSurfaces(COM_INTERFACE_CAST(IDirectDrawImpl
,
758 dwFlags
, (LPDDSURFACEDESC2
)pDDSD
,
759 &cbcontext
, EnumSurfacesCallbackThunk
);
762 static HRESULT WINAPI
763 IDirectDraw4Impl_EnumSurfaces(LPDIRECTDRAW4 This
, DWORD dwFlags
,
764 LPDDSURFACEDESC2 pDDSD
, LPVOID context
,
765 LPDDENUMSURFACESCALLBACK2 cb
)
767 return IDirectDraw7_EnumSurfaces(COM_INTERFACE_CAST(IDirectDrawImpl
,
770 dwFlags
, pDDSD
, context
,
771 (LPDDENUMSURFACESCALLBACK7
)cb
);
774 static HRESULT WINAPI
775 IDirectDrawImpl_FlipToGDISurface(LPDIRECTDRAW This
)
777 return IDirectDraw7_FlipToGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
783 static HRESULT WINAPI
784 IDirectDraw2Impl_FlipToGDISurface(LPDIRECTDRAW2 This
)
786 return IDirectDraw7_FlipToGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
792 static HRESULT WINAPI
793 IDirectDraw3Impl_FlipToGDISurface(LPDIRECTDRAW3 This
)
795 return IDirectDraw7_FlipToGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
801 static HRESULT WINAPI
802 IDirectDraw4Impl_FlipToGDISurface(LPDIRECTDRAW4 This
)
804 return IDirectDraw7_FlipToGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
810 static HRESULT WINAPI
811 IDirectDrawImpl_GetCaps(LPDIRECTDRAW This
, LPDDCAPS pDDC1
, LPDDCAPS pDDC2
)
813 return IDirectDraw7_GetCaps(COM_INTERFACE_CAST(IDirectDrawImpl
,
814 IDirectDraw
, IDirectDraw7
,
815 This
), pDDC1
, pDDC2
);
818 static HRESULT WINAPI
819 IDirectDraw2Impl_GetCaps(LPDIRECTDRAW2 This
, LPDDCAPS pDDC1
, LPDDCAPS pDDC2
)
821 return IDirectDraw7_GetCaps(COM_INTERFACE_CAST(IDirectDrawImpl
,
822 IDirectDraw2
, IDirectDraw7
,
823 This
), pDDC1
, pDDC2
);
826 static HRESULT WINAPI
827 IDirectDraw3Impl_GetCaps(LPDIRECTDRAW3 This
, LPDDCAPS pDDC1
, LPDDCAPS pDDC2
)
829 return IDirectDraw7_GetCaps(COM_INTERFACE_CAST(IDirectDrawImpl
,
830 IDirectDraw3
, IDirectDraw7
,
831 This
), pDDC1
, pDDC2
);
834 static HRESULT WINAPI
835 IDirectDraw4Impl_GetCaps(LPDIRECTDRAW4 This
, LPDDCAPS pDDC1
, LPDDCAPS pDDC2
)
837 return IDirectDraw7_GetCaps(COM_INTERFACE_CAST(IDirectDrawImpl
,
838 IDirectDraw4
, IDirectDraw7
,
839 This
), pDDC1
, pDDC2
);
842 static HRESULT WINAPI
843 IDirectDrawImpl_GetDisplayMode(LPDIRECTDRAW This
, LPDDSURFACEDESC pDDSD
)
845 return IDirectDraw7_GetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
848 (LPDDSURFACEDESC2
)pDDSD
);
851 static HRESULT WINAPI
852 IDirectDraw2Impl_GetDisplayMode(LPDIRECTDRAW2 This
, LPDDSURFACEDESC pDDSD
)
854 return IDirectDraw7_GetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
857 (LPDDSURFACEDESC2
)pDDSD
);
860 static HRESULT WINAPI
861 IDirectDraw3Impl_GetDisplayMode(LPDIRECTDRAW3 This
, LPDDSURFACEDESC pDDSD
)
863 return IDirectDraw7_GetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
866 (LPDDSURFACEDESC2
)pDDSD
);
869 static HRESULT WINAPI
870 IDirectDraw4Impl_GetDisplayMode(LPDIRECTDRAW4 This
, LPDDSURFACEDESC2 pDDSD
)
872 return IDirectDraw7_GetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
878 static HRESULT WINAPI
879 IDirectDrawImpl_GetFourCCCodes(LPDIRECTDRAW This
, LPDWORD lpNumCodes
,
882 return IDirectDraw7_GetFourCCCodes(COM_INTERFACE_CAST(IDirectDrawImpl
,
886 lpNumCodes
, lpCodes
);
889 static HRESULT WINAPI
890 IDirectDraw2Impl_GetFourCCCodes(LPDIRECTDRAW2 This
, LPDWORD lpNumCodes
,
893 return IDirectDraw7_GetFourCCCodes(COM_INTERFACE_CAST(IDirectDrawImpl
,
897 lpNumCodes
, lpCodes
);
900 static HRESULT WINAPI
901 IDirectDraw3Impl_GetFourCCCodes(LPDIRECTDRAW3 This
, LPDWORD lpNumCodes
,
904 return IDirectDraw7_GetFourCCCodes(COM_INTERFACE_CAST(IDirectDrawImpl
,
908 lpNumCodes
, lpCodes
);
911 static HRESULT WINAPI
912 IDirectDraw4Impl_GetFourCCCodes(LPDIRECTDRAW4 This
, LPDWORD lpNumCodes
,
915 return IDirectDraw7_GetFourCCCodes(COM_INTERFACE_CAST(IDirectDrawImpl
,
919 lpNumCodes
, lpCodes
);
922 static HRESULT WINAPI
923 IDirectDrawImpl_GetGDISurface(LPDIRECTDRAW This
, LPDIRECTDRAWSURFACE
*ppSurf
)
925 LPDIRECTDRAWSURFACE7 pSurf7
;
928 hr
= IDirectDraw7_GetGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
933 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
934 * IDirectDrawSurface vtable layout at the beginning */
935 *ppSurf
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
936 IDirectDrawSurface3
, pSurf7
);
941 static HRESULT WINAPI
942 IDirectDraw2Impl_GetGDISurface(LPDIRECTDRAW2 This
, LPDIRECTDRAWSURFACE
*ppSurf
)
944 LPDIRECTDRAWSURFACE7 pSurf7
;
947 hr
= IDirectDraw7_GetGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
952 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
953 * IDirectDrawSurface vtable layout at the beginning */
954 *ppSurf
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
955 IDirectDrawSurface3
, pSurf7
);
960 static HRESULT WINAPI
961 IDirectDraw3Impl_GetGDISurface(LPDIRECTDRAW3 This
, LPDIRECTDRAWSURFACE
*ppSurf
)
963 LPDIRECTDRAWSURFACE7 pSurf7
;
966 hr
= IDirectDraw7_GetGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
971 /* This coercion is safe, since the IDirectDrawSurface3 vtable has the
972 * IDirectDrawSurface vtable layout at the beginning */
973 *ppSurf
= (LPDIRECTDRAWSURFACE
)COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
,
974 IDirectDrawSurface3
, pSurf7
);
979 static HRESULT WINAPI
980 IDirectDraw4Impl_GetGDISurface(LPDIRECTDRAW4 This
,
981 LPDIRECTDRAWSURFACE4
*ppSurf
)
983 return IDirectDraw7_GetGDISurface(COM_INTERFACE_CAST(IDirectDrawImpl
,
987 (LPDIRECTDRAWSURFACE7
*)ppSurf
);
990 static HRESULT WINAPI
991 IDirectDrawImpl_GetMonitorFrequency(LPDIRECTDRAW This
, LPDWORD pdwFreq
)
993 return IDirectDraw7_GetMonitorFrequency(COM_INTERFACE_CAST(IDirectDrawImpl
,
1000 static HRESULT WINAPI
1001 IDirectDraw2Impl_GetMonitorFrequency(LPDIRECTDRAW2 This
, LPDWORD pdwFreq
)
1003 return IDirectDraw7_GetMonitorFrequency(COM_INTERFACE_CAST(IDirectDrawImpl
,
1010 static HRESULT WINAPI
1011 IDirectDraw3Impl_GetMonitorFrequency(LPDIRECTDRAW3 This
, LPDWORD pdwFreq
)
1013 return IDirectDraw7_GetMonitorFrequency(COM_INTERFACE_CAST(IDirectDrawImpl
,
1020 static HRESULT WINAPI
1021 IDirectDraw4Impl_GetMonitorFrequency(LPDIRECTDRAW4 This
, LPDWORD pdwFreq
)
1023 return IDirectDraw7_GetMonitorFrequency(COM_INTERFACE_CAST(IDirectDrawImpl
,
1030 static HRESULT WINAPI
1031 IDirectDrawImpl_GetScanLine(LPDIRECTDRAW This
, LPDWORD pdwLine
)
1033 return IDirectDraw7_GetScanLine(COM_INTERFACE_CAST(IDirectDrawImpl
,
1039 static HRESULT WINAPI
1040 IDirectDraw2Impl_GetScanLine(LPDIRECTDRAW2 This
, LPDWORD pdwLine
)
1042 return IDirectDraw7_GetScanLine(COM_INTERFACE_CAST(IDirectDrawImpl
,
1048 static HRESULT WINAPI
1049 IDirectDraw3Impl_GetScanLine(LPDIRECTDRAW3 This
, LPDWORD pdwLine
)
1051 return IDirectDraw7_GetScanLine(COM_INTERFACE_CAST(IDirectDrawImpl
,
1057 static HRESULT WINAPI
1058 IDirectDraw4Impl_GetScanLine(LPDIRECTDRAW4 This
, LPDWORD pdwLine
)
1060 return IDirectDraw7_GetScanLine(COM_INTERFACE_CAST(IDirectDrawImpl
,
1066 static HRESULT WINAPI
1067 IDirectDrawImpl_GetVerticalBlankStatus(LPDIRECTDRAW This
, LPBOOL lpbIsInVB
)
1069 return IDirectDraw7_GetVerticalBlankStatus(COM_INTERFACE_CAST(IDirectDrawImpl
,
1076 static HRESULT WINAPI
1077 IDirectDraw2Impl_GetVerticalBlankStatus(LPDIRECTDRAW2 This
, LPBOOL lpbIsInVB
)
1079 return IDirectDraw7_GetVerticalBlankStatus(COM_INTERFACE_CAST(IDirectDrawImpl
,
1086 static HRESULT WINAPI
1087 IDirectDraw3Impl_GetVerticalBlankStatus(LPDIRECTDRAW3 This
, LPBOOL lpbIsInVB
)
1089 return IDirectDraw7_GetVerticalBlankStatus(COM_INTERFACE_CAST(IDirectDrawImpl
,
1096 static HRESULT WINAPI
1097 IDirectDraw4Impl_GetVerticalBlankStatus(LPDIRECTDRAW4 This
, LPBOOL lpbIsInVB
)
1099 return IDirectDraw7_GetVerticalBlankStatus(COM_INTERFACE_CAST(IDirectDrawImpl
,
1106 static HRESULT WINAPI
1107 IDirectDrawImpl_Initialize(LPDIRECTDRAW iface
, LPGUID pGUID
)
1109 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw
, iface
);
1112 ret_value
= IDirectDraw7_Initialize(ICOM_INTERFACE(This
, IDirectDraw7
), pGUID
);
1117 static HRESULT WINAPI
1118 IDirectDraw2Impl_Initialize(LPDIRECTDRAW2 iface
, LPGUID pGUID
)
1120 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw2
, iface
);
1123 ret_value
= IDirectDraw7_Initialize(ICOM_INTERFACE(This
, IDirectDraw7
), pGUID
);
1128 static HRESULT WINAPI
1129 IDirectDraw3Impl_Initialize(LPDIRECTDRAW3 iface
, LPGUID pGUID
)
1131 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw3
, iface
);
1134 ret_value
= IDirectDraw7_Initialize(ICOM_INTERFACE(This
, IDirectDraw7
), pGUID
);
1139 static HRESULT WINAPI
1140 IDirectDraw4Impl_Initialize(LPDIRECTDRAW4 iface
, LPGUID pGUID
)
1142 ICOM_THIS_FROM(IDirectDrawImpl
, IDirectDraw4
, iface
);
1145 ret_value
= IDirectDraw7_Initialize(ICOM_INTERFACE(This
, IDirectDraw7
), pGUID
);
1151 static HRESULT WINAPI
1152 IDirectDrawImpl_RestoreDisplayMode(LPDIRECTDRAW This
)
1154 return IDirectDraw7_RestoreDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1160 static HRESULT WINAPI
1161 IDirectDraw2Impl_RestoreDisplayMode(LPDIRECTDRAW2 This
)
1163 return IDirectDraw7_RestoreDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1169 static HRESULT WINAPI
1170 IDirectDraw3Impl_RestoreDisplayMode(LPDIRECTDRAW3 This
)
1172 return IDirectDraw7_RestoreDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1178 static HRESULT WINAPI
1179 IDirectDraw4Impl_RestoreDisplayMode(LPDIRECTDRAW4 This
)
1181 return IDirectDraw7_RestoreDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1187 static HRESULT WINAPI
1188 IDirectDrawImpl_SetCooperativeLevel(LPDIRECTDRAW This
, HWND hWnd
,
1191 return IDirectDraw7_SetCooperativeLevel(COM_INTERFACE_CAST(IDirectDrawImpl
,
1198 static HRESULT WINAPI
1199 IDirectDraw2Impl_SetCooperativeLevel(LPDIRECTDRAW2 This
, HWND hWnd
,
1202 return IDirectDraw7_SetCooperativeLevel(COM_INTERFACE_CAST(IDirectDrawImpl
,
1209 static HRESULT WINAPI
1210 IDirectDraw3Impl_SetCooperativeLevel(LPDIRECTDRAW3 This
, HWND hWnd
,
1213 return IDirectDraw7_SetCooperativeLevel(COM_INTERFACE_CAST(IDirectDrawImpl
,
1220 static HRESULT WINAPI
1221 IDirectDraw4Impl_SetCooperativeLevel(LPDIRECTDRAW4 This
, HWND hWnd
,
1224 return IDirectDraw7_SetCooperativeLevel(COM_INTERFACE_CAST(IDirectDrawImpl
,
1231 static HRESULT WINAPI
1232 IDirectDrawImpl_SetDisplayMode(LPDIRECTDRAW This
, DWORD a
, DWORD b
, DWORD c
)
1234 return IDirectDraw7_SetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1241 static HRESULT WINAPI
1242 IDirectDraw2Impl_SetDisplayMode(LPDIRECTDRAW2 This
, DWORD a
, DWORD b
, DWORD c
,
1245 return IDirectDraw7_SetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1252 static HRESULT WINAPI
1253 IDirectDraw3Impl_SetDisplayMode(LPDIRECTDRAW3 This
, DWORD a
, DWORD b
, DWORD c
,
1256 return IDirectDraw7_SetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1263 static HRESULT WINAPI
1264 IDirectDraw4Impl_SetDisplayMode(LPDIRECTDRAW4 This
, DWORD a
, DWORD b
, DWORD c
,
1267 return IDirectDraw7_SetDisplayMode(COM_INTERFACE_CAST(IDirectDrawImpl
,
1274 static HRESULT WINAPI
1275 IDirectDrawImpl_WaitForVerticalBlank(LPDIRECTDRAW This
, DWORD dwFlags
,
1278 return IDirectDraw7_WaitForVerticalBlank(COM_INTERFACE_CAST(IDirectDrawImpl
,
1285 static HRESULT WINAPI
1286 IDirectDraw2Impl_WaitForVerticalBlank(LPDIRECTDRAW2 This
, DWORD dwFlags
,
1289 return IDirectDraw7_WaitForVerticalBlank(COM_INTERFACE_CAST(IDirectDrawImpl
,
1296 static HRESULT WINAPI
1297 IDirectDraw3Impl_WaitForVerticalBlank(LPDIRECTDRAW3 This
, DWORD dwFlags
,
1300 return IDirectDraw7_WaitForVerticalBlank(COM_INTERFACE_CAST(IDirectDrawImpl
,
1307 static HRESULT WINAPI
1308 IDirectDraw4Impl_WaitForVerticalBlank(LPDIRECTDRAW4 This
, DWORD dwFlags
,
1311 return IDirectDraw7_WaitForVerticalBlank(COM_INTERFACE_CAST(IDirectDrawImpl
,
1318 static HRESULT WINAPI
1319 IDirectDraw2Impl_GetAvailableVidMem(LPDIRECTDRAW2 This
, LPDDSCAPS pCaps
,
1320 LPDWORD pdwTotal
, LPDWORD pdwFree
)
1323 DDRAW_Convert_DDSCAPS_1_To_2(pCaps
, &Caps2
);
1325 return IDirectDraw7_GetAvailableVidMem(COM_INTERFACE_CAST(IDirectDrawImpl
,
1329 &Caps2
, pdwTotal
, pdwFree
);
1332 static HRESULT WINAPI
1333 IDirectDraw3Impl_GetAvailableVidMem(LPDIRECTDRAW3 This
, LPDDSCAPS pCaps
,
1334 LPDWORD pdwTotal
, LPDWORD pdwFree
)
1337 DDRAW_Convert_DDSCAPS_1_To_2(pCaps
, &Caps2
);
1339 return IDirectDraw7_GetAvailableVidMem(COM_INTERFACE_CAST(IDirectDrawImpl
,
1343 &Caps2
, pdwTotal
, pdwFree
);
1346 static HRESULT WINAPI
1347 IDirectDraw4Impl_GetAvailableVidMem(LPDIRECTDRAW4 This
, LPDDSCAPS2 pCaps
,
1348 LPDWORD pdwTotal
, LPDWORD pdwFree
)
1350 return IDirectDraw7_GetAvailableVidMem(COM_INTERFACE_CAST(IDirectDrawImpl
,
1354 pCaps
, pdwTotal
, pdwFree
);
1357 static HRESULT WINAPI
1358 IDirectDraw3Impl_GetSurfaceFromDC(LPDIRECTDRAW3 This
, HDC hDC
,
1359 LPDIRECTDRAWSURFACE
*pSurf
)
1361 return IDirectDraw7_GetSurfaceFromDC(COM_INTERFACE_CAST(IDirectDrawImpl
,
1365 hDC
, (LPDIRECTDRAWSURFACE7
*)pSurf
);
1368 static HRESULT WINAPI
1369 IDirectDraw4Impl_GetSurfaceFromDC(LPDIRECTDRAW4 This
, HDC hDC
,
1370 LPDIRECTDRAWSURFACE4
*pSurf
)
1372 return IDirectDraw7_GetSurfaceFromDC(COM_INTERFACE_CAST(IDirectDrawImpl
,
1376 hDC
, (LPDIRECTDRAWSURFACE7
*)pSurf
);
1379 static HRESULT WINAPI
1380 IDirectDraw4Impl_RestoreAllSurfaces(LPDIRECTDRAW4 This
)
1382 return IDirectDraw7_RestoreAllSurfaces(COM_INTERFACE_CAST(IDirectDrawImpl
,
1388 static HRESULT WINAPI
1389 IDirectDraw4Impl_TestCooperativeLevel(LPDIRECTDRAW4 This
)
1391 return IDirectDraw7_TestCooperativeLevel(COM_INTERFACE_CAST(IDirectDrawImpl
,
1397 static HRESULT WINAPI
1398 IDirectDraw4Impl_GetDeviceIdentifier(LPDIRECTDRAW4 This
,
1399 LPDDDEVICEIDENTIFIER pDDDI
, DWORD dwFlags
)
1401 DDDEVICEIDENTIFIER2 DDDI2
;
1404 hr
= IDirectDraw7_GetDeviceIdentifier(COM_INTERFACE_CAST(IDirectDrawImpl
,
1410 DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1(&DDDI2
, pDDDI
);
1415 const IDirectDrawVtbl IDirectDraw1_Vtbl
=
1417 IDirectDrawImpl_QueryInterface
,
1418 IDirectDrawImpl_AddRef
,
1419 IDirectDrawImpl_Release
,
1420 IDirectDrawImpl_Compact
,
1421 IDirectDrawImpl_CreateClipper
,
1422 IDirectDrawImpl_CreatePalette
,
1423 IDirectDrawImpl_CreateSurface
,
1424 IDirectDrawImpl_DuplicateSurface
,
1425 IDirectDrawImpl_EnumDisplayModes
,
1426 IDirectDrawImpl_EnumSurfaces
,
1427 IDirectDrawImpl_FlipToGDISurface
,
1428 IDirectDrawImpl_GetCaps
,
1429 IDirectDrawImpl_GetDisplayMode
,
1430 IDirectDrawImpl_GetFourCCCodes
,
1431 IDirectDrawImpl_GetGDISurface
,
1432 IDirectDrawImpl_GetMonitorFrequency
,
1433 IDirectDrawImpl_GetScanLine
,
1434 IDirectDrawImpl_GetVerticalBlankStatus
,
1435 IDirectDrawImpl_Initialize
,
1436 IDirectDrawImpl_RestoreDisplayMode
,
1437 IDirectDrawImpl_SetCooperativeLevel
,
1438 IDirectDrawImpl_SetDisplayMode
,
1439 IDirectDrawImpl_WaitForVerticalBlank
,
1442 const IDirectDraw2Vtbl IDirectDraw2_Vtbl
=
1444 IDirectDraw2Impl_QueryInterface
,
1445 IDirectDraw2Impl_AddRef
,
1446 IDirectDraw2Impl_Release
,
1447 IDirectDraw2Impl_Compact
,
1448 IDirectDraw2Impl_CreateClipper
,
1449 IDirectDraw2Impl_CreatePalette
,
1450 IDirectDraw2Impl_CreateSurface
,
1451 IDirectDraw2Impl_DuplicateSurface
,
1452 IDirectDraw2Impl_EnumDisplayModes
,
1453 IDirectDraw2Impl_EnumSurfaces
,
1454 IDirectDraw2Impl_FlipToGDISurface
,
1455 IDirectDraw2Impl_GetCaps
,
1456 IDirectDraw2Impl_GetDisplayMode
,
1457 IDirectDraw2Impl_GetFourCCCodes
,
1458 IDirectDraw2Impl_GetGDISurface
,
1459 IDirectDraw2Impl_GetMonitorFrequency
,
1460 IDirectDraw2Impl_GetScanLine
,
1461 IDirectDraw2Impl_GetVerticalBlankStatus
,
1462 IDirectDraw2Impl_Initialize
,
1463 IDirectDraw2Impl_RestoreDisplayMode
,
1464 IDirectDraw2Impl_SetCooperativeLevel
,
1465 IDirectDraw2Impl_SetDisplayMode
,
1466 IDirectDraw2Impl_WaitForVerticalBlank
,
1467 IDirectDraw2Impl_GetAvailableVidMem
1470 const IDirectDraw3Vtbl IDirectDraw3_Vtbl
=
1472 IDirectDraw3Impl_QueryInterface
,
1473 IDirectDraw3Impl_AddRef
,
1474 IDirectDraw3Impl_Release
,
1475 IDirectDraw3Impl_Compact
,
1476 IDirectDraw3Impl_CreateClipper
,
1477 IDirectDraw3Impl_CreatePalette
,
1478 IDirectDraw3Impl_CreateSurface
,
1479 IDirectDraw3Impl_DuplicateSurface
,
1480 IDirectDraw3Impl_EnumDisplayModes
,
1481 IDirectDraw3Impl_EnumSurfaces
,
1482 IDirectDraw3Impl_FlipToGDISurface
,
1483 IDirectDraw3Impl_GetCaps
,
1484 IDirectDraw3Impl_GetDisplayMode
,
1485 IDirectDraw3Impl_GetFourCCCodes
,
1486 IDirectDraw3Impl_GetGDISurface
,
1487 IDirectDraw3Impl_GetMonitorFrequency
,
1488 IDirectDraw3Impl_GetScanLine
,
1489 IDirectDraw3Impl_GetVerticalBlankStatus
,
1490 IDirectDraw3Impl_Initialize
,
1491 IDirectDraw3Impl_RestoreDisplayMode
,
1492 IDirectDraw3Impl_SetCooperativeLevel
,
1493 IDirectDraw3Impl_SetDisplayMode
,
1494 IDirectDraw3Impl_WaitForVerticalBlank
,
1495 IDirectDraw3Impl_GetAvailableVidMem
,
1496 IDirectDraw3Impl_GetSurfaceFromDC
,
1499 const IDirectDraw4Vtbl IDirectDraw4_Vtbl
=
1501 IDirectDraw4Impl_QueryInterface
,
1502 IDirectDraw4Impl_AddRef
,
1503 IDirectDraw4Impl_Release
,
1504 IDirectDraw4Impl_Compact
,
1505 IDirectDraw4Impl_CreateClipper
,
1506 IDirectDraw4Impl_CreatePalette
,
1507 IDirectDraw4Impl_CreateSurface
,
1508 IDirectDraw4Impl_DuplicateSurface
,
1509 IDirectDraw4Impl_EnumDisplayModes
,
1510 IDirectDraw4Impl_EnumSurfaces
,
1511 IDirectDraw4Impl_FlipToGDISurface
,
1512 IDirectDraw4Impl_GetCaps
,
1513 IDirectDraw4Impl_GetDisplayMode
,
1514 IDirectDraw4Impl_GetFourCCCodes
,
1515 IDirectDraw4Impl_GetGDISurface
,
1516 IDirectDraw4Impl_GetMonitorFrequency
,
1517 IDirectDraw4Impl_GetScanLine
,
1518 IDirectDraw4Impl_GetVerticalBlankStatus
,
1519 IDirectDraw4Impl_Initialize
,
1520 IDirectDraw4Impl_RestoreDisplayMode
,
1521 IDirectDraw4Impl_SetCooperativeLevel
,
1522 IDirectDraw4Impl_SetDisplayMode
,
1523 IDirectDraw4Impl_WaitForVerticalBlank
,
1524 IDirectDraw4Impl_GetAvailableVidMem
,
1525 IDirectDraw4Impl_GetSurfaceFromDC
,
1526 IDirectDraw4Impl_RestoreAllSurfaces
,
1527 IDirectDraw4Impl_TestCooperativeLevel
,
1528 IDirectDraw4Impl_GetDeviceIdentifier