|  | /* | 
|  | * DirectDraw driver interface | 
|  | * (DirectX 7 version) | 
|  | * | 
|  | * Copyright (C) 2001 Ove Kaaven | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | 
|  | */ | 
|  |  | 
|  | #ifndef __DDRAWI_INCLUDED__ | 
|  | #define __DDRAWI_INCLUDED__ | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #define OBJECT_ISROOT           0x80000000 | 
|  |  | 
|  | #include <ddraw.h> | 
|  | #include <dvp.h> | 
|  | #include <ddkernel.h> | 
|  | #include <dmemmgr.h> | 
|  |  | 
|  | #define DDAPI WINAPI | 
|  |  | 
|  | #define VALID_ALIGNMENT(align) \ | 
|  | (!((align==0)||(align%2)!= 0 )) | 
|  |  | 
|  | /* the DirectDraw versions */ | 
|  | #define DD_VERSION		0x0200 /* compatibility version */ | 
|  | #define DD_RUNTIME_VERSION	0x0902 /* actual version */ | 
|  |  | 
|  | /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ | 
|  | #define DD_HAL_VERSION	0x0100 | 
|  |  | 
|  | /* more DCICOMMAND escapes */ | 
|  | #ifndef DCICOMMAND | 
|  | #define DCICOMMAND 3075 | 
|  | #endif | 
|  |  | 
|  | #define DDCREATEDRIVEROBJECT	10 | 
|  | #define DDGET32BITDRIVERNAME	11 | 
|  | #define DDNEWCALLBACKFNS	12 | 
|  | #define DDVERSIONINFO		13 | 
|  |  | 
|  |  | 
|  | #define DDUNSUPPORTEDMODE  ((DWORD) -1) | 
|  |  | 
|  | #include "dciddi.h" | 
|  |  | 
|  | #ifndef CCHDEVICENAME | 
|  | #define CCHDEVICENAME 32 | 
|  | #endif | 
|  | #define MAX_DRIVER_NAME		CCHDEVICENAME | 
|  |  | 
|  | #define DDHAL_DRIVER_DLLNAME    "DDRAW16.DLL" | 
|  | #define DDHAL_APP_DLLNAME   "DDRAW.DLL" | 
|  |  | 
|  |  | 
|  | /* GUID */ | 
|  | #ifdef _WIN32 | 
|  | DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); | 
|  | DEFINE_GUID(GUID_VideoPortCallbacks,     0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); | 
|  | DEFINE_GUID(GUID_ColorControlCallbacks,  0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); | 
|  | DEFINE_GUID(GUID_VideoPortCaps,          0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); | 
|  | DEFINE_GUID(GUID_D3DCallbacks2,          0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); | 
|  | DEFINE_GUID(GUID_D3DCallbacks3,          0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); | 
|  | DEFINE_GUID(GUID_NonLocalVidMemCaps,     0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); | 
|  | DEFINE_GUID(GUID_KernelCallbacks,        0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); | 
|  | DEFINE_GUID(GUID_KernelCaps,             0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); | 
|  | DEFINE_GUID(GUID_D3DExtendedCaps,        0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29); | 
|  | DEFINE_GUID(GUID_ZPixelFormats,          0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); | 
|  | DEFINE_GUID(GUID_DDMoreSurfaceCaps,      0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); | 
|  | DEFINE_GUID(GUID_DDStereoMode,           0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); | 
|  | DEFINE_GUID(GUID_OptSurfaceKmodeInfo,    0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); | 
|  | DEFINE_GUID(GUID_OptSurfaceUmodeInfo,    0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); | 
|  | DEFINE_GUID(GUID_UserModeDriverInfo,     0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); | 
|  | DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); | 
|  | DEFINE_GUID(GUID_D3DParseUnknownCommandCallback,  0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); | 
|  | DEFINE_GUID(GUID_MotionCompCallbacks,           0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); | 
|  | DEFINE_GUID(GUID_Miscellaneous2Callbacks,   0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); | 
|  | #endif | 
|  |  | 
|  | #ifndef _WIN32 | 
|  | #undef  E_NOTIMPL | 
|  | #undef  E_OUTOFMEMORY | 
|  | #undef  E_INVALIDARG | 
|  | #undef  E_FAIL | 
|  | #define E_NOTIMPL      0x80004001L | 
|  | #define E_OUTOFMEMORY  0x8007000EL | 
|  | #define E_INVALIDARG   0x80070057L | 
|  | #define E_FAIL         0x80004005L | 
|  | #endif | 
|  |  | 
|  |  | 
|  | /***************************************************************************** | 
|  | * Initialization stuff | 
|  | */ | 
|  | typedef struct { | 
|  | char szName[260]; | 
|  | char szEntryPoint[64]; | 
|  | DWORD dwContext; | 
|  | } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; | 
|  |  | 
|  | typedef struct { | 
|  | DWORD dwHALVersion; | 
|  | ULONG_PTR dwReserved1; | 
|  | ULONG_PTR dwReserved2; | 
|  | } DDVERSIONDATA,*LPDDVERSIONDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext); | 
|  |  | 
|  |  | 
|  |  | 
|  | /* predeclare some structures */ | 
|  | typedef struct _DDHALINFO *LPDDHALINFO; | 
|  | typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; | 
|  |  | 
|  | #ifndef DDRAWI_DIRECTDRAW_DEFINED | 
|  | typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; | 
|  | typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; | 
|  | #define DDRAWI_DIRECTDRAW_DEFINED | 
|  | #endif | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT; | 
|  |  | 
|  | #ifndef DDRAWI_DDRAWSURFACE_DEFINED | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL; | 
|  | #define DDRAWI_DDRAWSURFACE_DEFINED | 
|  | #endif | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL; | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE; | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE; | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT; | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL; | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL; | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT; | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL; | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL; | 
|  | typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT; | 
|  | typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL; | 
|  | typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT; | 
|  | typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * driver->ddraw callbacks | 
|  | */ | 
|  | typedef WINBOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, WINBOOL reset); | 
|  | typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); | 
|  | typedef void    (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); | 
|  |  | 
|  | typedef struct { | 
|  | DWORD		dwSize; | 
|  | LPDDHAL_SETINFO	lpSetInfo; | 
|  | LPDDHAL_VIDMEMALLOC	lpVidMemAlloc; | 
|  | LPDDHAL_VIDMEMFREE	lpVidMemFree; | 
|  | } DDHALDDRAWFNS,*LPDDHALDDRAWFNS; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * mode info structure | 
|  | */ | 
|  | typedef struct _DDHALMODEINFO { | 
|  | DWORD	dwWidth; | 
|  | DWORD	dwHeight; | 
|  | LONG	lPitch; | 
|  | DWORD	dwBPP; | 
|  | WORD	wFlags; | 
|  | WORD	wRefreshRate; | 
|  | DWORD	dwRBitMask; | 
|  | DWORD	dwGBitMask; | 
|  | DWORD	dwBBitMask; | 
|  | DWORD	dwAlphaBitMask; | 
|  | } DDHALMODEINFO,*LPDDHALMODEINFO; | 
|  |  | 
|  |  | 
|  | #define DDMODEINFO_PALETTIZED	0x0001 | 
|  | #define DDMODEINFO_MODEX	0x0002 | 
|  | #define DDMODEINFO_UNSUPPORTED	0x0004 | 
|  | #define DDMODEINFO_STANDARDVGA	0x0008 | 
|  | #define DDMODEINFO_MAXREFRESH	0x0010 | 
|  | #define DDMODEINFO_STEREO	0x0020 | 
|  |  | 
|  | /***************************************************************************** | 
|  | * video memory info structure | 
|  | */ | 
|  | typedef struct _VIDMEM { | 
|  | DWORD	dwFlags; | 
|  | FLATPTR	fpStart; | 
|  | __GNU_EXTENSION union { | 
|  | FLATPTR		fpEnd; | 
|  | DWORD		dwWidth; | 
|  | }; | 
|  | DDSCAPS	ddsCaps; | 
|  | DDSCAPS	ddsCapsAlt; | 
|  | __GNU_EXTENSION union { | 
|  | LPVMEMHEAP	lpHeap; | 
|  | DWORD		dwHeight; | 
|  | }; | 
|  | } VIDMEM; | 
|  |  | 
|  |  | 
|  | #define VIDMEM_ISLINEAR			0x00000001l | 
|  | #define VIDMEM_ISRECTANGULAR		0x00000002l | 
|  | #define VIDMEM_ISHEAP			0x00000004l | 
|  | #define VIDMEM_ISNONLOCAL		0x00000008l | 
|  | #define VIDMEM_ISWC			0x00000010l | 
|  | #define VIDMEM_HEAPDISABLED		0x00000020l | 
|  |  | 
|  | typedef struct _VIDMEMINFO { | 
|  | FLATPTR		fpPrimary; | 
|  | DWORD		dwFlags; | 
|  | DWORD		dwDisplayWidth; | 
|  | DWORD		dwDisplayHeight; | 
|  | LONG		lDisplayPitch; | 
|  | DDPIXELFORMAT	ddpfDisplay; | 
|  | DWORD		dwOffscreenAlign; | 
|  | DWORD		dwOverlayAlign; | 
|  | DWORD		dwTextureAlign; | 
|  | DWORD		dwZBufferAlign; | 
|  | DWORD		dwAlphaAlign; | 
|  | DWORD		dwNumHeaps; | 
|  | LPVIDMEM		pvmList; | 
|  | } VIDMEMINFO,*LPVIDMEMINFO; | 
|  |  | 
|  |  | 
|  | typedef struct _HEAPALIAS { | 
|  | FLATPTR	fpVidMem; | 
|  | LPVOID	lpAlias; | 
|  | DWORD	dwAliasSize; | 
|  | } HEAPALIAS,*LPHEAPALIAS; | 
|  |  | 
|  | typedef struct _HEAPALIASINFO { | 
|  | DWORD	dwRefCnt; | 
|  | DWORD	dwFlags; | 
|  | DWORD	dwNumHeaps; | 
|  | LPHEAPALIAS	lpAliases; | 
|  | } HEAPALIASINFO,*LPHEAPALIASINFO; | 
|  |  | 
|  | #define HEAPALIASINFO_MAPPEDREAL	0x00000001 | 
|  | #define HEAPALIASINFO_MAPPEDDUMMY	0x00000002 | 
|  |  | 
|  | /***************************************************************************** | 
|  | * capabilities structures | 
|  | */ | 
|  | typedef struct _DDCORECAPS { | 
|  | DWORD	dwSize; | 
|  | DWORD	dwCaps; | 
|  | DWORD	dwCaps2; | 
|  | DWORD	dwCKeyCaps; | 
|  | DWORD	dwFXCaps; | 
|  | DWORD	dwFXAlphaCaps; | 
|  | DWORD	dwPalCaps; | 
|  | DWORD	dwSVCaps; | 
|  | DWORD	dwAlphaBltConstBitDepths; | 
|  | DWORD	dwAlphaBltPixelBitDepths; | 
|  | DWORD	dwAlphaBltSurfaceBitDepths; | 
|  | DWORD	dwAlphaOverlayConstBitDepths; | 
|  | DWORD	dwAlphaOverlayPixelBitDepths; | 
|  | DWORD	dwAlphaOverlaySurfaceBitDepths; | 
|  | DWORD	dwZBufferBitDepths; | 
|  | DWORD	dwVidMemTotal; | 
|  | DWORD	dwVidMemFree; | 
|  | DWORD	dwMaxVisibleOverlays; | 
|  | DWORD	dwCurrVisibleOverlays; | 
|  | DWORD	dwNumFourCCCodes; | 
|  | DWORD	dwAlignBoundarySrc; | 
|  | DWORD	dwAlignSizeSrc; | 
|  | DWORD	dwAlignBoundaryDest; | 
|  | DWORD	dwAlignSizeDest; | 
|  | DWORD	dwAlignStrideAlign; | 
|  | DWORD	dwRops[DD_ROP_SPACE]; | 
|  | DDSCAPS	ddsCaps; | 
|  | DWORD	dwMinOverlayStretch; | 
|  | DWORD	dwMaxOverlayStretch; | 
|  | DWORD	dwMinLiveVideoStretch; | 
|  | DWORD	dwMaxLiveVideoStretch; | 
|  | DWORD	dwMinHwCodecStretch; | 
|  | DWORD	dwMaxHwCodecStretch; | 
|  | DWORD	dwReserved1; | 
|  | DWORD	dwReserved2; | 
|  | DWORD	dwReserved3; | 
|  | DWORD	dwSVBCaps; | 
|  | DWORD	dwSVBCKeyCaps; | 
|  | DWORD	dwSVBFXCaps; | 
|  | DWORD	dwSVBRops[DD_ROP_SPACE]; | 
|  | DWORD	dwVSBCaps; | 
|  | DWORD	dwVSBCKeyCaps; | 
|  | DWORD	dwVSBFXCaps; | 
|  | DWORD	dwVSBRops[DD_ROP_SPACE]; | 
|  | DWORD	dwSSBCaps; | 
|  | DWORD	dwSSBCKeyCaps; | 
|  | DWORD	dwSSBFXCaps; | 
|  | DWORD	dwSSBRops[DD_ROP_SPACE]; | 
|  | DWORD	dwMaxVideoPorts; | 
|  | DWORD	dwCurrVideoPorts; | 
|  | DWORD	dwSVBCaps2; | 
|  | } DDCORECAPS,*LPDDCORECAPS; | 
|  |  | 
|  | typedef struct _DDNONLOCALVIDMEMCAPS { | 
|  | DWORD	dwSize; | 
|  | DWORD	dwNLVBCaps; | 
|  | DWORD	dwNLVBCaps2; | 
|  | DWORD	dwNLVBCKeyCaps; | 
|  | DWORD	dwNLVBFXCaps; | 
|  | DWORD	dwNLVBRops[DD_ROP_SPACE]; | 
|  | } DDNONLOCALVIDMEMCAPS,*LPDDNONLOCALVIDMEMCAPS; | 
|  |  | 
|  |  | 
|  | #define DDSCAPS_EXECUTEBUFFER		DDSCAPS_RESERVED2 | 
|  | #define DDSCAPS2_VERTEXBUFFER		DDSCAPS2_RESERVED1 | 
|  | #define DDSCAPS2_COMMANDBUFFER		DDSCAPS2_RESERVED2 | 
|  |  | 
|  |  | 
|  | /***************************************************************************** | 
|  | * ddraw->driver callbacks | 
|  | */ | 
|  | #define DDHAL_DRIVER_NOTHANDLED		0x00000000l | 
|  | #define DDHAL_DRIVER_HANDLED		0x00000001l | 
|  | #define DDHAL_DRIVER_NOCKEYHW		0x00000002l | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYDRIVERDATA		*LPDDHAL_DESTROYDRIVERDATA; | 
|  | typedef struct _DDHAL_CREATESURFACEDATA		*LPDDHAL_CREATESURFACEDATA; | 
|  | typedef struct _DDHAL_DRVSETCOLORKEYDATA	*LPDDHAL_DRVSETCOLORKEYDATA; | 
|  | typedef struct _DDHAL_SETMODEDATA		*LPDDHAL_SETMODEDATA; | 
|  | typedef struct _DDHAL_WAITFORVERTICALBLANKDATA	*LPDDHAL_WAITFORVERTICALBLANKDATA; | 
|  | typedef struct _DDHAL_CANCREATESURFACEDATA	*LPDDHAL_CANCREATESURFACEDATA; | 
|  | typedef struct _DDHAL_CREATEPALETTEDATA		*LPDDHAL_CREATEPALETTEDATA; | 
|  | typedef struct _DDHAL_GETSCANLINEDATA		*LPDDHAL_GETSCANLINEDATA; | 
|  | typedef struct _DDHAL_SETEXCLUSIVEMODEDATA	*LPDDHAL_SETEXCLUSIVEMODEDATA; | 
|  | typedef struct _DDHAL_FLIPTOGDISURFACEDATA	*LPDDHAL_FLIPTOGDISURFACEDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER)	    (LPDDHAL_DESTROYDRIVERDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE)	    (LPDDHAL_CREATESURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY)	    (LPDDHAL_DRVSETCOLORKEYDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_SETMODE)		    (LPDDHAL_SETMODEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE)    (LPDDHAL_CANCREATESURFACEDATA ); | 
|  | typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE)	    (LPDDHAL_CREATEPALETTEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE)	    (LPDDHAL_GETSCANLINEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE)    (LPDDHAL_SETEXCLUSIVEMODEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE)    (LPDDHAL_FLIPTOGDISURFACEDATA); | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_DDCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHAL_DESTROYDRIVER		DestroyDriver; | 
|  | LPDDHAL_CREATESURFACE		CreateSurface; | 
|  | LPDDHAL_SETCOLORKEY			SetColorKey; | 
|  | LPDDHAL_SETMODE			SetMode; | 
|  | LPDDHAL_WAITFORVERTICALBLANK	WaitForVerticalBlank; | 
|  | LPDDHAL_CANCREATESURFACE		CanCreateSurface; | 
|  | LPDDHAL_CREATEPALETTE		CreatePalette; | 
|  | LPDDHAL_GETSCANLINE			GetScanLine; | 
|  | /* DirectX 2 */ | 
|  | LPDDHAL_SETEXCLUSIVEMODE		SetExclusiveMode; | 
|  | LPDDHAL_FLIPTOGDISURFACE		FlipToGDISurface; | 
|  | } DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS; | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYSURFACEDATA	*LPDDHAL_DESTROYSURFACEDATA; | 
|  | typedef struct _DDHAL_FLIPDATA			*LPDDHAL_FLIPDATA; | 
|  | typedef struct _DDHAL_SETCLIPLISTDATA		*LPDDHAL_SETCLIPLISTDATA; | 
|  | typedef struct _DDHAL_LOCKDATA			*LPDDHAL_LOCKDATA; | 
|  | typedef struct _DDHAL_UNLOCKDATA		*LPDDHAL_UNLOCKDATA; | 
|  | typedef struct _DDHAL_BLTDATA			*LPDDHAL_BLTDATA; | 
|  | typedef struct _DDHAL_SETCOLORKEYDATA		*LPDDHAL_SETCOLORKEYDATA; | 
|  | typedef struct _DDHAL_ADDATTACHEDSURFACEDATA	*LPDDHAL_ADDATTACHEDSURFACEDATA; | 
|  | typedef struct _DDHAL_GETBLTSTATUSDATA		*LPDDHAL_GETBLTSTATUSDATA; | 
|  | typedef struct _DDHAL_GETFLIPSTATUSDATA		*LPDDHAL_GETFLIPSTATUSDATA; | 
|  | typedef struct _DDHAL_UPDATEOVERLAYDATA		*LPDDHAL_UPDATEOVERLAYDATA; | 
|  | typedef struct _DDHAL_SETOVERLAYPOSITIONDATA	*LPDDHAL_SETOVERLAYPOSITIONDATA; | 
|  | typedef struct _DDHAL_SETPALETTEDATA		*LPDDHAL_SETPALETTEDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE)	(LPDDHAL_DESTROYSURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP)		(LPDDHAL_FLIPDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST)	(LPDDHAL_SETCLIPLISTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK)		(LPDDHAL_LOCKDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK)		(LPDDHAL_UNLOCKDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_BLT)		(LPDDHAL_BLTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY)	(LPDDHAL_SETCOLORKEYDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS)	(LPDDHAL_GETBLTSTATUSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS)	(LPDDHAL_GETFLIPSTATUSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY)	(LPDDHAL_UPDATEOVERLAYDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE)	(LPDDHAL_SETPALETTEDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDSURFACECALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALSURFCB_DESTROYSURFACE	DestroySurface; | 
|  | LPDDHALSURFCB_FLIP			Flip; | 
|  | LPDDHALSURFCB_SETCLIPLIST		SetClipList; | 
|  | LPDDHALSURFCB_LOCK			Lock; | 
|  | LPDDHALSURFCB_UNLOCK		Unlock; | 
|  | LPDDHALSURFCB_BLT			Blt; | 
|  | LPDDHALSURFCB_SETCOLORKEY		SetColorKey; | 
|  | LPDDHALSURFCB_ADDATTACHEDSURFACE	AddAttachedSurface; | 
|  | LPDDHALSURFCB_GETBLTSTATUS		GetBltStatus; | 
|  | LPDDHALSURFCB_GETFLIPSTATUS		GetFlipStatus; | 
|  | LPDDHALSURFCB_UPDATEOVERLAY		UpdateOverlay; | 
|  | LPDDHALSURFCB_SETOVERLAYPOSITION	SetOverlayPosition; | 
|  | LPVOID				reserved4; | 
|  | LPDDHALSURFCB_SETPALETTE		SetPalette; | 
|  | } DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS; | 
|  |  | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYPALETTEDATA	*LPDDHAL_DESTROYPALETTEDATA; | 
|  | typedef struct _DDHAL_SETENTRIESDATA		*LPDDHAL_SETENTRIESDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES)    (LPDDHAL_SETENTRIESDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDPALETTECALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALPALCB_DESTROYPALETTE		DestroyPalette; | 
|  | LPDDHALPALCB_SETENTRIES		SetEntries; | 
|  | } DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF)   (LPDDHAL_CREATESURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF)  (LPDDHAL_DESTROYSURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF)     (LPDDHAL_LOCKDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF)   (LPDDHAL_UNLOCKDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDEXEBUFCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALEXEBUFCB_CANCREATEEXEBUF	CanCreateExecuteBuffer; | 
|  | LPDDHALEXEBUFCB_CREATEEXEBUF	CreateExecuteBuffer; | 
|  | LPDDHALEXEBUFCB_DESTROYEXEBUF	DestroyExecuteBuffer; | 
|  | LPDDHALEXEBUFCB_LOCKEXEBUF		LockExecuteBuffer; | 
|  | LPDDHALEXEBUFCB_UNLOCKEXEBUF	UnlockExecuteBuffer; | 
|  | } DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS; | 
|  |  | 
|  | typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA	*LPDDHAL_GETAVAILDRIVERMEMORYDATA; | 
|  | typedef struct _DDHAL_UPDATENONLOCALHEAPDATA	*LPDDHAL_UPDATENONLOCALHEAPDATA; | 
|  | typedef struct _DDHAL_GETHEAPALIGNMENTDATA	*LPDDHAL_GETHEAPALIGNMENTDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP)  (LPDDHAL_UPDATENONLOCALHEAPDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT)    (LPDDHAL_GETHEAPALIGNMENTDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHAL_GETAVAILDRIVERMEMORY	GetAvailDriverMemory; | 
|  | LPDDHAL_UPDATENONLOCALHEAP		UpdateNonLocalHeap; | 
|  | LPDDHAL_GETHEAPALIGNMENT		GetHeapAlignment; | 
|  | LPDDHALSURFCB_GETBLTSTATUS		GetSysmemBltStatus; | 
|  | } DDHAL_DDMISCELLANEOUSCALLBACKS,*LPDDHAL_DDMISCELLANEOUSCALLBACKS; | 
|  |  | 
|  | typedef struct _DDHAL_CREATESURFACEEXDATA	*LPDDHAL_CREATESURFACEEXDATA; | 
|  | typedef struct _DDHAL_GETDRIVERSTATEDATA	*LPDDHAL_GETDRIVERSTATEDATA; | 
|  | typedef struct _DDHAL_DESTROYDDLOCALDATA	*LPDDHAL_DESTROYDDLOCALDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPVOID				Reserved; | 
|  | LPDDHAL_CREATESURFACEEX		CreateSurfaceEx; | 
|  | LPDDHAL_GETDRIVERSTATE		GetDriverState; | 
|  | LPDDHAL_DESTROYDDLOCAL		DestroyDDLocal; | 
|  | } DDHAL_DDMISCELLANEOUS2CALLBACKS,*LPDDHAL_DDMISCELLANEOUS2CALLBACKS; | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_CANCREATEVPORTDATA       *LPDDHAL_CANCREATEVPORTDATA; | 
|  | typedef struct _DDHAL_CREATEVPORTDATA          *LPDDHAL_CREATEVPORTDATA; | 
|  | typedef struct _DDHAL_FLIPVPORTDATA            *LPDDHAL_FLIPVPORTDATA; | 
|  | typedef struct _DDHAL_GETVPORTCONNECTDATA      *LPDDHAL_GETVPORTCONNECTDATA; | 
|  | typedef struct _DDHAL_GETVPORTBANDWIDTHDATA    *LPDDHAL_GETVPORTBANDWIDTHDATA; | 
|  | typedef struct _DDHAL_GETVPORTINPUTFORMATDATA  *LPDDHAL_GETVPORTINPUTFORMATDATA; | 
|  | typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA; | 
|  | typedef struct _DDHAL_GETVPORTFIELDDATA        *LPDDHAL_GETVPORTFIELDDATA; | 
|  | typedef struct _DDHAL_GETVPORTLINEDATA         *LPDDHAL_GETVPORTLINEDATA; | 
|  | typedef struct _DDHAL_DESTROYVPORTDATA         *LPDDHAL_DESTROYVPORTDATA; | 
|  | typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA   *LPDDHAL_GETVPORTFLIPSTATUSDATA; | 
|  | typedef struct _DDHAL_UPDATEVPORTDATA          *LPDDHAL_UPDATEVPORTDATA; | 
|  | typedef struct _DDHAL_WAITFORVPORTSYNCDATA     *LPDDHAL_WAITFORVPORTSYNCDATA; | 
|  | typedef struct _DDHAL_GETVPORTSIGNALDATA       *LPDDHAL_GETVPORTSIGNALDATA; | 
|  | typedef struct _DDHAL_VPORTCOLORDATA           *LPDDHAL_VPORTCOLORDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDVIDEOPORTCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALVPORTCB_CANCREATEVIDEOPORT	CanCreateVideoPort; | 
|  | LPDDHALVPORTCB_CREATEVIDEOPORT	CreateVideoPort; | 
|  | LPDDHALVPORTCB_FLIP			FlipVideoPort; | 
|  | LPDDHALVPORTCB_GETBANDWIDTH		GetVideoPortBandwidth; | 
|  | LPDDHALVPORTCB_GETINPUTFORMATS	GetVideoPortInputFormats; | 
|  | LPDDHALVPORTCB_GETOUTPUTFORMATS	GetVideoPortOutputFormats; | 
|  | LPVOID				lpReserved1; | 
|  | LPDDHALVPORTCB_GETFIELD		GetVideoPortField; | 
|  | LPDDHALVPORTCB_GETLINE		GetVideoPortLine; | 
|  | LPDDHALVPORTCB_GETVPORTCONNECT	GetVideoPortConnectInfo; | 
|  | LPDDHALVPORTCB_DESTROYVPORT		DestroyVideoPort; | 
|  | LPDDHALVPORTCB_GETFLIPSTATUS	GetVideoPortFlipStatus; | 
|  | LPDDHALVPORTCB_UPDATE		UpdateVideoPort; | 
|  | LPDDHALVPORTCB_WAITFORSYNC		WaitForVideoPortSync; | 
|  | LPDDHALVPORTCB_GETSIGNALSTATUS	GetVideoSignalStatus; | 
|  | LPDDHALVPORTCB_COLORCONTROL		ColorControl; | 
|  | } DDHAL_DDVIDEOPORTCALLBACKS; | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA); | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALCOLORCB_COLORCONTROL		ColorControl; | 
|  | } DDHAL_DDCOLORCONTROLCALLBACKS; | 
|  |  | 
|  | typedef struct _DDHAL_SYNCSURFACEDATA   *LPDDHAL_SYNCSURFACEDATA; | 
|  | typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDKERNELCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALKERNELCB_SYNCSURFACE		SyncSurfaceData; | 
|  | LPDDHALKERNELCB_SYNCVIDEOPORT	SyncVideoPortData; | 
|  | } DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS; | 
|  |  | 
|  | typedef struct _DDHAL_GETMOCOMPGUIDSDATA  *LPDDHAL_GETMOCOMPGUIDSDATA; | 
|  | typedef struct _DDHAL_GETMOCOMPFORMATSDATA  *LPDDHAL_GETMOCOMPFORMATSDATA; | 
|  | typedef struct _DDHAL_CREATEMOCOMPDATA  *LPDDHAL_CREATEMOCOMPDATA; | 
|  | typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA  *LPDDHAL_GETMOCOMPCOMPBUFFDATA; | 
|  | typedef struct _DDHAL_GETINTERNALMOCOMPDATA  *LPDDHAL_GETINTERNALMOCOMPDATA; | 
|  | typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA  *LPDDHAL_BEGINMOCOMPFRAMEDATA; | 
|  | typedef struct _DDHAL_ENDMOCOMPFRAMEDATA  *LPDDHAL_ENDMOCOMPFRAMEDATA; | 
|  | typedef struct _DDHAL_RENDERMOCOMPDATA  *LPDDHAL_RENDERMOCOMPDATA; | 
|  | typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA  *LPDDHAL_QUERYMOCOMPSTATUSDATA; | 
|  | typedef struct _DDHAL_DESTROYMOCOMPDATA  *LPDDHAL_DESTROYMOCOMPDATA; | 
|  |  | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)( LPDDHAL_GETMOCOMPGUIDSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)( LPDDHAL_GETMOCOMPFORMATSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)( LPDDHAL_CREATEMOCOMPDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)( LPDDHAL_GETMOCOMPCOMPBUFFDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)( LPDDHAL_GETINTERNALMOCOMPDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)( LPDDHAL_BEGINMOCOMPFRAMEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)( LPDDHAL_ENDMOCOMPFRAMEDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)( LPDDHAL_RENDERMOCOMPDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)( LPDDHAL_QUERYMOCOMPSTATUSDATA); | 
|  | typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)( LPDDHAL_DESTROYMOCOMPDATA); | 
|  |  | 
|  | typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS { | 
|  | DWORD				dwSize; | 
|  | DWORD				dwFlags; | 
|  | LPDDHALMOCOMPCB_GETGUIDS		GetMoCompGuids; | 
|  | LPDDHALMOCOMPCB_GETFORMATS		GetMoCompFormats; | 
|  | LPDDHALMOCOMPCB_CREATE		CreateMoComp; | 
|  | LPDDHALMOCOMPCB_GETCOMPBUFFINFO	GetMoCompBuffInfo; | 
|  | LPDDHALMOCOMPCB_GETINTERNALINFO	GetInternalMoCompInfo; | 
|  | LPDDHALMOCOMPCB_BEGINFRAME		BeginMoCompFrame; | 
|  | LPDDHALMOCOMPCB_ENDFRAME		EndMoCompFrame; | 
|  | LPDDHALMOCOMPCB_RENDER		RenderMoComp; | 
|  | LPDDHALMOCOMPCB_QUERYSTATUS		QueryMoCompStatus; | 
|  | LPDDHALMOCOMPCB_DESTROY		DestroyMoComp; | 
|  | } DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS; | 
|  |  | 
|  |  | 
|  | typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE); | 
|  |  | 
|  |  | 
|  | /***************************************************************************** | 
|  | * driver info structure | 
|  | * | 
|  | * The HAL is queried for additional callbacks via the GetDriverInfo callback. | 
|  | */ | 
|  | typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; | 
|  | typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_GETDRIVERINFODATA { | 
|  | DWORD	dwSize; | 
|  | DWORD	dwFlags; | 
|  | GUID	guidInfo; | 
|  | DWORD	dwExpectedSize; | 
|  | LPVOID	lpvData; | 
|  | DWORD	dwActualSize; | 
|  | HRESULT	ddRVal; | 
|  | ULONG_PTR	dwContext; | 
|  | } DDHAL_GETDRIVERINFODATA; | 
|  |  | 
|  | typedef struct _DDHALINFO { | 
|  | DWORD			dwSize; | 
|  | LPDDHAL_DDCALLBACKS		lpDDCallbacks; | 
|  | LPDDHAL_DDSURFACECALLBACKS	lpDDSurfaceCallbacks; | 
|  | LPDDHAL_DDPALETTECALLBACKS	lpDDPaletteCallbacks; | 
|  | VIDMEMINFO			vmiData; | 
|  | DDCORECAPS			ddCaps; | 
|  | DWORD			dwMonitorFrequency; | 
|  | LPDDHAL_GETDRIVERINFO	GetDriverInfo; | 
|  | DWORD			dwModeIndex; | 
|  | LPDWORD			lpdwFourCC; | 
|  | DWORD			dwNumModes; | 
|  | LPDDHALMODEINFO		lpModeInfo; | 
|  | DWORD			dwFlags; | 
|  | LPVOID			lpPDevice; | 
|  | DWORD			hInstance; | 
|  | /* DirectX 2 */ | 
|  | ULONG_PTR			lpD3DGlobalDriverData; | 
|  | ULONG_PTR			lpD3DHALCallbacks; | 
|  | LPDDHAL_DDEXEBUFCALLBACKS	lpDDExeBufCallbacks; | 
|  | } DDHALINFO; | 
|  |  | 
|  |  | 
|  | #define DDPALETTECALLBACKSSIZE		sizeof(DDHAL_DDPALETTECALLBACKS) | 
|  | #define DDSURFACECALLBACKSSIZE		sizeof(DDHAL_DDSURFACECALLBACKS) | 
|  | #define DDMISCELLANEOUSCALLBACKSSIZE	sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS) | 
|  | #define DDMISCELLANEOUS2CALLBACKSSIZE	sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS) | 
|  | #define DDEXEBUFCALLBACKSSIZE		sizeof(DDHAL_DDEXEBUFCALLBACKS) | 
|  | #define DDVIDEOPORTCALLBACKSSIZE	sizeof(DDHAL_DDVIDEOPORTCALLBACKS) | 
|  | #define DDCOLORCONTROLCALLBACKSSIZE	sizeof(DDHAL_DDCOLORCONTROLCALLBACKS) | 
|  | #define DDKERNELCALLBACKSSIZE		sizeof(DDHAL_DDKERNELCALLBACKS) | 
|  | #define DDMOTIONCOMPCALLBACKSSIZE	sizeof(DDHAL_DDMOTIONCOMPCALLBACKS) | 
|  |  | 
|  | #define MAX_PALETTE_SIZE		256 | 
|  |  | 
|  | #define MAX_AUTOFLIP_BUFFERS		10 | 
|  | #define DDSCAPS2_INDEXBUFFER		DDSCAPS2_RESERVED3 | 
|  | #define DDSCAPS3_VIDEO			DDSCAPS3_RESERVED2 | 
|  | #define D3DFMT_INTERNAL_D32		71 | 
|  | #define D3DFMT_INTERNAL_S1D15		72 | 
|  | #define D3DFMT_INTERNAL_D15S1		73 | 
|  | #define D3DFMT_INTERNAL_S8D24		74 | 
|  | #define D3DFMT_INTERNAL_D24S8		75 | 
|  | #define D3DFMT_INTERNAL_X8D24		76 | 
|  | #define D3DFMT_INTERNAL_D24X8		77 | 
|  |  | 
|  | #define DDHAL_PLEASEALLOC_BLOCKSIZE		0x00000002l | 
|  | #define DDHAL_PLEASEALLOC_LINEARSIZE		0x00000003l | 
|  |  | 
|  | #define DDHAL_CB32_DESTROYDRIVER		0x00000001l | 
|  | #define DDHAL_CB32_CREATESURFACE		0x00000002l | 
|  | #define DDHAL_CB32_SETCOLORKEY			0x00000004l | 
|  | #define DDHAL_CB32_SETMODE			0x00000008l | 
|  | #define DDHAL_CB32_WAITFORVERTICALBLANK		0x00000010l | 
|  | #define DDHAL_CB32_CANCREATESURFACE		0x00000020l | 
|  | #define DDHAL_CB32_CREATEPALETTE		0x00000040l | 
|  | #define DDHAL_CB32_GETSCANLINE			0x00000080l | 
|  | #define DDHAL_CB32_SETEXCLUSIVEMODE		0x00000100l | 
|  | #define DDHAL_CB32_FLIPTOGDISURFACE		0x00000200l | 
|  | #define DDHAL_PALCB32_DESTROYPALETTE		0x00000001l | 
|  | #define DDHAL_PALCB32_SETENTRIES		0x00000002l | 
|  |  | 
|  | #define DDHALINFO_ISPRIMARYDISPLAY		0x00000001 | 
|  | #define DDHALINFO_MODEXILLEGAL			0x00000002 | 
|  | #define DDHALINFO_GETDRIVERINFOSET		0x00000004 | 
|  | #define DDHALINFO_GETDRIVERINFO2		0x00000008 | 
|  |  | 
|  | #define DDRAWI_VPORTSTART			0x0001 | 
|  | #define DDRAWI_VPORTSTOP			0x0002 | 
|  | #define DDRAWI_VPORTUPDATE			0x0003 | 
|  | #define DDRAWI_VPORTGETCOLOR			0x0001 | 
|  | #define DDRAWI_VPORTSETCOLOR			0x0002 | 
|  |  | 
|  | #define DDHAL_SURFCB32_DESTROYSURFACE		0x00000001 | 
|  | #define DDHAL_SURFCB32_FLIP			0x00000002 | 
|  | #define DDHAL_SURFCB32_SETCLIPLIST		0x00000004 | 
|  | #define DDHAL_SURFCB32_LOCK			0x00000008 | 
|  | #define DDHAL_SURFCB32_UNLOCK			0x00000010 | 
|  | #define DDHAL_SURFCB32_BLT			0x00000020 | 
|  | #define DDHAL_SURFCB32_SETCOLORKEY		0x00000040 | 
|  | #define DDHAL_SURFCB32_ADDATTACHEDSURFACE	0x00000080 | 
|  | #define DDHAL_SURFCB32_GETBLTSTATUS		0x00000100 | 
|  | #define DDHAL_SURFCB32_GETFLIPSTATUS		0x00000200 | 
|  | #define DDHAL_SURFCB32_UPDATEOVERLAY		0x00000400 | 
|  | #define DDHAL_SURFCB32_SETOVERLAYPOSITION	0x00000800 | 
|  | #define DDHAL_SURFCB32_RESERVED4		0x00001000 | 
|  | #define DDHAL_SURFCB32_SETPALETTE		0x00002000 | 
|  |  | 
|  | #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY	0x00000001 | 
|  | #define DDHAL_MISCCB32_UPDATENONLOCALHEAP	0x00000002 | 
|  | #define DDHAL_MISCCB32_GETHEAPALIGNMENT		0x00000004 | 
|  | #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS	0x00000008 | 
|  | #define DDHAL_MISC2CB32_ALPHABLT		0x00000001 | 
|  | #define DDHAL_MISC2CB32_CREATESURFACEEX		0x00000002 | 
|  | #define DDHAL_MISC2CB32_GETDRIVERSTATE		0x00000004 | 
|  | #define DDHAL_MISC2CB32_DESTROYDDLOCAL		0x00000008 | 
|  |  | 
|  | #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF	0x00000001l | 
|  | #define DDHAL_EXEBUFCB32_CREATEEXEBUF		0x00000002l | 
|  | #define DDHAL_EXEBUFCB32_DESTROYEXEBUF		0x00000004l | 
|  | #define DDHAL_EXEBUFCB32_LOCKEXEBUF		0x00000008l | 
|  | #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF		0x00000010l | 
|  |  | 
|  | #define DDHAL_VPORT32_CANCREATEVIDEOPORT	0x00000001 | 
|  | #define DDHAL_VPORT32_CREATEVIDEOPORT		0x00000002 | 
|  | #define DDHAL_VPORT32_FLIP			0x00000004 | 
|  | #define DDHAL_VPORT32_GETBANDWIDTH		0x00000008 | 
|  | #define DDHAL_VPORT32_GETINPUTFORMATS		0x00000010 | 
|  | #define DDHAL_VPORT32_GETOUTPUTFORMATS		0x00000020 | 
|  | #define DDHAL_VPORT32_GETFIELD			0x00000080 | 
|  | #define DDHAL_VPORT32_GETLINE			0x00000100 | 
|  | #define DDHAL_VPORT32_GETCONNECT		0x00000200 | 
|  | #define DDHAL_VPORT32_DESTROY			0x00000400 | 
|  | #define DDHAL_VPORT32_GETFLIPSTATUS		0x00000800 | 
|  | #define DDHAL_VPORT32_UPDATE			0x00001000 | 
|  | #define DDHAL_VPORT32_WAITFORSYNC		0x00002000 | 
|  | #define DDHAL_VPORT32_GETSIGNALSTATUS		0x00004000 | 
|  | #define DDHAL_VPORT32_COLORCONTROL		0x00008000 | 
|  |  | 
|  | #define DDHAL_COLOR_COLORCONTROL		0x00000001 | 
|  |  | 
|  | #define DDHAL_KERNEL_SYNCSURFACEDATA		0x00000001l | 
|  | #define DDHAL_KERNEL_SYNCVIDEOPORTDATA		0x00000002l | 
|  |  | 
|  | #define DDHAL_MOCOMP32_GETGUIDS			0x00000001 | 
|  | #define DDHAL_MOCOMP32_GETFORMATS		0x00000002 | 
|  | #define DDHAL_MOCOMP32_CREATE			0x00000004 | 
|  | #define DDHAL_MOCOMP32_GETCOMPBUFFINFO		0x00000008 | 
|  | #define DDHAL_MOCOMP32_GETINTERNALINFO		0x00000010 | 
|  | #define DDHAL_MOCOMP32_BEGINFRAME		0x00000020 | 
|  | #define DDHAL_MOCOMP32_ENDFRAME			0x00000040 | 
|  | #define DDHAL_MOCOMP32_RENDER			0x00000080 | 
|  | #define DDHAL_MOCOMP32_QUERYSTATUS		0x00000100 | 
|  | #define DDHAL_MOCOMP32_DESTROY			0x00000200 | 
|  |  | 
|  |  | 
|  | /* where the high-level ddraw implementation stores the callbacks */ | 
|  | typedef struct _DDHAL_CALLBACKS { | 
|  | DDHAL_DDCALLBACKS			cbDDCallbacks; | 
|  | DDHAL_DDSURFACECALLBACKS		cbDDSurfaceCallbacks; | 
|  | DDHAL_DDPALETTECALLBACKS		cbDDPaletteCallbacks; | 
|  | DDHAL_DDCALLBACKS			HALDD; | 
|  | DDHAL_DDSURFACECALLBACKS		HALDDSurface; | 
|  | DDHAL_DDPALETTECALLBACKS		HALDDPalette; | 
|  | DDHAL_DDCALLBACKS			HELDD; | 
|  | DDHAL_DDSURFACECALLBACKS		HELDDSurface; | 
|  | DDHAL_DDPALETTECALLBACKS		HELDDPalette; | 
|  | DDHAL_DDEXEBUFCALLBACKS		cbDDExeBufCallbacks; | 
|  | DDHAL_DDEXEBUFCALLBACKS		HALDDExeBuf; | 
|  | DDHAL_DDEXEBUFCALLBACKS		HELDDExeBuf; | 
|  | DDHAL_DDVIDEOPORTCALLBACKS		cbDDVideoPortCallbacks; | 
|  | DDHAL_DDVIDEOPORTCALLBACKS		HALDDVideoPort; | 
|  | DDHAL_DDCOLORCONTROLCALLBACKS	cbDDColorControlCallbacks; | 
|  | DDHAL_DDCOLORCONTROLCALLBACKS	HALDDColorControl; | 
|  | DDHAL_DDMISCELLANEOUSCALLBACKS	cbDDMiscellaneousCallbacks; | 
|  | DDHAL_DDMISCELLANEOUSCALLBACKS	HALDDMiscellaneous; | 
|  | DDHAL_DDKERNELCALLBACKS		cbDDKernelCallbacks; | 
|  | DDHAL_DDKERNELCALLBACKS		HALDDKernel; | 
|  | DDHAL_DDMOTIONCOMPCALLBACKS		cbDDMotionCompCallbacks; | 
|  | DDHAL_DDMOTIONCOMPCALLBACKS		HALDDMotionComp; | 
|  | } DDHAL_CALLBACKS,*LPDDHAL_CALLBACKS; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * parameter structures | 
|  | */ | 
|  | typedef struct _DDHAL_DESTROYDRIVERDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_DESTROYDRIVER	DestroyDriver; | 
|  | } DDHAL_DESTROYDRIVERDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETMODEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwModeIndex; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_SETMODE		SetMode; | 
|  | WINBOOL			inexcl; | 
|  | WINBOOL			useRefreshRate; | 
|  | } DDHAL_SETMODEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CREATESURFACEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDSURFACEDESC		lpDDSurfaceDesc; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL *	lplpSList; | 
|  | DWORD			dwSCnt; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_CREATESURFACE	CreateSurface; | 
|  | } DDHAL_CREATESURFACEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CANCREATESURFACEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDSURFACEDESC		lpDDSurfaceDesc; | 
|  | DWORD			bIsDifferentPixelFormat; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_CANCREATESURFACE	CanCreateSurface; | 
|  | } DDHAL_CANCREATESURFACEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CREATEPALETTEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette; | 
|  | LPPALETTEENTRY		lpColorTable; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_CREATEPALETTE	CreatePalette; | 
|  | WINBOOL			is_excl; | 
|  | } DDHAL_CREATEPALETTEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwEnterExcl; | 
|  | DWORD			dwReserved; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_SETEXCLUSIVEMODE	SetExclusiveMode; | 
|  | } DDHAL_SETEXCLUSIVEMODEDATA; | 
|  |  | 
|  | /* surfaces */ | 
|  | typedef struct _DDHAL_DESTROYSURFACEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_DESTROYSURFACE DestroySurface; | 
|  | } DDHAL_DESTROYSURFACEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_FLIPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurfCurr; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurfTarg; | 
|  | DWORD			dwFlags; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_FLIP		Flip; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurfCurrLeft; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurfTargLeft; | 
|  | } DDHAL_FLIPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_LOCKDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | DWORD			bHasRect; | 
|  | RECTL			rArea; | 
|  | LPVOID			lpSurfData; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_LOCK		Lock; | 
|  | DWORD			dwFlags; | 
|  | } DDHAL_LOCKDATA; | 
|  |  | 
|  | typedef struct _DDHAL_UNLOCKDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_UNLOCK	Unlock; | 
|  | } DDHAL_UNLOCKDATA; | 
|  |  | 
|  | typedef struct _DDHAL_BLTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDDestSurface; | 
|  | RECTL			rDest; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSrcSurface; | 
|  | RECTL			rSrc; | 
|  | DWORD			dwFlags; | 
|  | DWORD			dwROPFlags; | 
|  | DDBLTFX			bltFX; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_BLT		Blt; | 
|  | WINBOOL			IsClipped; | 
|  | RECTL			rOrigDest; | 
|  | RECTL			rOrigSrc; | 
|  | DWORD			dwRectCnt; | 
|  | LPRECT			prDestRects; | 
|  | } DDHAL_BLTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETPALETTEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_SETPALETTE	SetPalette; | 
|  | WINBOOL			Attach; | 
|  | } DDHAL_SETPALETTEDATA; | 
|  |  | 
|  | /* palettes */ | 
|  | typedef struct _DDHAL_DESTROYPALETTEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALPALCB_DESTROYPALETTE	DestroyPalette; | 
|  | } DDHAL_DESTROYPALETTEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETENTRIESDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWPALETTE_GBL	lpDDPalette; | 
|  | DWORD			dwBase; | 
|  | DWORD			dwNumEntries; | 
|  | LPPALETTEENTRY		lpEntries; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALPALCB_SETENTRIES	SetEntries; | 
|  | } DDHAL_SETENTRIESDATA; | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_CANCREATEVPORTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDVIDEOPORTDESC			lpDDVideoPortDesc; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_CANCREATEVIDEOPORT	CanCreateVideoPort; | 
|  | } DDHAL_CANCREATEVPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CREATEVPORTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDVIDEOPORTDESC			lpDDVideoPortDesc; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_CREATEVIDEOPORT	CreateVideoPort; | 
|  | } DDHAL_CREATEVPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTBANDWIDTHDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | LPDDPIXELFORMAT			lpddpfFormat; | 
|  | DWORD				dwWidth; | 
|  | DWORD				dwHeight; | 
|  | DWORD				dwFlags; | 
|  | LPDDVIDEOPORTBANDWIDTH		lpBandwidth; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETBANDWIDTH		GetVideoPortBandwidth; | 
|  | } DDHAL_GETVPORTBANDWIDTHDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTINPUTFORMATDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwFlags; | 
|  | LPDDPIXELFORMAT			lpddpfFormat; | 
|  | DWORD				dwNumFormats; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETINPUTFORMATS	GetVideoPortInputFormats; | 
|  | } DDHAL_GETVPORTINPUTFORMATDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTFIELDDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | WINBOOL				bField; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETFIELD		GetVideoPortField; | 
|  | } DDHAL_GETVPORTFIELDDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwFlags; | 
|  | LPDDPIXELFORMAT			lpddpfInputFormat; | 
|  | LPDDPIXELFORMAT			lpddpfOutputFormats; | 
|  | DWORD				dwNumFormats; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETOUTPUTFORMATS	GetVideoPortOutputFormats; | 
|  | } DDHAL_GETVPORTOUTPUTFORMATDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTLINEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwLine; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETLINE		GetVideoPortLine; | 
|  | } DDHAL_GETVPORTLINEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYVPORTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_DESTROYVPORT		DestroyVideoPort; | 
|  | } DDHAL_DESTROYVPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | FLATPTR				fpSurface; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETFLIPSTATUS	GetVideoPortFlipStatus; | 
|  | } DDHAL_GETVPORTFLIPSTATUSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_UPDATEVPORTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | LPDDRAWI_DDRAWSURFACE_INT		*lplpDDSurface; | 
|  | LPDDRAWI_DDRAWSURFACE_INT		*lplpDDVBISurface; | 
|  | LPDDVIDEOPORTINFO			lpVideoInfo; | 
|  | DWORD				dwFlags; | 
|  | DWORD				dwNumAutoflip; | 
|  | DWORD				dwNumVBIAutoflip; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_UPDATE		UpdateVideoPort; | 
|  | } DDHAL_UPDATEVPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_WAITFORVPORTSYNCDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwFlags; | 
|  | DWORD				dwLine; | 
|  | DWORD				dwTimeOut; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_WAITFORSYNC		WaitForVideoPortSync; | 
|  | } DDHAL_WAITFORVPORTSYNCDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTSIGNALDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwStatus; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETSIGNALSTATUS	GetVideoSignalStatus; | 
|  | } DDHAL_GETVPORTSIGNALDATA; | 
|  |  | 
|  | typedef struct _DDHAL_VPORTCOLORDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwFlags; | 
|  | LPDDCOLORCONTROL			lpColorData; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_COLORCONTROL		ColorControl; | 
|  | } DDHAL_VPORTCOLORDATA; | 
|  |  | 
|  | typedef struct _DDHAL_FLIPVPORTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL		lpSurfCurr; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL		lpSurfTarg; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_FLIP			FlipVideoPort; | 
|  | } DDHAL_FLIPVPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETVPORTCONNECTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | DWORD				dwPortId; | 
|  | LPDDVIDEOPORTCONNECT		lpConnect; | 
|  | DWORD				dwNumEntries; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALVPORTCB_GETVPORTCONNECT	GetVideoPortConnectInfo; | 
|  | } DDHAL_GETVPORTCONNECTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SYNCSURFACEDATA { | 
|  | DWORD				dwSize; | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL		lpDDSurface; | 
|  | DWORD				dwSurfaceOffset; | 
|  | ULONG_PTR				fpLockPtr; | 
|  | LONG				lPitch; | 
|  | DWORD				dwOverlayOffset; | 
|  | DWORD				dwOverlaySrcWidth; | 
|  | DWORD				dwOverlaySrcHeight; | 
|  | DWORD				dwOverlayDestWidth; | 
|  | DWORD				dwOverlayDestHeight; | 
|  | ULONG_PTR				dwDriverReserved1; | 
|  | ULONG_PTR				dwDriverReserved2; | 
|  | ULONG_PTR				dwDriverReserved3; | 
|  | HRESULT				ddRVal; | 
|  | } DDHAL_SYNCSURFACEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SYNCVIDEOPORTDATA { | 
|  | DWORD				dwSize; | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDD; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL		lpVideoPort; | 
|  | DWORD				dwOriginOffset; | 
|  | DWORD				dwHeight; | 
|  | DWORD				dwVBIHeight; | 
|  | ULONG_PTR				dwDriverReserved1; | 
|  | ULONG_PTR				dwDriverReserved2; | 
|  | ULONG_PTR				dwDriverReserved3; | 
|  | HRESULT				ddRVal; | 
|  | } DDHAL_SYNCVIDEOPORTDATA; | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYDDLOCALDATA { | 
|  | DWORD				dwFlags; | 
|  | LPDDRAWI_DIRECTDRAW_LCL		pDDLcl; | 
|  | HRESULT				ddRVal; | 
|  | } DDHAL_DESTROYDDLOCALDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CREATESURFACEEXDATA { | 
|  | DWORD				dwFlags; | 
|  | LPDDRAWI_DIRECTDRAW_LCL		lpDDLcl; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL		lpDDSLcl; | 
|  | HRESULT				ddRVal; | 
|  | } DDHAL_CREATESURFACEEXDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETHEAPALIGNMENTDATA { | 
|  | ULONG_PTR				dwInstance; | 
|  | DWORD				dwHeap; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHAL_GETHEAPALIGNMENT		GetHeapAlignment; | 
|  | HEAPALIGNMENT			Alignment; | 
|  | } DDHAL_GETHEAPALIGNMENTDATA; | 
|  |  | 
|  |  | 
|  | typedef struct _DDMORESURFACECAPS { | 
|  | DWORD	dwSize; | 
|  | DDSCAPSEX	ddsCapsMore; | 
|  | struct tagExtendedHeapRestrictions { | 
|  | DDSCAPSEX		ddsCapsEx; | 
|  | DDSCAPSEX		ddsCapsExAlt; | 
|  | } ddsExtendedHeapRestrictions[1]; | 
|  | } DDMORESURFACECAPS, *LPDDMORESURFACECAPS; | 
|  |  | 
|  | typedef struct _DDSTEREOMODE { | 
|  | DWORD	dwSize; | 
|  | DWORD	dwHeight; | 
|  | DWORD	dwWidth; | 
|  | DWORD	dwBpp; | 
|  | DWORD	dwRefreshRate; | 
|  | WINBOOL	bSupported; | 
|  | } DDSTEREOMODE, *LPDDSTEREOMODE; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * high-level ddraw implementation structures | 
|  | */ | 
|  | typedef struct _IUNKNOWN_LIST { | 
|  | struct _IUNKNOWN_LIST *	lpLink; | 
|  | LPGUID			lpGuid; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			lpIUnknown; | 
|  | #else | 
|  | LPVOID			lpIUnknown; | 
|  | #endif /* _NO_COM */ | 
|  | } IUNKNOWN_LIST, *LPIUNKNOWN_LIST; | 
|  |  | 
|  |  | 
|  | typedef struct _PROCESS_LIST { | 
|  | struct _PROCESS_LIST *	lpLink; | 
|  | DWORD			dwProcessId; | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwAlphaDepth; | 
|  | DWORD			dwZDepth; | 
|  | } PROCESS_LIST,*LPPROCESS_LIST; | 
|  |  | 
|  | typedef struct _ATTACHLIST { | 
|  | DWORD			dwFlags; | 
|  | struct _ATTACHLIST *	lpLink; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpAttached; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpIAttached; | 
|  | } ATTACHLIST,*LPATTACHLIST; | 
|  |  | 
|  | #define DDAL_IMPLICIT			0x00000001 | 
|  |  | 
|  | typedef struct _ACCESSRECTLIST { | 
|  | struct _ACCESSRECTLIST *	lpLink; | 
|  | RECT			rDest; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpOwner; | 
|  | LPVOID			lpSurfaceData; | 
|  | DWORD			dwFlags; | 
|  | LPHEAPALIASINFO		lpHeapAliasInfo; | 
|  | } ACCESSRECTLIST,*LPACCESSRECTLIST; | 
|  |  | 
|  | #define ACCESSRECT_VRAMSTYLE		0x00000001 | 
|  | #define ACCESSRECT_NOTHOLDINGWIN16LOCK	0x00000002 | 
|  | #define ACCESSRECT_BROKEN		0x00000004 | 
|  |  | 
|  | typedef struct _DBLNODE { | 
|  | struct _DBLNODE *		next; | 
|  | struct _DBLNODE *		prev; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	object; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	object_int; | 
|  | } DBLNODE,*LPDBLNODE; | 
|  |  | 
|  | typedef struct _DDRAWI_DIRECTDRAW_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpLcl; | 
|  | LPDDRAWI_DIRECTDRAW_INT	lpLink; | 
|  | DWORD			dwIntRefCnt; | 
|  | } DDRAWI_DIRECTDRAW_INT; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DIRECTDRAW_LCL { | 
|  | DWORD			lpDDMore; | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpGbl; | 
|  | DWORD			dwUnused0; | 
|  | DWORD			dwLocalFlags; | 
|  | DWORD			dwLocalRefCnt; | 
|  | DWORD			dwProcessId; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			pUnkOuter; | 
|  | #else | 
|  | PVOID			pUnkOuter; | 
|  | #endif | 
|  | DWORD			dwObsolete1; | 
|  | ULONG_PTR			hWnd; | 
|  | ULONG_PTR			hDC; | 
|  | DWORD			dwErrorMode; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpPrimary; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpCB; | 
|  | DWORD			dwPreferredMode; | 
|  | /* DirectX 2 */ | 
|  | HINSTANCE			hD3DInstance; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			pD3DIUnknown; | 
|  | #else | 
|  | PVOID			pD3DIUnknown; | 
|  | #endif | 
|  | LPDDHAL_CALLBACKS		lpDDCB; | 
|  | ULONG_PTR			hDDVxd; | 
|  | /* DirectX 5.0 */ | 
|  | DWORD			dwAppHackFlags; | 
|  | /* DirectX 5.0A */ | 
|  | ULONG_PTR			hFocusWnd; | 
|  | DWORD			dwHotTracking; | 
|  | DWORD			dwIMEState; | 
|  | /* DirectX 6.0 */ | 
|  | ULONG_PTR			hWndPopup; | 
|  | ULONG_PTR			hDD; | 
|  | ULONG_PTR			hGammaCalibrator; | 
|  | LPDDGAMMACALIBRATORPROC	lpGammaCalibrator; | 
|  | } DDRAWI_DIRECTDRAW_LCL; | 
|  |  | 
|  |  | 
|  | #define DDRAWILCL_HASEXCLUSIVEMODE	0x00000001 | 
|  | #define DDRAWILCL_ISFULLSCREEN		0x00000002 | 
|  | #define DDRAWILCL_SETCOOPCALLED		0x00000004 | 
|  | #define DDRAWILCL_ACTIVEYES		0x00000008 | 
|  | #define DDRAWILCL_ACTIVENO		0x00000010 | 
|  | #define DDRAWILCL_HOOKEDHWND		0x00000020 | 
|  | #define DDRAWILCL_ALLOWMODEX		0x00000040 | 
|  | #define DDRAWILCL_V1SCLBEHAVIOUR	0x00000080 | 
|  | #define DDRAWILCL_MODEHASBEENCHANGED	0x00000100 | 
|  | #define DDRAWILCL_CREATEDWINDOW		0x00000200 | 
|  | #define DDRAWILCL_DIRTYDC		0x00000400 | 
|  | #define DDRAWILCL_DISABLEINACTIVATE	0x00000800 | 
|  | #define DDRAWILCL_CURSORCLIPPED		0x00001000 | 
|  | #define DDRAWILCL_EXPLICITMONITOR	0x00002000 | 
|  | #define DDRAWILCL_MULTITHREADED		0x00004000 | 
|  | #define DDRAWILCL_FPUSETUP		0x00008000 | 
|  | #define DDRAWILCL_POWEREDDOWN		0x00010000 | 
|  | #define DDRAWILCL_DIRECTDRAW7		0x00020000 | 
|  | #define DDRAWILCL_ATTEMPTEDD3DCONTEXT	0x00040000 | 
|  | #define DDRAWILCL_FPUPRESERVE		0x00080000 | 
|  | #define DDRAWILCL_DX8DRIVER		0x00100000 | 
|  | #define DDRAWILCL_DIRECTDRAW8		0x00200000 | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DIRECTDRAW_GBL { | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwFlags; | 
|  | FLATPTR			fpPrimaryOrig; | 
|  | DDCORECAPS			ddCaps; | 
|  | DWORD			dwInternal1; | 
|  | DWORD			dwUnused1[9]; | 
|  | LPDDHAL_CALLBACKS		lpDDCBtmp; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	dsList; | 
|  | LPDDRAWI_DDRAWPALETTE_INT	palList; | 
|  | LPDDRAWI_DDRAWCLIPPER_INT	clipperList; | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lp16DD; | 
|  | DWORD			dwMaxOverlays; | 
|  | DWORD			dwCurrOverlays; | 
|  | DWORD			dwMonitorFrequency; | 
|  | DDCORECAPS			ddHELCaps; | 
|  | DWORD			dwUnused2[50]; | 
|  | DDCOLORKEY			ddckCKDestOverlay; | 
|  | DDCOLORKEY			ddckCKSrcOverlay; | 
|  | VIDMEMINFO			vmiData; | 
|  | LPVOID			lpDriverHandle; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpExclusiveOwner; | 
|  | DWORD			dwModeIndex; | 
|  | DWORD			dwModeIndexOrig; | 
|  | DWORD			dwNumFourCC; | 
|  | LPDWORD			lpdwFourCC; | 
|  | DWORD			dwNumModes; | 
|  | LPDDHALMODEINFO		lpModeInfo; | 
|  | PROCESS_LIST		plProcessList; | 
|  | DWORD			dwSurfaceLockCount; | 
|  | DWORD			dwAliasedLockCnt; | 
|  | ULONG_PTR			dwReserved3; | 
|  | ULONG_PTR			hDD; | 
|  | char			cObsolete[12]; | 
|  | DWORD			dwReserved1; | 
|  | DWORD			dwReserved2; | 
|  | DBLNODE			dbnOverlayRoot; | 
|  | volatile LPWORD		lpwPDeviceFlags; | 
|  | DWORD			dwPDevice; | 
|  | DWORD			dwWin16LockCnt; | 
|  | DWORD			dwUnused3; | 
|  | DWORD			hInstance; | 
|  | DWORD			dwEvent16; | 
|  | DWORD			dwSaveNumModes; | 
|  | /* DirectX 2 */ | 
|  | ULONG_PTR			lpD3DGlobalDriverData; | 
|  | ULONG_PTR			lpD3DHALCallbacks; | 
|  | DDCORECAPS			ddBothCaps; | 
|  | /* DirectX 5.0 */ | 
|  | LPDDVIDEOPORTCAPS		lpDDVideoPortCaps; | 
|  | LPDDRAWI_DDVIDEOPORT_INT	dvpList; | 
|  | ULONG_PTR			lpD3DHALCallbacks2; | 
|  | RECT			rectDevice; | 
|  | DWORD			cMonitors; | 
|  | LPVOID			gpbmiSrc; | 
|  | LPVOID			gpbmiDest; | 
|  | LPHEAPALIASINFO		phaiHeapAliases; | 
|  | ULONG_PTR			hKernelHandle; | 
|  | ULONG_PTR			pfnNotifyProc; | 
|  | LPDDKERNELCAPS		lpDDKernelCaps; | 
|  | LPDDNONLOCALVIDMEMCAPS	lpddNLVCaps; | 
|  | LPDDNONLOCALVIDMEMCAPS	lpddNLVHELCaps; | 
|  | LPDDNONLOCALVIDMEMCAPS	lpddNLVBothCaps; | 
|  | ULONG_PTR			lpD3DExtendedCaps; | 
|  | /* DirectX 5.0A */ | 
|  | DWORD			dwDOSBoxEvent; | 
|  | RECT			rectDesktop; | 
|  | char			cDriverName[MAX_DRIVER_NAME]; | 
|  | /* DirectX 6.0 */ | 
|  | ULONG_PTR			lpD3DHALCallbacks3; | 
|  | DWORD			dwNumZPixelFormats; | 
|  | LPDDPIXELFORMAT		lpZPixelFormats; | 
|  | LPDDRAWI_DDMOTIONCOMP_INT	mcList; | 
|  | DWORD			hDDVxd; | 
|  | DDSCAPSEX			ddsCapsMore; | 
|  | } DDRAWI_DIRECTDRAW_GBL; | 
|  |  | 
|  | #define DDRAWI_xxxxxxxxx1			0x00000001 | 
|  | #define DDRAWI_xxxxxxxxx2			0x00000002 | 
|  | #define DDRAWI_VIRTUALDESKTOP			0x00000008 | 
|  | #define DDRAWI_MODEX				0x00000010 | 
|  | #define DDRAWI_DISPLAYDRV			0x00000020 | 
|  | #define DDRAWI_FULLSCREEN			0x00000040 | 
|  | #define DDRAWI_MODECHANGED			0x00000080 | 
|  | #define DDRAWI_NOHARDWARE			0x00000100 | 
|  | #define DDRAWI_PALETTEINIT			0x00000200 | 
|  | #define DDRAWI_NOEMULATION			0x00000400 | 
|  | #define DDRAWI_HASCKEYDESTOVERLAY		0x00000800 | 
|  | #define DDRAWI_HASCKEYSRCOVERLAY		0x00001000 | 
|  | #define DDRAWI_HASGDIPALETTE			0x00002000 | 
|  | #define DDRAWI_EMULATIONINITIALIZED		0x00004000 | 
|  | #define DDRAWI_HASGDIPALETTE_EXCLUSIVE		0x00008000 | 
|  | #define DDRAWI_MODEXILLEGAL			0x00010000 | 
|  | #define DDRAWI_FLIPPEDTOGDI			0x00020000 | 
|  | #define DDRAWI_NEEDSWIN16FORVRAMLOCK		0x00040000 | 
|  | #define DDRAWI_PDEVICEVRAMBITCLEARED		0x00080000 | 
|  | #define DDRAWI_STANDARDVGA			0x00100000 | 
|  | #define DDRAWI_EXTENDEDALIGNMENT		0x00200000 | 
|  | #define DDRAWI_CHANGINGMODE			0x00400000 | 
|  | #define DDRAWI_GDIDRV				0x00800000 | 
|  | #define DDRAWI_ATTACHEDTODESKTOP		0x01000000 | 
|  | #define DDRAWI_UMODELOADED			0x02000000 | 
|  | #define DDRAWI_DDRAWDATANOTFETCHED		0x04000000 | 
|  | #define DDRAWI_SECONDARYDRIVERLOADED		0x08000000 | 
|  | #define DDRAWI_TESTINGMODES			0x10000000 | 
|  | #define DDRAWI_DRIVERINFO2			0x20000000 | 
|  | #define DDRAWI_BADPDEV				0x40000000 | 
|  |  | 
|  |  | 
|  | /* surfaces */ | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpLcl; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpLink; | 
|  | DWORD			dwIntRefCnt; | 
|  | } DDRAWI_DDRAWSURFACE_INT; | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_GBL { | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwGlobalFlags; | 
|  | __GNU_EXTENSION union { | 
|  | LPACCESSRECTLIST	lpRectList; | 
|  | DWORD			    dwBlockSizeY; | 
|  | LONG                lSlicePitch; | 
|  | }; | 
|  | __GNU_EXTENSION union { | 
|  | LPVMEMHEAP		lpVidMemHeap; | 
|  | DWORD			dwBlockSizeX; | 
|  | }; | 
|  | __GNU_EXTENSION union { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPVOID			lpDDHandle; | 
|  | }; | 
|  | FLATPTR			fpVidMem; | 
|  | __GNU_EXTENSION union { | 
|  | LONG			lPitch; | 
|  | DWORD			dwLinearSize; | 
|  | }; | 
|  | WORD			wHeight; | 
|  | WORD			wWidth; | 
|  | DWORD			dwUsageCount; | 
|  | ULONG_PTR			dwReserved1; | 
|  | DDPIXELFORMAT		ddpfSurface; | 
|  | } DDRAWI_DDRAWSURFACE_GBL; | 
|  |  | 
|  | #define DDRAWISURFGBL_MEMFREE			0x00000001L | 
|  | #define DDRAWISURFGBL_SYSMEMREQUESTED		0x00000002L | 
|  | #define DDRAWISURFGBL_ISGDISURFACE		0x00000004L | 
|  | #define DDRAWISURFGBL_SOFTWAREAUTOFLIP		0x00000008L | 
|  | #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK	0x00000010L | 
|  | #define DDRAWISURFGBL_LOCKVRAMSTYLE		0x00000020L | 
|  | #define DDRAWISURFGBL_LOCKBROKEN		0x00000040L | 
|  | #define DDRAWISURFGBL_IMPLICITHANDLE		0x00000080L | 
|  | #define DDRAWISURFGBL_ISCLIENTMEM		0x00000100L | 
|  | #define DDRAWISURFGBL_HARDWAREOPSOURCE		0x00000200L | 
|  | #define DDRAWISURFGBL_HARDWAREOPDEST		0x00000400L | 
|  | #define DDRAWISURFGBL_HARDWAREOPSTARTED		(DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST) | 
|  | #define DDRAWISURFGBL_VPORTINTERLEAVED		0x00000800L | 
|  | #define DDRAWISURFGBL_VPORTDATA			0x00001000L | 
|  | #define DDRAWISURFGBL_LATEALLOCATELINEAR	0x00002000L | 
|  | #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER	0x00004000L | 
|  | #define DDRAWISURFGBL_FASTLOCKHELD		0x00008000L | 
|  | #define DDRAWISURFGBL_READONLYLOCKHELD		0x00010000L | 
|  | #define DDRAWISURFGBL_DX8SURFACE		0x00080000L | 
|  | #define DDRAWISURFGBL_DDHELDONTFREE		0x00100000L | 
|  | #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED	0x00200000L | 
|  | #define DDRAWISURFGBL_RESERVED0			0x80000000L /* Reserved flag */ | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { | 
|  | DWORD			dwSize; | 
|  | __GNU_EXTENSION union { | 
|  | DWORD			dwPhysicalPageTable; | 
|  | FLATPTR			fpPhysicalVidMem; | 
|  | }; | 
|  | LPDWORD			pPageTable; | 
|  | DWORD			cPages; | 
|  | ULONG_PTR			dwSavedDCContext; | 
|  | FLATPTR			fpAliasedVidMem; | 
|  | ULONG_PTR			dwDriverReserved; | 
|  | ULONG_PTR			dwHELReserved; | 
|  | DWORD			cPageUnlocks; | 
|  | ULONG_PTR			hKernelSurface; | 
|  | DWORD			dwKernelRefCnt; | 
|  | LPDDCOLORCONTROL		lpColorInfo; | 
|  | FLATPTR			fpNTAlias; | 
|  | DWORD			dwContentsStamp; | 
|  | LPVOID			lpvUnswappedDriverReserved; | 
|  | LPVOID			lpDDRAWReserved2; | 
|  | DWORD			dwDDRAWReserved1; | 
|  | DWORD			dwDDRAWReserved2; | 
|  | FLATPTR			fpAliasOfVidMem; | 
|  | } DDRAWI_DDRAWSURFACE_GBL_MORE; | 
|  |  | 
|  | /* the MS version of this macro was somewhat obfuscated and unreadable | 
|  | * (possibly because of mediocre MS coders)... so I simplified it... | 
|  | * (and so I commit no copyright violations either, hah) */ | 
|  | #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ | 
|  | (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1)) | 
|  |  | 
|  | #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \ | 
|  | ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem ) | 
|  |  | 
|  |  | 
|  | typedef struct  _DISPLAYMODEINFO { | 
|  | WORD		wWidth; | 
|  | WORD		wHeight; | 
|  | BYTE		wBPP; | 
|  | BYTE		wMonitorsAttachedToDesktop; | 
|  | WORD		wRefreshRate; | 
|  | } DISPLAYMODEINFO, *LPDISPLAYMODEINFO; | 
|  |  | 
|  | #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO))) | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_MORE { | 
|  | DWORD			dwSize; | 
|  | IUNKNOWN_LIST *		lpIUnknowns; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl; | 
|  | DWORD			dwPageLockCount; | 
|  | DWORD			dwBytesAllocated; | 
|  | LPDDRAWI_DIRECTDRAW_INT	lpDD_int; | 
|  | DWORD			dwMipMapCount; | 
|  | LPDDRAWI_DDRAWCLIPPER_INT	lpDDIClipper; | 
|  | /* DirectX 5.0 */ | 
|  | LPHEAPALIASINFO		lpHeapAliasInfo; | 
|  | DWORD			dwOverlayFlags; | 
|  | VOID			*rgjunc; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL	lpVideoPort; | 
|  | LPDDOVERLAYFX		lpddOverlayFX; | 
|  | DDSCAPSEX			ddsCapsEx; | 
|  | DWORD			dwTextureStage; | 
|  | LPVOID			lpDDRAWReserved; | 
|  | LPVOID			lpDDRAWReserved2; | 
|  | LPVOID			lpDDrawReserved3; | 
|  | DWORD			dwDDrawReserved4; | 
|  | LPVOID			lpDDrawReserved5; | 
|  | LPDWORD			lpGammaRamp; | 
|  | LPDWORD			lpOriginalGammaRamp; | 
|  | LPVOID			lpDDrawReserved6; | 
|  | # ifndef WIN95 | 
|  | DISPLAYMODEINFO dmiDDrawReserved7; | 
|  | # endif | 
|  | DWORD			dwSurfaceHandle; | 
|  | DWORD			qwDDrawReserved8[2]; | 
|  | LPVOID			lpDDrawReserved9; | 
|  | DWORD			cSurfaces; | 
|  | LPDDSURFACEDESC2		pCreatedDDSurfaceDesc2; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	*slist; | 
|  | DWORD			dwFVF; | 
|  | LPVOID			lpVB; | 
|  | } DDRAWI_DDRAWSURFACE_MORE; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWSURFACE_LCL { | 
|  | LPDDRAWI_DDRAWSURFACE_MORE	lpSurfMore; | 
|  | LPDDRAWI_DDRAWSURFACE_GBL	lpGbl; | 
|  | ULONG_PTR			hDDSurface; | 
|  | LPATTACHLIST		lpAttachList; | 
|  | LPATTACHLIST		lpAttachListFrom; | 
|  | DWORD			dwLocalRefCnt; | 
|  | DWORD			dwProcessId; | 
|  | DWORD			dwFlags; | 
|  | DDSCAPS			ddsCaps; | 
|  | __GNU_EXTENSION union { | 
|  | LPDDRAWI_DDRAWPALETTE_INT	lpDDPalette; | 
|  | LPDDRAWI_DDRAWPALETTE_INT	lp16DDPalette; | 
|  | }; | 
|  | __GNU_EXTENSION union  { | 
|  | LPDDRAWI_DDRAWCLIPPER_LCL	lpDDClipper; | 
|  | LPDDRAWI_DDRAWCLIPPER_INT	lp16DDClipper; | 
|  | }; | 
|  | DWORD			dwModeCreatedIn; | 
|  | DWORD			dwBackBufferCount; | 
|  | DDCOLORKEY			ddckCKDestBlt; | 
|  | DDCOLORKEY			ddckCKSrcBlt; | 
|  | ULONG_PTR			hDC; | 
|  | ULONG_PTR			dwReserved1; | 
|  | DDCOLORKEY			ddckCKSrcOverlay; | 
|  | DDCOLORKEY			ddckCKDestOverlay; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpSurfaceOverlaying; | 
|  | DBLNODE			dbnOverlayNode; | 
|  | RECT			rcOverlaySrc; | 
|  | RECT			rcOverlayDest; | 
|  | DWORD			dwClrXparent; | 
|  | DWORD			dwAlpha; | 
|  | LONG			lOverlayX; | 
|  | LONG			lOverlayY; | 
|  | } DDRAWI_DDRAWSURFACE_LCL; | 
|  |  | 
|  | #define DDRAWISURF_ATTACHED		0x00000001L | 
|  | #define DDRAWISURF_IMPLICITCREATE	0x00000002L | 
|  | #define DDRAWISURF_ISFREE		0x00000004L | 
|  | #define DDRAWISURF_ATTACHED_FROM	0x00000008L | 
|  | #define DDRAWISURF_IMPLICITROOT		0x00000010L | 
|  | #define DDRAWISURF_PARTOFPRIMARYCHAIN	0x00000020L | 
|  | #define DDRAWISURF_DATAISALIASED	0x00000040L | 
|  | #define DDRAWISURF_HASDC		0x00000080L | 
|  | #define DDRAWISURF_HASCKEYDESTOVERLAY	0x00000100L | 
|  | #define DDRAWISURF_HASCKEYDESTBLT	0x00000200L | 
|  | #define DDRAWISURF_HASCKEYSRCOVERLAY	0x00000400L | 
|  | #define DDRAWISURF_HASCKEYSRCBLT	0x00000800L | 
|  | #define DDRAWISURF_LOCKEXCLUDEDCURSOR	0x00001000L | 
|  | #define DDRAWISURF_HASPIXELFORMAT	0x00002000L | 
|  | #define DDRAWISURF_HASOVERLAYDATA	0x00004000L | 
|  | #define DDRAWISURF_SETGAMMA		0x00008000L | 
|  | #define DDRAWISURF_SW_CKEYDESTOVERLAY	0x00010000L | 
|  | #define DDRAWISURF_SW_CKEYDESTBLT	0x00020000L | 
|  | #define DDRAWISURF_SW_CKEYSRCOVERLAY	0x00040000L | 
|  | #define DDRAWISURF_SW_CKEYSRCBLT	0x00080000L | 
|  | #define DDRAWISURF_HW_CKEYDESTOVERLAY	0x00100000L | 
|  | #define DDRAWISURF_HW_CKEYDESTBLT	0x00200000L | 
|  | #define DDRAWISURF_HW_CKEYSRCOVERLAY	0x00400000L | 
|  | #define DDRAWISURF_HW_CKEYSRCBLT	0x00800000L | 
|  | #define DDRAWISURF_INMASTERSPRITELIST	0x01000000L | 
|  | #define DDRAWISURF_HELCB		0x02000000L | 
|  | #define DDRAWISURF_FRONTBUFFER		0x04000000L | 
|  | #define DDRAWISURF_BACKBUFFER		0x08000000L | 
|  | #define DDRAWISURF_INVALID		0x10000000L | 
|  | #define DDRAWISURF_DCIBUSY		0x20000000L | 
|  | #define DDRAWISURF_GETDCNULL		0x40000000L | 
|  | #define DDRAWISURF_STEREOSURFACELEFT	0x20000000L | 
|  | #define DDRAWISURF_DRIVERMANAGED	0x40000000L | 
|  | #define DDRAWISURF_DCILOCK		0x80000000L | 
|  |  | 
|  | /* palettes */ | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DDRAWPALETTE_LCL	lpLcl; | 
|  | LPDDRAWI_DDRAWPALETTE_INT	lpLink; | 
|  | DWORD			dwIntRefCnt; | 
|  | } DDRAWI_DDRAWPALETTE_INT; | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_GBL { | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwFlags; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl; | 
|  | DWORD			dwProcessId; | 
|  | LPPALETTEENTRY		lpColorTable; | 
|  | __GNU_EXTENSION union { | 
|  | ULONG_PTR		dwReserved1; | 
|  | HPALETTE		hHELGDIPalette; | 
|  | }; | 
|  | DWORD			dwDriverReserved; | 
|  | DWORD			dwContentsStamp; | 
|  | DWORD			dwSaveStamp; | 
|  | DWORD			dwHandle; | 
|  | } DDRAWI_DDRAWPALETTE_GBL; | 
|  |  | 
|  | #define DDRAWIPAL_256				0x00000001 | 
|  | #define DDRAWIPAL_16				0x00000002 | 
|  | #define DDRAWIPAL_GDI				0x00000004 | 
|  | #define DDRAWIPAL_STORED_8			0x00000008 | 
|  | #define DDRAWIPAL_STORED_16			0x00000010 | 
|  | #define DDRAWIPAL_STORED_24			0x00000020 | 
|  | #define DDRAWIPAL_EXCLUSIVE			0x00000040 | 
|  | #define DDRAWIPAL_INHEL				0x00000080 | 
|  | #define DDRAWIPAL_DIRTY				0x00000100 | 
|  | #define DDRAWIPAL_ALLOW256			0x00000200 | 
|  | #define DDRAWIPAL_4				0x00000400 | 
|  | #define DDRAWIPAL_2				0x00000800 | 
|  | #define DDRAWIPAL_STORED_8INDEX			0x00001000 | 
|  | #define DDRAWIPAL_ALPHA				0x00002000 | 
|  |  | 
|  | #define D3DFORMAT_OP_TEXTURE			0x00000001L | 
|  | #define D3DFORMAT_OP_VOLUMETEXTURE		0x00000002L | 
|  | #define D3DFORMAT_OP_CUBETEXTURE		0x00000004L | 
|  | #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET	0x00000008L | 
|  | #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET	0x00000010L | 
|  | #define D3DFORMAT_OP_ZSTENCIL			0x00000040L | 
|  | #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH  0x00000080L | 
|  | #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L | 
|  | #define D3DFORMAT_OP_DISPLAYMODE		0x00000400L | 
|  | #define D3DFORMAT_OP_3DACCELERATION		0x00000800L | 
|  | #define D3DFORMAT_OP_PIXELSIZE			0x00001000L | 
|  | #define D3DFORMAT_OP_CONVERT_TO_ARGB		0x00002000L | 
|  | #define D3DFORMAT_OP_OFFSCREENPLAIN		0x00004000L | 
|  | #define D3DFORMAT_OP_SRGBREAD			0x00008000L | 
|  | #define D3DFORMAT_OP_BUMPMAP			0x00010000L | 
|  | #define D3DFORMAT_OP_NOFILTER			0x00040000L | 
|  |  | 
|  | #define DDPF_D3DFORMAT				0x00200000l | 
|  | #define DDPF_NOVEL_TEXTURE_FORMAT		0x00100000l | 
|  |  | 
|  | #define D3DFORMAT_MEMBEROFGROUP_ARGB		0x00080000L | 
|  | #define D3DFORMAT_OP_SRGBWRITE			0x00100000L | 
|  | #define D3DFORMAT_OP_NOALPHABLEND		0x00200000L | 
|  | #define D3DFORMAT_OP_AUTOGENMIPMAP		0x00400000L | 
|  | #define D3DFORMAT_OP_VERTEXTEXTURE		0x00800000L | 
|  | #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP	0x01000000L | 
|  |  | 
|  | #define DELETED_OK				0 | 
|  | #define DELETED_LASTONE				1 | 
|  | #define DELETED_NOTFOUND			2 | 
|  |  | 
|  | #define DDCALLBACKSSIZE_V1			( offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode) ) | 
|  | #define DDCALLBACKSSIZE				sizeof(DDHAL_DDCALLBACKS) | 
|  |  | 
|  | #define DDRAWICLIP_WATCHWINDOW			0x00000001 | 
|  | #define DDRAWICLIP_ISINITIALIZED		0x00000002 | 
|  | #define DDRAWICLIP_INMASTERSPRITELIST		0x00000004 | 
|  |  | 
|  | #define PFINDEX_UNINITIALIZED			(0UL) | 
|  | #define PFINDEX_UNSUPPORTED			(~0UL) | 
|  |  | 
|  | #define ROP_HAS_SOURCE				0x00000001l | 
|  | #define ROP_HAS_PATTERN				0x00000002l | 
|  | #define ROP_HAS_SOURCEPATTERN			ROP_HAS_SOURCE | ROP_HAS_PATTERN | 
|  |  | 
|  | #define DDRAWIVPORT_ON				0x00000001 | 
|  | #define DDRAWIVPORT_SOFTWARE_AUTOFLIP		0x00000002 | 
|  | #define DDRAWIVPORT_COLORKEYANDINTERP		0x00000004 | 
|  | #define DDRAWIVPORT_NOKERNELHANDLES		0x00000008 | 
|  | #define DDRAWIVPORT_SOFTWARE_BOB		0x00000010 | 
|  | #define DDRAWIVPORT_VBION			0x00000020 | 
|  | #define DDRAWIVPORT_VIDEOON			0x00000040 | 
|  |  | 
|  | #define DDRAWI_GETCOLOR				0x0001 | 
|  | #define DDRAWI_SETCOLOR				0x0002 | 
|  |  | 
|  | #define DDMCQUERY_READ				0x00000001 | 
|  | #define DDWAITVB_I_TESTVB			0x80000006 | 
|  |  | 
|  | #define DDBLT_ANYALPHA							\ | 
|  | (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE |	\ | 
|  | DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE |		\ | 
|  | DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST) | 
|  |  | 
|  | #define DDHAL_ALIGNVALIDCAPS						\ | 
|  | (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER |		\ | 
|  | DDSCAPS_OVERLAY | DDSCAPS_TEXTURE |				\ | 
|  | DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP) | 
|  |  | 
|  | #define DDHALINFOSIZE_V2 sizeof(DDHALINFO) | 
|  |  | 
|  | #define DDOVER_ANYALPHA							\ | 
|  | (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE |\ | 
|  | DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE |		\ | 
|  | DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST) | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWPALETTE_LCL { | 
|  | DWORD			lpPalMore; | 
|  | LPDDRAWI_DDRAWPALETTE_GBL	lpGbl; | 
|  | ULONG_PTR			dwUnused0; | 
|  | DWORD			dwLocalRefCnt; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			pUnkOuter; | 
|  | #else | 
|  | PVOID			pUnkOuter; | 
|  | #endif | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl; | 
|  | ULONG_PTR			dwReserved1; | 
|  | /* DirectX 6.0 */ | 
|  | ULONG_PTR			dwDDRAWReserved1; | 
|  | ULONG_PTR			dwDDRAWReserved2; | 
|  | ULONG_PTR			dwDDRAWReserved3; | 
|  | } DDRAWI_DDRAWPALETTE_LCL; | 
|  |  | 
|  |  | 
|  | typedef struct _DDMCCOMPBUFFERINFO { | 
|  | DWORD			dwSize; | 
|  | DWORD			dwNumCompBuffers; | 
|  | DWORD			dwWidthToCreate; | 
|  | DWORD			dwHeightToCreate; | 
|  | DWORD			dwBytesToAllocate; | 
|  | DDSCAPS2			ddCompCaps; | 
|  | DDPIXELFORMAT		ddPixelFormat; | 
|  | } DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO; | 
|  |  | 
|  | typedef struct _DDMCBUFFERINFO { | 
|  | DWORD			dwSize; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpCompSurface; | 
|  | DWORD			dwDataOffset; | 
|  | DWORD			dwDataSize; | 
|  | LPVOID			lpPrivate; | 
|  | } DDMCBUFFERINFO, *LPDDMCBUFFERINFO; | 
|  |  | 
|  | typedef struct _DDHAL_GETDRIVERSTATEDATA { | 
|  | DWORD			dwFlags; | 
|  | __GNU_EXTENSION union { | 
|  | ULONG_PTR		dwhContext; | 
|  | }; | 
|  | LPDWORD			lpdwStates; | 
|  | DWORD			dwLength; | 
|  | HRESULT			ddRVal; | 
|  | } DDHAL_GETDRIVERSTATEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_ADDATTACHEDSURFACEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurfAttached; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALSURFCB_ADDATTACHEDSURFACE	AddAttachedSurface; | 
|  | } DDHAL_ADDATTACHEDSURFACEDATA; | 
|  |  | 
|  |  | 
|  | typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDestSurface; | 
|  | DWORD			dwInputDataSize; | 
|  | LPVOID			lpInputData; | 
|  | DWORD			dwOutputDataSize; | 
|  | LPVOID			lpOutputData; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_BEGINFRAME	BeginMoCompFrame; | 
|  | } DDHAL_BEGINMOCOMPFRAMEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_COLORCONTROLDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | LPDDCOLORCONTROL		lpColorData; | 
|  | DWORD			dwFlags; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALCOLORCB_COLORCONTROL	ColorControl; | 
|  | } DDHAL_COLORCONTROLDATA; | 
|  |  | 
|  | typedef struct _DDHAL_CREATEMOCOMPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | LPGUID			lpGuid; | 
|  | DWORD			dwUncompWidth; | 
|  | DWORD			dwUncompHeight; | 
|  | DDPIXELFORMAT		ddUncompPixelFormat; | 
|  | LPVOID			lpData; | 
|  | DWORD			dwDataSize; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_CREATE	CreateMoComp; | 
|  | } DDHAL_CREATEMOCOMPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_DESTROYMOCOMPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_DESTROY	DestroyMoComp; | 
|  | } DDHAL_DESTROYMOCOMPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_ENDMOCOMPFRAMEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | LPVOID			lpInputData; | 
|  | DWORD			dwInputDataSize; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_ENDFRAME	EndMoCompFrame; | 
|  | } DDHAL_ENDMOCOMPFRAMEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_FLIPTOGDISURFACEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwToGDI; | 
|  | DWORD			dwReserved; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_FLIPTOGDISURFACE	FlipToGDISurface; | 
|  | } DDHAL_FLIPTOGDISURFACEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DDSCAPS			DDSCaps; | 
|  | DWORD			dwTotal; | 
|  | DWORD			dwFree; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; | 
|  | DDSCAPSEX			ddsCapsEx; | 
|  | } DDHAL_GETAVAILDRIVERMEMORYDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETBLTSTATUSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | DWORD			dwFlags; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_GETBLTSTATUS	GetBltStatus; | 
|  | } DDHAL_GETBLTSTATUSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETFLIPSTATUSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | DWORD			dwFlags; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_GETFLIPSTATUS	GetFlipStatus; | 
|  | } DDHAL_GETFLIPSTATUSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETINTERNALMOCOMPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPGUID			lpGuid; | 
|  | DWORD			dwWidth; | 
|  | DWORD			dwHeight; | 
|  | DDPIXELFORMAT		ddPixelFormat; | 
|  | DWORD			dwScratchMemAlloc; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; | 
|  | } DDHAL_GETINTERNALMOCOMPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPGUID			lpGuid; | 
|  | DWORD			dwWidth; | 
|  | DWORD			dwHeight; | 
|  | DDPIXELFORMAT		ddPixelFormat; | 
|  | DWORD			dwNumTypesCompBuffs; | 
|  | LPDDMCCOMPBUFFERINFO	lpCompBuffInfo; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; | 
|  | } DDHAL_GETMOCOMPCOMPBUFFDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETMOCOMPGUIDSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | DWORD			dwNumGuids; | 
|  | LPGUID			lpGuids; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_GETGUIDS	GetMoCompGuids; | 
|  | } DDHAL_GETMOCOMPGUIDSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETMOCOMPFORMATSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPGUID			lpGuid; | 
|  | DWORD			dwNumFormats; | 
|  | LPDDPIXELFORMAT		lpFormats; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_GETFORMATS	GetMoCompFormats; | 
|  | } DDHAL_GETMOCOMPFORMATSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_GETSCANLINEDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwScanLine; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_GETSCANLINE		GetScanLine; | 
|  | } DDHAL_GETSCANLINEDATA; | 
|  |  | 
|  | typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpSurface; | 
|  | DWORD			dwFlags; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_QUERYSTATUS	QueryMoCompStatus; | 
|  | } DDHAL_QUERYMOCOMPSTATUSDATA; | 
|  |  | 
|  | typedef struct _DDHAL_RENDERMOCOMPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpMoComp; | 
|  | DWORD			dwNumBuffers; | 
|  | LPDDMCBUFFERINFO		lpBufferInfo; | 
|  | DWORD			dwFunction; | 
|  | LPVOID			lpInputData; | 
|  | DWORD			dwInputDataSize; | 
|  | LPVOID			lpOutputData; | 
|  | DWORD			dwOutputDataSize; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALMOCOMPCB_RENDER	RenderMoComp; | 
|  | } DDHAL_RENDERMOCOMPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETCOLORKEYDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | DWORD			dwFlags; | 
|  | DDCOLORKEY			ckNew; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_SETCOLORKEY	SetColorKey; | 
|  | } DDHAL_SETCOLORKEYDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETOVERLAYPOSITIONDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSrcSurface; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDDestSurface; | 
|  | LONG				lXPos; | 
|  | LONG				lYPos; | 
|  | HRESULT				ddRVal; | 
|  | LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; | 
|  | } DDHAL_SETOVERLAYPOSITIONDATA; | 
|  |  | 
|  | typedef struct _DDHAL_UPDATEOVERLAYDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDDestSurface; | 
|  | RECTL			rDest; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSrcSurface; | 
|  | RECTL			rSrc; | 
|  | DWORD			dwFlags; | 
|  | DDOVERLAYFX			overlayFX; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_UPDATEOVERLAY	UpdateOverlay; | 
|  | } DDHAL_UPDATEOVERLAYDATA; | 
|  |  | 
|  | typedef struct _DDHAL_WAITFORVERTICALBLANKDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwFlags; | 
|  | DWORD			bIsInVB; | 
|  | ULONG_PTR			hEvent; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; | 
|  | } DDHAL_WAITFORVERTICALBLANKDATA; | 
|  |  | 
|  | typedef struct _DDHAL_DRVSETCOLORKEYDATA { | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | DWORD			dwFlags; | 
|  | DDCOLORKEY			ckNew; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_SETCOLORKEY		SetColorKey; | 
|  | } DDHAL_DRVSETCOLORKEYDATA; | 
|  |  | 
|  | typedef struct _DDMONITORINFO { | 
|  | WORD		Manufacturer; | 
|  | WORD		Product; | 
|  | DWORD		SerialNumber; | 
|  | GUID		DeviceIdentifier; | 
|  | int			Mode640x480; | 
|  | int			Mode800x600; | 
|  | int			Mode1024x768; | 
|  | int			Mode1280x1024; | 
|  | int			Mode1600x1200; | 
|  | int			ModeReserved1; | 
|  | int			ModeReserved2; | 
|  | int			ModeReserved3; | 
|  | } DDMONITORINFO, FAR *LPDDMONITORINFO; | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DDRAWCLIPPER_LCL	lpLcl; | 
|  | LPDDRAWI_DDRAWCLIPPER_INT	lpLink; | 
|  | DWORD		   dwIntRefCnt; | 
|  | } DDRAWI_DDRAWCLIPPER_INT; | 
|  |  | 
|  | typedef struct _DDHAL_UPDATENONLOCALHEAPDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwHeap; | 
|  | FLATPTR			fpGARTLin; | 
|  | FLATPTR			fpGARTDev; | 
|  | ULONG_PTR			ulPolicyMaxBytes; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHAL_UPDATENONLOCALHEAP	UpdateNonLocalHeap; | 
|  | } DDHAL_UPDATENONLOCALHEAPDATA; | 
|  |  | 
|  | typedef struct _DDHAL_SETCLIPLISTDATA { | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | LPDDRAWI_DDRAWSURFACE_LCL	lpDDSurface; | 
|  | HRESULT			ddRVal; | 
|  | LPDDHALSURFCB_SETCLIPLIST	SetClipList; | 
|  | } DDHAL_SETCLIPLISTDATA; | 
|  |  | 
|  | typedef struct _DDRAWI_DDMOTIONCOMP_LCL { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | GUID			guid; | 
|  | DWORD			dwUncompWidth; | 
|  | DWORD			dwUncompHeight; | 
|  | DDPIXELFORMAT		ddUncompPixelFormat; | 
|  | DWORD			dwInternalFlags; | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwProcessId; | 
|  | HANDLE			hMoComp; | 
|  | DWORD		dwDriverReserved1; | 
|  | DWORD		dwDriverReserved2; | 
|  | DWORD		dwDriverReserved3; | 
|  | LPVOID		lpDriverReserved1; | 
|  | LPVOID		lpDriverReserved2; | 
|  | LPVOID		lpDriverReserved3; | 
|  | } DDRAWI_DDMOTIONCOMP_LCL; | 
|  |  | 
|  | typedef struct _DDRAWI_DDMOTIONCOMP_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DDMOTIONCOMP_LCL	lpLcl; | 
|  | LPDDRAWI_DDMOTIONCOMP_INT	lpLink; | 
|  | DWORD			dwIntRefCnt; | 
|  | } DDRAWI_DDMOTIONCOMP_INT; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDVIDEOPORT_LCL { | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD; | 
|  | DDVIDEOPORTDESC		ddvpDesc; | 
|  | DDVIDEOPORTINFO		ddvpInfo; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpSurface; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	lpVBISurface; | 
|  | LPDDRAWI_DDRAWSURFACE_INT	*lpFlipInts; | 
|  | DWORD			dwNumAutoflip; | 
|  | DWORD			dwProcessID; | 
|  | DWORD			dwStateFlags; | 
|  | DWORD			dwFlags; | 
|  | DWORD			dwRefCnt; | 
|  | FLATPTR			fpLastFlip; | 
|  | ULONG_PTR			dwReserved1; | 
|  | ULONG_PTR			dwReserved2; | 
|  | HANDLE			hDDVideoPort; | 
|  | DWORD			dwNumVBIAutoflip; | 
|  | LPDDVIDEOPORTDESC		lpVBIDesc; | 
|  | LPDDVIDEOPORTDESC		lpVideoDesc; | 
|  | LPDDVIDEOPORTINFO		lpVBIInfo; | 
|  | LPDDVIDEOPORTINFO		lpVideoInfo; | 
|  | DWORD			dwVBIProcessID; | 
|  | LPDDRAWI_DDVIDEOPORT_INT	lpVPNotify; | 
|  | } DDRAWI_DDVIDEOPORT_LCL; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDVIDEOPORT_INT { | 
|  | LPVOID			lpVtbl; | 
|  | LPDDRAWI_DDVIDEOPORT_LCL	lpLcl; | 
|  | LPDDRAWI_DDVIDEOPORT_INT	lpLink; | 
|  | DWORD			dwIntRefCnt; | 
|  | DWORD			dwFlags; | 
|  | } DDRAWI_DDVIDEOPORT_INT; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_LCL { | 
|  | DWORD			lpClipMore; | 
|  | LPDDRAWI_DDRAWCLIPPER_GBL	lpGbl; | 
|  | LPDDRAWI_DIRECTDRAW_LCL	lpDD_lcl; | 
|  | DWORD			dwLocalRefCnt; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			pUnkOuter; | 
|  | #else | 
|  | PVOID			pUnkOuter; | 
|  | #endif | 
|  | LPDDRAWI_DIRECTDRAW_INT	lpDD_int; | 
|  | ULONG_PTR			dwReserved1; | 
|  | #ifndef _NO_COM | 
|  | IUnknown *			pAddrefedThisOwner; | 
|  | #else | 
|  | PVOID			pAddrefedThisOwner; | 
|  | #endif | 
|  | } DDRAWI_DDRAWCLIPPER_LCL; | 
|  |  | 
|  |  | 
|  | typedef struct _DDRAWI_DDRAWCLIPPER_GBL { | 
|  | DWORD			dwRefCnt; | 
|  | DWORD			dwFlags; | 
|  | LPDDRAWI_DIRECTDRAW_GBL	lpDD; | 
|  | DWORD			dwProcessId; | 
|  | ULONG_PTR			dwReserved1; | 
|  | ULONG_PTR			hWnd; | 
|  | LPRGNDATA			lpStaticClipList; | 
|  | } DDRAWI_DDRAWCLIPPER_GBL; | 
|  |  | 
|  | typedef WINBOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,WINBOOL); | 
|  |  | 
|  | extern HRESULT DDAPI | 
|  | LateAllocateSurfaceMem( | 
|  | LPDIRECTDRAWSURFACE lpSurface, | 
|  | DWORD dwPleaseAllocType, | 
|  | DWORD dwWidthInBytesOrSize, | 
|  | DWORD dwHeight); | 
|  |  | 
|  | LPDIRECTDRAWSURFACE GetNextMipMap( | 
|  | LPDIRECTDRAWSURFACE lpLevel); | 
|  |  | 
|  |  | 
|  | typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS; | 
|  | typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS; | 
|  | typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS; | 
|  | typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS; | 
|  | typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS; | 
|  | typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS; | 
|  | typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS; | 
|  | typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS; | 
|  | typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS; | 
|  | typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS; | 
|  | typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS; | 
|  | typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS; | 
|  | typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS; | 
|  | typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS; | 
|  | typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS; | 
|  |  | 
|  | typedef DIRECTDRAWCLIPPERCALLBACKS  *LPDIRECTDRAWCLIPPERCALLBACKS; | 
|  | typedef DIRECTDRAWPALETTECALLBACKS  *LPDIRECTDRAWPALETTECALLBACKS; | 
|  | typedef DIRECTDRAWSURFACECALLBACKS  *LPDIRECTDRAWSURFACECALLBACKS; | 
|  | typedef DIRECTDRAWCALLBACKS  *LPDIRECTDRAWCALLBACKS; | 
|  |  | 
|  |  | 
|  | HRESULT CALLBACK | 
|  | D3DParseUnknownCommand (LPVOID lpvCommands, | 
|  | LPVOID *lplpvReturnedCommand); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } /* extern "C" */ | 
|  | #endif | 
|  |  | 
|  | #endif /* __DDRAWI_INCLUDED__ */ | 
|  |  |