ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ddrawi.h
Go to the documentation of this file.
00001 /*
00002  * DirectDraw driver interface
00003  * (DirectX 7 version)
00004  *
00005  * Copyright (C) 2001 Ove Kaaven
00006  *
00007  * This library is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public
00009  * License as published by the Free Software Foundation; either
00010  * version 2.1 of the License, or (at your option) any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  * Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public
00018  * License along with this library; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00020  */
00021 
00022 #ifndef __DDRAWI_INCLUDED__
00023 #define __DDRAWI_INCLUDED__
00024 
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028 
00029 #define OBJECT_ISROOT           0x80000000
00030 
00031 #include <ddraw.h>
00032 #include <dvp.h>
00033 #include <ddkernel.h>
00034 #include <dmemmgr.h>
00035 
00036 #define DDAPI WINAPI
00037 
00038 #define VALID_ALIGNMENT(align) \
00039     (!((align==0)||(align%2)!= 0 ))
00040 
00041 /* the DirectDraw versions */
00042 #define DD_VERSION         0x0200 /* compatibility version */
00043 #define DD_RUNTIME_VERSION 0x0902 /* actual version */
00044 
00045 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */
00046 #define DD_HAL_VERSION     0x0100
00047 
00048 /* more DCICOMMAND escapes */
00049 #ifndef DCICOMMAND
00050 #define DCICOMMAND 3075
00051 #endif
00052 
00053 #define DDCREATEDRIVEROBJECT 10
00054 #define DDGET32BITDRIVERNAME 11
00055 #define DDNEWCALLBACKFNS     12
00056 #define DDVERSIONINFO        13
00057 
00058 #define DDUNSUPPORTEDMODE  ((DWORD) -1)
00059 
00060 #include "dciddi.h"
00061 
00062 #ifndef CCHDEVICENAME
00063 #define CCHDEVICENAME 32
00064 #endif
00065 #define MAX_DRIVER_NAME CCHDEVICENAME
00066 
00067 #define DDHAL_DRIVER_DLLNAME    "DDRAW16.DLL"
00068 #define DDHAL_APP_DLLNAME       "DDRAW.DLL"
00069 
00070 /* GUID */
00071 #ifdef _WIN32
00072 DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
00073 DEFINE_GUID(GUID_VideoPortCallbacks,     0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
00074 DEFINE_GUID(GUID_ColorControlCallbacks,  0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
00075 DEFINE_GUID(GUID_VideoPortCaps,          0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
00076 DEFINE_GUID(GUID_D3DCallbacks2,          0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a);
00077 DEFINE_GUID(GUID_D3DCallbacks3,          0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e);
00078 DEFINE_GUID(GUID_NonLocalVidMemCaps,     0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37);
00079 DEFINE_GUID(GUID_KernelCallbacks,        0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
00080 DEFINE_GUID(GUID_KernelCaps,             0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
00081 DEFINE_GUID(GUID_D3DExtendedCaps,        0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
00082 DEFINE_GUID(GUID_ZPixelFormats,          0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae);
00083 DEFINE_GUID(GUID_DDMoreSurfaceCaps,      0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5);
00084 DEFINE_GUID(GUID_DDStereoMode,           0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
00085 DEFINE_GUID(GUID_OptSurfaceKmodeInfo,    0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
00086 DEFINE_GUID(GUID_OptSurfaceUmodeInfo,    0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
00087 DEFINE_GUID(GUID_UserModeDriverInfo,     0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
00088 DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
00089 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
00090 DEFINE_GUID(GUID_MotionCompCallbacks,    0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e);
00091 DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
00092 #endif
00093 
00094 #ifndef _WIN32
00095 #undef  E_NOTIMPL
00096 #undef  E_OUTOFMEMORY
00097 #undef  E_INVALIDARG
00098 #undef  E_FAIL
00099 #define E_NOTIMPL      0x80004001L
00100 #define E_OUTOFMEMORY  0x8007000EL
00101 #define E_INVALIDARG   0x80070057L
00102 #define E_FAIL         0x80004005L
00103 #endif
00104 
00105 /*****************************************************************************
00106  * Initialization stuff
00107  */
00108 typedef struct {
00109   char szName[260];
00110   char szEntryPoint[64];
00111   DWORD dwContext;
00112 } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA;
00113 
00114 typedef struct {
00115   DWORD dwHALVersion;
00116   ULONG_PTR dwReserved1;
00117   ULONG_PTR dwReserved2;
00118 } DDVERSIONDATA,*LPDDVERSIONDATA;
00119 
00120 typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext);
00121 
00122 /* predeclare some structures */
00123 typedef struct _DDHALINFO *LPDDHALINFO;
00124 typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT;
00125 
00126 #ifndef DDRAWI_DIRECTDRAW_DEFINED
00127 typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL;
00128 typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL;
00129 #define DDRAWI_DIRECTDRAW_DEFINED
00130 #endif
00131 
00132 typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT;
00133 
00134 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
00135 typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL;
00136 #define DDRAWI_DDRAWSURFACE_DEFINED
00137 #endif
00138 
00139 typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL;
00140 typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE;
00141 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE;
00142 typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT;
00143 typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL;
00144 typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL;
00145 typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT;
00146 typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL;
00147 typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL;
00148 typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT;
00149 typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL;
00150 typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT;
00151 typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL;
00152 
00153 /*****************************************************************************
00154  * driver->ddraw callbacks
00155  */
00156 typedef BOOL    (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset);
00157 typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight);
00158 typedef void    (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem);
00159 
00160 typedef struct {
00161   DWORD dwSize;
00162   LPDDHAL_SETINFO lpSetInfo;
00163   LPDDHAL_VIDMEMALLOC lpVidMemAlloc;
00164   LPDDHAL_VIDMEMFREE lpVidMemFree;
00165 } DDHALDDRAWFNS, *LPDDHALDDRAWFNS;
00166 
00167 /*****************************************************************************
00168  * mode info structure
00169  */
00170 typedef struct _DDHALMODEINFO {
00171   DWORD dwWidth;
00172   DWORD dwHeight;
00173   LONG lPitch;
00174   DWORD dwBPP;
00175   WORD wFlags;
00176   WORD wRefreshRate;
00177   DWORD dwRBitMask;
00178   DWORD dwGBitMask;
00179   DWORD dwBBitMask;
00180   DWORD dwAlphaBitMask;
00181 } DDHALMODEINFO, *LPDDHALMODEINFO;
00182 
00183 #define DDMODEINFO_PALETTIZED  0x0001
00184 #define DDMODEINFO_MODEX       0x0002
00185 #define DDMODEINFO_UNSUPPORTED 0x0004
00186 #define DDMODEINFO_STANDARDVGA 0x0008
00187 #define DDMODEINFO_MAXREFRESH  0x0010
00188 #define DDMODEINFO_STEREO      0x0020
00189 
00190 /*****************************************************************************
00191  * video memory info structure
00192  */
00193 typedef struct _VIDMEM {
00194     DWORD dwFlags;
00195     FLATPTR fpStart;
00196     __GNU_EXTENSION union {
00197  FLATPTR fpEnd;
00198  DWORD dwWidth;
00199     };
00200     DDSCAPS ddsCaps;
00201     DDSCAPS ddsCapsAlt;
00202     __GNU_EXTENSION union {
00203  LPVMEMHEAP lpHeap;
00204  DWORD dwHeight;
00205     };
00206 } VIDMEM;
00207 
00208 #define VIDMEM_ISLINEAR                       0x00000001l
00209 #define VIDMEM_ISRECTANGULAR                  0x00000002l
00210 #define VIDMEM_ISHEAP                         0x00000004l
00211 #define VIDMEM_ISNONLOCAL                     0x00000008l
00212 #define VIDMEM_ISWC                           0x00000010l
00213 #define VIDMEM_HEAPDISABLED                   0x00000020l
00214 
00215 typedef struct _VIDMEMINFO {
00216     FLATPTR fpPrimary;
00217     DWORD dwFlags;
00218     DWORD dwDisplayWidth;
00219     DWORD dwDisplayHeight;
00220     LONG lDisplayPitch;
00221     DDPIXELFORMAT ddpfDisplay;
00222     DWORD dwOffscreenAlign;
00223     DWORD dwOverlayAlign;
00224     DWORD dwTextureAlign;
00225     DWORD dwZBufferAlign;
00226     DWORD dwAlphaAlign;
00227     DWORD dwNumHeaps;
00228     LPVIDMEM pvmList;
00229 } VIDMEMINFO, *LPVIDMEMINFO;
00230 
00231 typedef struct _HEAPALIAS {
00232   FLATPTR fpVidMem;
00233   LPVOID lpAlias;
00234   DWORD dwAliasSize;
00235 } HEAPALIAS, *LPHEAPALIAS;
00236 
00237 typedef struct _HEAPALIASINFO {
00238   DWORD dwRefCnt;
00239   DWORD dwFlags;
00240   DWORD dwNumHeaps;
00241   LPHEAPALIAS lpAliases;
00242 } HEAPALIASINFO, *LPHEAPALIASINFO;
00243 
00244 #define HEAPALIASINFO_MAPPEDREAL  0x00000001
00245 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002
00246 
00247 /*****************************************************************************
00248  * capabilities structures
00249  */
00250 typedef struct _DDCORECAPS {
00251   DWORD dwSize;
00252   DWORD dwCaps;
00253   DWORD dwCaps2;
00254   DWORD dwCKeyCaps;
00255   DWORD dwFXCaps;
00256   DWORD dwFXAlphaCaps;
00257   DWORD dwPalCaps;
00258   DWORD dwSVCaps;
00259   DWORD dwAlphaBltConstBitDepths;
00260   DWORD dwAlphaBltPixelBitDepths;
00261   DWORD dwAlphaBltSurfaceBitDepths;
00262   DWORD dwAlphaOverlayConstBitDepths;
00263   DWORD dwAlphaOverlayPixelBitDepths;
00264   DWORD dwAlphaOverlaySurfaceBitDepths;
00265   DWORD dwZBufferBitDepths;
00266   DWORD dwVidMemTotal;
00267   DWORD dwVidMemFree;
00268   DWORD dwMaxVisibleOverlays;
00269   DWORD dwCurrVisibleOverlays;
00270   DWORD dwNumFourCCCodes;
00271   DWORD dwAlignBoundarySrc;
00272   DWORD dwAlignSizeSrc;
00273   DWORD dwAlignBoundaryDest;
00274   DWORD dwAlignSizeDest;
00275   DWORD dwAlignStrideAlign;
00276   DWORD dwRops[DD_ROP_SPACE];
00277   DDSCAPS ddsCaps;
00278   DWORD dwMinOverlayStretch;
00279   DWORD dwMaxOverlayStretch;
00280   DWORD dwMinLiveVideoStretch;
00281   DWORD dwMaxLiveVideoStretch;
00282   DWORD dwMinHwCodecStretch;
00283   DWORD dwMaxHwCodecStretch;
00284   DWORD dwReserved1;
00285   DWORD dwReserved2;
00286   DWORD dwReserved3;
00287   DWORD dwSVBCaps;
00288   DWORD dwSVBCKeyCaps;
00289   DWORD dwSVBFXCaps;
00290   DWORD dwSVBRops[DD_ROP_SPACE];
00291   DWORD dwVSBCaps;
00292   DWORD dwVSBCKeyCaps;
00293   DWORD dwVSBFXCaps;
00294   DWORD dwVSBRops[DD_ROP_SPACE];
00295   DWORD dwSSBCaps;
00296   DWORD dwSSBCKeyCaps;
00297   DWORD dwSSBFXCaps;
00298   DWORD dwSSBRops[DD_ROP_SPACE];
00299   DWORD dwMaxVideoPorts;
00300   DWORD dwCurrVideoPorts;
00301   DWORD dwSVBCaps2;
00302 } DDCORECAPS, *LPDDCORECAPS;
00303 
00304 typedef struct _DDNONLOCALVIDMEMCAPS {
00305   DWORD dwSize;
00306   DWORD dwNLVBCaps;
00307   DWORD dwNLVBCaps2;
00308   DWORD dwNLVBCKeyCaps;
00309   DWORD dwNLVBFXCaps;
00310   DWORD dwNLVBRops[DD_ROP_SPACE];
00311 } DDNONLOCALVIDMEMCAPS, *LPDDNONLOCALVIDMEMCAPS;
00312 
00313 #define DDSCAPS_EXECUTEBUFFER  DDSCAPS_RESERVED2
00314 #define DDSCAPS2_VERTEXBUFFER  DDSCAPS2_RESERVED1
00315 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2
00316 
00317 /*****************************************************************************
00318  * ddraw->driver callbacks
00319  */
00320 #define DDHAL_DRIVER_NOTHANDLED               0x00000000l
00321 #define DDHAL_DRIVER_HANDLED                  0x00000001l
00322 #define DDHAL_DRIVER_NOCKEYHW                 0x00000002l
00323 
00324 typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA;
00325 typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA;
00326 typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA;
00327 typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA;
00328 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA;
00329 typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA;
00330 typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA;
00331 typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA;
00332 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA;
00333 typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA;
00334 
00335 typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER)       (LPDDHAL_DESTROYDRIVERDATA);
00336 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE)       (LPDDHAL_CREATESURFACEDATA);
00337 typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY)         (LPDDHAL_DRVSETCOLORKEYDATA);
00338 typedef DWORD (PASCAL *LPDDHAL_SETMODE)             (LPDDHAL_SETMODEDATA);
00339 typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA);
00340 typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE)    (LPDDHAL_CANCREATESURFACEDATA );
00341 typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE)       (LPDDHAL_CREATEPALETTEDATA);
00342 typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE)         (LPDDHAL_GETSCANLINEDATA);
00343 typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE)    (LPDDHAL_SETEXCLUSIVEMODEDATA);
00344 typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE)    (LPDDHAL_FLIPTOGDISURFACEDATA);
00345 
00346 typedef struct _DDHAL_DDCALLBACKS {
00347   DWORD dwSize;
00348   DWORD dwFlags;
00349   LPDDHAL_DESTROYDRIVER DestroyDriver;
00350   LPDDHAL_CREATESURFACE CreateSurface;
00351   LPDDHAL_SETCOLORKEY SetColorKey;
00352   LPDDHAL_SETMODE SetMode;
00353   LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
00354   LPDDHAL_CANCREATESURFACE CanCreateSurface;
00355   LPDDHAL_CREATEPALETTE CreatePalette;
00356   LPDDHAL_GETSCANLINE GetScanLine;
00357   /* DirectX 2 */
00358   LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
00359   LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
00360 } DDHAL_DDCALLBACKS, *LPDDHAL_DDCALLBACKS;
00361 
00362 typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA;
00363 typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA;
00364 typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA;
00365 typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA;
00366 typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA;
00367 typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA;
00368 typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA;
00369 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA;
00370 typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA;
00371 typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA;
00372 typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA;
00373 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA;
00374 typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA;
00375 
00376 typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA);
00377 typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA);
00378 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA);
00379 typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA);
00380 typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA);
00381 typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA);
00382 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA);
00383 typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA);
00384 typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA);
00385 typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA);
00386 typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA);
00387 typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA);
00388 typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA);
00389 
00390 typedef struct _DDHAL_DDSURFACECALLBACKS {
00391   DWORD dwSize;
00392   DWORD dwFlags;
00393   LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
00394   LPDDHALSURFCB_FLIP Flip;
00395   LPDDHALSURFCB_SETCLIPLIST SetClipList;
00396   LPDDHALSURFCB_LOCK Lock;
00397   LPDDHALSURFCB_UNLOCK Unlock;
00398   LPDDHALSURFCB_BLT Blt;
00399   LPDDHALSURFCB_SETCOLORKEY SetColorKey;
00400   LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
00401   LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
00402   LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
00403   LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
00404   LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
00405   LPVOID reserved4;
00406   LPDDHALSURFCB_SETPALETTE SetPalette;
00407 } DDHAL_DDSURFACECALLBACKS, *LPDDHAL_DDSURFACECALLBACKS;
00408 
00409 typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA;
00410 typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA;
00411 
00412 typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE) (LPDDHAL_DESTROYPALETTEDATA);
00413 typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA);
00414 
00415 typedef struct _DDHAL_DDPALETTECALLBACKS {
00416   DWORD dwSize;
00417   DWORD dwFlags;
00418   LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
00419   LPDDHALPALCB_SETENTRIES SetEntries;
00420 } DDHAL_DDPALETTECALLBACKS, *LPDDHAL_DDPALETTECALLBACKS;
00421 
00422 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF) (LPDDHAL_CANCREATESURFACEDATA);
00423 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA);
00424 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA);
00425 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA);
00426 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA);
00427 
00428 typedef struct _DDHAL_DDEXEBUFCALLBACKS {
00429   DWORD dwSize;
00430   DWORD dwFlags;
00431   LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer;
00432   LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer;
00433   LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer;
00434   LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer;
00435   LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer;
00436 } DDHAL_DDEXEBUFCALLBACKS, *LPDDHAL_DDEXEBUFCALLBACKS;
00437 
00438 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA;
00439 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA;
00440 typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA;
00441 
00442 typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA);
00443 typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP)  (LPDDHAL_UPDATENONLOCALHEAPDATA);
00444 typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT)    (LPDDHAL_GETHEAPALIGNMENTDATA);
00445 
00446 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS {
00447   DWORD dwSize;
00448   DWORD dwFlags;
00449   LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
00450   LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
00451   LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
00452   LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus;
00453 } DDHAL_DDMISCELLANEOUSCALLBACKS, *LPDDHAL_DDMISCELLANEOUSCALLBACKS;
00454 
00455 typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA;
00456 typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA;
00457 typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA;
00458 
00459 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA);
00460 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA);
00461 typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA);
00462 
00463 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS {
00464   DWORD dwSize;
00465   DWORD dwFlags;
00466   LPVOID Reserved;
00467   LPDDHAL_CREATESURFACEEX CreateSurfaceEx;
00468   LPDDHAL_GETDRIVERSTATE GetDriverState;
00469   LPDDHAL_DESTROYDDLOCAL DestroyDDLocal;
00470 } DDHAL_DDMISCELLANEOUS2CALLBACKS, *LPDDHAL_DDMISCELLANEOUS2CALLBACKS;
00471 
00472 typedef struct _DDHAL_CANCREATEVPORTDATA       *LPDDHAL_CANCREATEVPORTDATA;
00473 typedef struct _DDHAL_CREATEVPORTDATA          *LPDDHAL_CREATEVPORTDATA;
00474 typedef struct _DDHAL_FLIPVPORTDATA            *LPDDHAL_FLIPVPORTDATA;
00475 typedef struct _DDHAL_GETVPORTCONNECTDATA      *LPDDHAL_GETVPORTCONNECTDATA;
00476 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA    *LPDDHAL_GETVPORTBANDWIDTHDATA;
00477 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA  *LPDDHAL_GETVPORTINPUTFORMATDATA;
00478 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA;
00479 typedef struct _DDHAL_GETVPORTFIELDDATA        *LPDDHAL_GETVPORTFIELDDATA;
00480 typedef struct _DDHAL_GETVPORTLINEDATA         *LPDDHAL_GETVPORTLINEDATA;
00481 typedef struct _DDHAL_DESTROYVPORTDATA         *LPDDHAL_DESTROYVPORTDATA;
00482 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA   *LPDDHAL_GETVPORTFLIPSTATUSDATA;
00483 typedef struct _DDHAL_UPDATEVPORTDATA          *LPDDHAL_UPDATEVPORTDATA;
00484 typedef struct _DDHAL_WAITFORVPORTSYNCDATA     *LPDDHAL_WAITFORVPORTSYNCDATA;
00485 typedef struct _DDHAL_GETVPORTSIGNALDATA       *LPDDHAL_GETVPORTSIGNALDATA;
00486 typedef struct _DDHAL_VPORTCOLORDATA           *LPDDHAL_VPORTCOLORDATA;
00487 
00488 typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA);
00489 typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA);
00490 typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA);
00491 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA);
00492 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA);
00493 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA);
00494 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA);
00495 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA);
00496 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA);
00497 typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA);
00498 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA);
00499 typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA);
00500 typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA);
00501 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA);
00502 typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA);
00503 
00504 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS {
00505   DWORD dwSize;
00506   DWORD dwFlags;
00507   LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;
00508   LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort;
00509   LPDDHALVPORTCB_FLIP FlipVideoPort;
00510   LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth;
00511   LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;
00512   LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;
00513   LPVOID lpReserved1;
00514   LPDDHALVPORTCB_GETFIELD GetVideoPortField;
00515   LPDDHALVPORTCB_GETLINE GetVideoPortLine;
00516   LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;
00517   LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort;
00518   LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;
00519   LPDDHALVPORTCB_UPDATE UpdateVideoPort;
00520   LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync;
00521   LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;
00522   LPDDHALVPORTCB_COLORCONTROL ColorControl;
00523 } DDHAL_DDVIDEOPORTCALLBACKS;
00524 
00525 typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA;
00526 
00527 typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA);
00528 
00529 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS {
00530   DWORD dwSize;
00531   DWORD dwFlags;
00532   LPDDHALCOLORCB_COLORCONTROL ColorControl;
00533 } DDHAL_DDCOLORCONTROLCALLBACKS;
00534 
00535 typedef struct _DDHAL_SYNCSURFACEDATA   *LPDDHAL_SYNCSURFACEDATA;
00536 typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA;
00537 
00538 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA);
00539 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA);
00540 
00541 typedef struct _DDHAL_DDKERNELCALLBACKS {
00542   DWORD dwSize;
00543   DWORD dwFlags;
00544   LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData;
00545   LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData;
00546 } DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS;
00547 
00548 typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA;
00549 typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA;
00550 typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA;
00551 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA;
00552 typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA;
00553 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA;
00554 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA;
00555 typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA;
00556 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA;
00557 typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA;
00558 
00559 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)(LPDDHAL_GETMOCOMPGUIDSDATA);
00560 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)(LPDDHAL_GETMOCOMPFORMATSDATA);
00561 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)(LPDDHAL_CREATEMOCOMPDATA);
00562 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)(LPDDHAL_GETMOCOMPCOMPBUFFDATA);
00563 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)(LPDDHAL_GETINTERNALMOCOMPDATA);
00564 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)(LPDDHAL_BEGINMOCOMPFRAMEDATA);
00565 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)(LPDDHAL_ENDMOCOMPFRAMEDATA);
00566 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)(LPDDHAL_RENDERMOCOMPDATA);
00567 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)(LPDDHAL_QUERYMOCOMPSTATUSDATA);
00568 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)(LPDDHAL_DESTROYMOCOMPDATA);
00569 
00570 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS {
00571   DWORD dwSize;
00572   DWORD dwFlags;
00573   LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids;
00574   LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats;
00575   LPDDHALMOCOMPCB_CREATE CreateMoComp;
00576   LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;
00577   LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;
00578   LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame;
00579   LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame;
00580   LPDDHALMOCOMPCB_RENDER RenderMoComp;
00581   LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus;
00582   LPDDHALMOCOMPCB_DESTROY DestroyMoComp;
00583 } DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS;
00584 
00585 typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE);
00586 
00587 /*****************************************************************************
00588  * driver info structure
00589  *
00590  * The HAL is queried for additional callbacks via the GetDriverInfo callback.
00591  */
00592 typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA;
00593 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA);
00594 
00595 typedef struct _DDHAL_GETDRIVERINFODATA {
00596   DWORD dwSize;
00597   DWORD dwFlags;
00598   GUID guidInfo;
00599   DWORD dwExpectedSize;
00600   LPVOID lpvData;
00601   DWORD dwActualSize;
00602   HRESULT ddRVal;
00603   ULONG_PTR dwContext;
00604 } DDHAL_GETDRIVERINFODATA;
00605 
00606 typedef struct _DDHALINFO {
00607   DWORD dwSize;
00608   LPDDHAL_DDCALLBACKS lpDDCallbacks;
00609   LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks;
00610   LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks;
00611   VIDMEMINFO vmiData;
00612   DDCORECAPS ddCaps;
00613   DWORD dwMonitorFrequency;
00614   LPDDHAL_GETDRIVERINFO GetDriverInfo;
00615   DWORD dwModeIndex;
00616   LPDWORD lpdwFourCC;
00617   DWORD dwNumModes;
00618   LPDDHALMODEINFO lpModeInfo;
00619   DWORD dwFlags;
00620   LPVOID lpPDevice;
00621   DWORD hInstance;
00622   /* DirectX 2 */
00623   ULONG_PTR lpD3DGlobalDriverData;
00624   ULONG_PTR lpD3DHALCallbacks;
00625   LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks;
00626 } DDHALINFO;
00627 
00628 #define DDPALETTECALLBACKSSIZE sizeof(DDHAL_DDPALETTECALLBACKS)
00629 #define DDSURFACECALLBACKSSIZE sizeof(DDHAL_DDSURFACECALLBACKS)
00630 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS)
00631 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS)
00632 #define DDEXEBUFCALLBACKSSIZE sizeof(DDHAL_DDEXEBUFCALLBACKS)
00633 #define DDVIDEOPORTCALLBACKSSIZE sizeof(DDHAL_DDVIDEOPORTCALLBACKS)
00634 #define DDCOLORCONTROLCALLBACKSSIZE sizeof(DDHAL_DDCOLORCONTROLCALLBACKS)
00635 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS)
00636 #define DDMOTIONCOMPCALLBACKSSIZE sizeof(DDHAL_DDMOTIONCOMPCALLBACKS)
00637 
00638 #define MAX_PALETTE_SIZE                    256
00639 
00640 #define MAX_AUTOFLIP_BUFFERS                10
00641 #define DDSCAPS2_INDEXBUFFER                DDSCAPS2_RESERVED3
00642 #define DDSCAPS3_VIDEO                      DDSCAPS3_RESERVED2
00643 #define D3DFMT_INTERNAL_D32                 71
00644 #define D3DFMT_INTERNAL_S1D15               72
00645 #define D3DFMT_INTERNAL_D15S1               73
00646 #define D3DFMT_INTERNAL_S8D24               74
00647 #define D3DFMT_INTERNAL_D24S8               75
00648 #define D3DFMT_INTERNAL_X8D24               76
00649 #define D3DFMT_INTERNAL_D24X8               77
00650 #define DDHAL_PLEASEALLOC_BLOCKSIZE         0x00000002l
00651 #define DDHAL_PLEASEALLOC_LINEARSIZE        0x00000003l
00652 
00653 #define DDHAL_CB32_DESTROYDRIVER            0x00000001l
00654 #define DDHAL_CB32_CREATESURFACE            0x00000002l
00655 #define DDHAL_CB32_SETCOLORKEY              0x00000004l
00656 #define DDHAL_CB32_SETMODE                  0x00000008l
00657 #define DDHAL_CB32_WAITFORVERTICALBLANK     0x00000010l
00658 #define DDHAL_CB32_CANCREATESURFACE         0x00000020l
00659 #define DDHAL_CB32_CREATEPALETTE            0x00000040l
00660 #define DDHAL_CB32_GETSCANLINE              0x00000080l
00661 #define DDHAL_CB32_SETEXCLUSIVEMODE         0x00000100l
00662 #define DDHAL_CB32_FLIPTOGDISURFACE         0x00000200l
00663 #define DDHAL_PALCB32_DESTROYPALETTE        0x00000001l
00664 #define DDHAL_PALCB32_SETENTRIES            0x00000002l
00665 #define DDHALINFO_ISPRIMARYDISPLAY          0x00000001
00666 #define DDHALINFO_MODEXILLEGAL              0x00000002
00667 #define DDHALINFO_GETDRIVERINFOSET          0x00000004
00668 #define DDHALINFO_GETDRIVERINFO2            0x00000008
00669 #define DDRAWI_VPORTSTART                   0x0001
00670 #define DDRAWI_VPORTSTOP                    0x0002
00671 #define DDRAWI_VPORTUPDATE                  0x0003
00672 #define DDRAWI_VPORTGETCOLOR                0x0001
00673 #define DDRAWI_VPORTSETCOLOR                0x0002
00674 #define DDHAL_SURFCB32_DESTROYSURFACE       0x00000001
00675 #define DDHAL_SURFCB32_FLIP                 0x00000002
00676 #define DDHAL_SURFCB32_SETCLIPLIST          0x00000004
00677 #define DDHAL_SURFCB32_LOCK                 0x00000008
00678 #define DDHAL_SURFCB32_UNLOCK               0x00000010
00679 #define DDHAL_SURFCB32_BLT                  0x00000020
00680 #define DDHAL_SURFCB32_SETCOLORKEY          0x00000040
00681 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE   0x00000080
00682 #define DDHAL_SURFCB32_GETBLTSTATUS         0x00000100
00683 #define DDHAL_SURFCB32_GETFLIPSTATUS        0x00000200
00684 #define DDHAL_SURFCB32_UPDATEOVERLAY        0x00000400
00685 #define DDHAL_SURFCB32_SETOVERLAYPOSITION   0x00000800
00686 #define DDHAL_SURFCB32_RESERVED4            0x00001000
00687 #define DDHAL_SURFCB32_SETPALETTE           0x00002000
00688 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001
00689 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP   0x00000002
00690 #define DDHAL_MISCCB32_GETHEAPALIGNMENT     0x00000004
00691 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS   0x00000008
00692 #define DDHAL_MISC2CB32_ALPHABLT            0x00000001
00693 #define DDHAL_MISC2CB32_CREATESURFACEEX     0x00000002
00694 #define DDHAL_MISC2CB32_GETDRIVERSTATE      0x00000004
00695 #define DDHAL_MISC2CB32_DESTROYDDLOCAL      0x00000008
00696 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF    0x00000001l
00697 #define DDHAL_EXEBUFCB32_CREATEEXEBUF       0x00000002l
00698 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF      0x00000004l
00699 #define DDHAL_EXEBUFCB32_LOCKEXEBUF         0x00000008l
00700 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF       0x00000010l
00701 #define DDHAL_VPORT32_CANCREATEVIDEOPORT    0x00000001
00702 #define DDHAL_VPORT32_CREATEVIDEOPORT       0x00000002
00703 #define DDHAL_VPORT32_FLIP                  0x00000004
00704 #define DDHAL_VPORT32_GETBANDWIDTH          0x00000008
00705 #define DDHAL_VPORT32_GETINPUTFORMATS       0x00000010
00706 #define DDHAL_VPORT32_GETOUTPUTFORMATS      0x00000020
00707 #define DDHAL_VPORT32_GETFIELD              0x00000080
00708 #define DDHAL_VPORT32_GETLINE               0x00000100
00709 #define DDHAL_VPORT32_GETCONNECT            0x00000200
00710 #define DDHAL_VPORT32_DESTROY               0x00000400
00711 #define DDHAL_VPORT32_GETFLIPSTATUS         0x00000800
00712 #define DDHAL_VPORT32_UPDATE                0x00001000
00713 #define DDHAL_VPORT32_WAITFORSYNC           0x00002000
00714 #define DDHAL_VPORT32_GETSIGNALSTATUS       0x00004000
00715 #define DDHAL_VPORT32_COLORCONTROL          0x00008000
00716 #define DDHAL_COLOR_COLORCONTROL            0x00000001
00717 #define DDHAL_KERNEL_SYNCSURFACEDATA        0x00000001l
00718 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA      0x00000002l
00719 #define DDHAL_MOCOMP32_GETGUIDS             0x00000001
00720 #define DDHAL_MOCOMP32_GETFORMATS           0x00000002
00721 #define DDHAL_MOCOMP32_CREATE               0x00000004
00722 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO      0x00000008
00723 #define DDHAL_MOCOMP32_GETINTERNALINFO      0x00000010
00724 #define DDHAL_MOCOMP32_BEGINFRAME           0x00000020
00725 #define DDHAL_MOCOMP32_ENDFRAME             0x00000040
00726 #define DDHAL_MOCOMP32_RENDER               0x00000080
00727 #define DDHAL_MOCOMP32_QUERYSTATUS          0x00000100
00728 #define DDHAL_MOCOMP32_DESTROY              0x00000200
00729 
00730 /* where the high-level ddraw implementation stores the callbacks */
00731 typedef struct _DDHAL_CALLBACKS {
00732   DDHAL_DDCALLBACKS cbDDCallbacks;
00733   DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks;
00734   DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks;
00735   DDHAL_DDCALLBACKS HALDD;
00736   DDHAL_DDSURFACECALLBACKS HALDDSurface;
00737   DDHAL_DDPALETTECALLBACKS HALDDPalette;
00738   DDHAL_DDCALLBACKS HELDD;
00739   DDHAL_DDSURFACECALLBACKS HELDDSurface;
00740   DDHAL_DDPALETTECALLBACKS HELDDPalette;
00741   DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks;
00742   DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf;
00743   DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf;
00744   DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks;
00745   DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort;
00746   DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks;
00747   DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl;
00748   DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks;
00749   DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous;
00750   DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks;
00751   DDHAL_DDKERNELCALLBACKS HALDDKernel;
00752   DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks;
00753   DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp;
00754 } DDHAL_CALLBACKS, *LPDDHAL_CALLBACKS;
00755 
00756 /*****************************************************************************
00757  * parameter structures
00758  */
00759 typedef struct _DDHAL_DESTROYDRIVERDATA {
00760   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00761   HRESULT ddRVal;
00762   LPDDHAL_DESTROYDRIVER DestroyDriver;
00763 } DDHAL_DESTROYDRIVERDATA;
00764 
00765 typedef struct _DDHAL_SETMODEDATA {
00766   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00767   DWORD dwModeIndex;
00768   HRESULT ddRVal;
00769   LPDDHAL_SETMODE SetMode;
00770   BOOL inexcl;
00771   BOOL useRefreshRate;
00772 } DDHAL_SETMODEDATA;
00773 
00774 typedef struct _DDHAL_CREATESURFACEDATA {
00775   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00776   LPDDSURFACEDESC lpDDSurfaceDesc;
00777   LPDDRAWI_DDRAWSURFACE_LCL *lplpSList;
00778   DWORD dwSCnt;
00779   HRESULT ddRVal;
00780   LPDDHAL_CREATESURFACE CreateSurface;
00781 } DDHAL_CREATESURFACEDATA;
00782 
00783 typedef struct _DDHAL_CANCREATESURFACEDATA {
00784   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00785   LPDDSURFACEDESC lpDDSurfaceDesc;
00786   DWORD bIsDifferentPixelFormat;
00787   HRESULT ddRVal;
00788   LPDDHAL_CANCREATESURFACE CanCreateSurface;
00789 } DDHAL_CANCREATESURFACEDATA;
00790 
00791 typedef struct _DDHAL_CREATEPALETTEDATA {
00792   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00793   LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
00794   LPPALETTEENTRY lpColorTable;
00795   HRESULT ddRVal;
00796   LPDDHAL_CREATEPALETTE CreatePalette;
00797   BOOL is_excl;
00798 } DDHAL_CREATEPALETTEDATA;
00799 
00800 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA {
00801   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00802   DWORD dwEnterExcl;
00803   DWORD dwReserved;
00804   HRESULT ddRVal;
00805   LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode;
00806 } DDHAL_SETEXCLUSIVEMODEDATA;
00807 
00808 /* surfaces */
00809 typedef struct _DDHAL_DESTROYSURFACEDATA {
00810   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00811   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
00812   HRESULT ddRVal;
00813   LPDDHALSURFCB_DESTROYSURFACE DestroySurface;
00814 } DDHAL_DESTROYSURFACEDATA;
00815 
00816 typedef struct _DDHAL_FLIPDATA {
00817   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00818   LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
00819   LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
00820   DWORD dwFlags;
00821   HRESULT ddRVal;
00822   LPDDHALSURFCB_FLIP Flip;
00823   LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft;
00824   LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft;
00825 } DDHAL_FLIPDATA;
00826 
00827 typedef struct _DDHAL_LOCKDATA {
00828   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00829   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
00830   DWORD bHasRect;
00831   RECTL rArea;
00832   LPVOID lpSurfData;
00833   HRESULT ddRVal;
00834   LPDDHALSURFCB_LOCK Lock;
00835   DWORD dwFlags;
00836 } DDHAL_LOCKDATA;
00837 
00838 typedef struct _DDHAL_UNLOCKDATA {
00839   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00840   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
00841   HRESULT ddRVal;
00842   LPDDHALSURFCB_UNLOCK Unlock;
00843 } DDHAL_UNLOCKDATA;
00844 
00845 typedef struct _DDHAL_BLTDATA {
00846   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00847   LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
00848   RECTL rDest;
00849   LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
00850   RECTL rSrc;
00851   DWORD dwFlags;
00852   DWORD dwROPFlags;
00853   DDBLTFX bltFX;
00854   HRESULT ddRVal;
00855   LPDDHALSURFCB_BLT Blt;
00856   BOOL IsClipped;
00857   RECTL rOrigDest;
00858   RECTL rOrigSrc;
00859   DWORD dwRectCnt;
00860   LPRECT prDestRects;
00861 } DDHAL_BLTDATA;
00862 
00863 typedef struct _DDHAL_SETPALETTEDATA {
00864   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00865   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
00866   LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
00867   HRESULT ddRVal;
00868   LPDDHALSURFCB_SETPALETTE SetPalette;
00869   BOOL Attach;
00870 } DDHAL_SETPALETTEDATA;
00871 
00872 /* palettes */
00873 typedef struct _DDHAL_DESTROYPALETTEDATA {
00874   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00875   LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
00876   HRESULT ddRVal;
00877   LPDDHALPALCB_DESTROYPALETTE DestroyPalette;
00878 } DDHAL_DESTROYPALETTEDATA;
00879 
00880 typedef struct _DDHAL_SETENTRIESDATA {
00881   LPDDRAWI_DIRECTDRAW_GBL lpDD;
00882   LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette;
00883   DWORD dwBase;
00884   DWORD dwNumEntries;
00885   LPPALETTEENTRY lpEntries;
00886   HRESULT ddRVal;
00887   LPDDHALPALCB_SETENTRIES SetEntries;
00888 } DDHAL_SETENTRIESDATA;
00889 
00890 typedef struct _DDHAL_CANCREATEVPORTDATA {
00891   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00892   LPDDVIDEOPORTDESC lpDDVideoPortDesc;
00893   HRESULT ddRVal;
00894   LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;
00895 } DDHAL_CANCREATEVPORTDATA;
00896 
00897 typedef struct _DDHAL_CREATEVPORTDATA {
00898   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00899   LPDDVIDEOPORTDESC lpDDVideoPortDesc;
00900   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00901   HRESULT ddRVal;
00902   LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort;
00903 } DDHAL_CREATEVPORTDATA;
00904 
00905 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA {
00906   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00907   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00908   LPDDPIXELFORMAT lpddpfFormat;
00909   DWORD dwWidth;
00910   DWORD dwHeight;
00911   DWORD dwFlags;
00912   LPDDVIDEOPORTBANDWIDTH lpBandwidth;
00913   HRESULT ddRVal;
00914   LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth;
00915 } DDHAL_GETVPORTBANDWIDTHDATA;
00916 
00917 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA {
00918   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00919   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00920   DWORD dwFlags;
00921   LPDDPIXELFORMAT lpddpfFormat;
00922   DWORD dwNumFormats;
00923   HRESULT ddRVal;
00924   LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;
00925 } DDHAL_GETVPORTINPUTFORMATDATA;
00926 
00927 typedef struct _DDHAL_GETVPORTFIELDDATA {
00928   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00929   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00930   BOOL bField;
00931   HRESULT ddRVal;
00932   LPDDHALVPORTCB_GETFIELD GetVideoPortField;
00933 } DDHAL_GETVPORTFIELDDATA;
00934 
00935 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA {
00936   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00937   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00938   DWORD dwFlags;
00939   LPDDPIXELFORMAT lpddpfInputFormat;
00940   LPDDPIXELFORMAT lpddpfOutputFormats;
00941   DWORD dwNumFormats;
00942   HRESULT ddRVal;
00943   LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;
00944 } DDHAL_GETVPORTOUTPUTFORMATDATA;
00945 
00946 typedef struct _DDHAL_GETVPORTLINEDATA {
00947   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00948   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00949   DWORD dwLine;
00950   HRESULT ddRVal;
00951   LPDDHALVPORTCB_GETLINE GetVideoPortLine;
00952 } DDHAL_GETVPORTLINEDATA;
00953 
00954 typedef struct _DDHAL_DESTROYVPORTDATA {
00955   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00956   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00957   HRESULT ddRVal;
00958   LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort;
00959 } DDHAL_DESTROYVPORTDATA;
00960 
00961 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA {
00962   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00963   FLATPTR fpSurface;
00964   HRESULT ddRVal;
00965   LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;
00966 } DDHAL_GETVPORTFLIPSTATUSDATA;
00967 
00968 typedef struct _DDHAL_UPDATEVPORTDATA {
00969   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00970   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00971   LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface;
00972   LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface;
00973   LPDDVIDEOPORTINFO lpVideoInfo;
00974   DWORD dwFlags;
00975   DWORD dwNumAutoflip;
00976   DWORD dwNumVBIAutoflip;
00977   HRESULT ddRVal;
00978   LPDDHALVPORTCB_UPDATE UpdateVideoPort;
00979 } DDHAL_UPDATEVPORTDATA;
00980 
00981 typedef struct _DDHAL_WAITFORVPORTSYNCDATA {
00982   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00983   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00984   DWORD dwFlags;
00985   DWORD dwLine;
00986   DWORD dwTimeOut;
00987   HRESULT ddRVal;
00988   LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync;
00989 } DDHAL_WAITFORVPORTSYNCDATA;
00990 
00991 typedef struct _DDHAL_GETVPORTSIGNALDATA {
00992   LPDDRAWI_DIRECTDRAW_LCL lpDD;
00993   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
00994   DWORD dwStatus;
00995   HRESULT ddRVal;
00996   LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;
00997 } DDHAL_GETVPORTSIGNALDATA;
00998 
00999 typedef struct _DDHAL_VPORTCOLORDATA {
01000   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01001   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
01002   DWORD dwFlags;
01003   LPDDCOLORCONTROL lpColorData;
01004   HRESULT ddRVal;
01005   LPDDHALVPORTCB_COLORCONTROL ColorControl;
01006 } DDHAL_VPORTCOLORDATA;
01007 
01008 typedef struct _DDHAL_FLIPVPORTDATA {
01009   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01010   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
01011   LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr;
01012   LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg;
01013   HRESULT ddRVal;
01014   LPDDHALVPORTCB_FLIP FlipVideoPort;
01015 } DDHAL_FLIPVPORTDATA;
01016 
01017 typedef struct _DDHAL_GETVPORTCONNECTDATA {
01018   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01019   DWORD dwPortId;
01020   LPDDVIDEOPORTCONNECT lpConnect;
01021   DWORD dwNumEntries;
01022   HRESULT ddRVal;
01023   LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;
01024 } DDHAL_GETVPORTCONNECTDATA;
01025 
01026 typedef struct _DDHAL_SYNCSURFACEDATA {
01027   DWORD dwSize;
01028   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01029   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01030   DWORD dwSurfaceOffset;
01031   ULONG_PTR fpLockPtr;
01032   LONG lPitch;
01033   DWORD dwOverlayOffset;
01034   DWORD dwOverlaySrcWidth;
01035   DWORD dwOverlaySrcHeight;
01036   DWORD dwOverlayDestWidth;
01037   DWORD dwOverlayDestHeight;
01038   ULONG_PTR dwDriverReserved1;
01039   ULONG_PTR dwDriverReserved2;
01040   ULONG_PTR dwDriverReserved3;
01041   HRESULT ddRVal;
01042 } DDHAL_SYNCSURFACEDATA;
01043 
01044 typedef struct _DDHAL_SYNCVIDEOPORTDATA {
01045   DWORD dwSize;
01046   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01047   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
01048   DWORD dwOriginOffset;
01049   DWORD dwHeight;
01050   DWORD dwVBIHeight;
01051   ULONG_PTR dwDriverReserved1;
01052   ULONG_PTR dwDriverReserved2;
01053   ULONG_PTR dwDriverReserved3;
01054   HRESULT ddRVal;
01055 } DDHAL_SYNCVIDEOPORTDATA;
01056 
01057 typedef struct _DDHAL_DESTROYDDLOCALDATA {
01058   DWORD dwFlags;
01059   LPDDRAWI_DIRECTDRAW_LCL pDDLcl;
01060   HRESULT ddRVal;
01061 } DDHAL_DESTROYDDLOCALDATA;
01062 
01063 typedef struct _DDHAL_CREATESURFACEEXDATA {
01064   DWORD dwFlags;
01065   LPDDRAWI_DIRECTDRAW_LCL lpDDLcl;
01066   LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl;
01067   HRESULT ddRVal;
01068 } DDHAL_CREATESURFACEEXDATA;
01069 
01070 typedef struct _DDHAL_GETHEAPALIGNMENTDATA {
01071   ULONG_PTR dwInstance;
01072   DWORD dwHeap;
01073   HRESULT ddRVal;
01074   LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment;
01075   HEAPALIGNMENT Alignment;
01076 } DDHAL_GETHEAPALIGNMENTDATA;
01077 
01078 typedef struct _DDMORESURFACECAPS {
01079   DWORD dwSize;
01080   DDSCAPSEX ddsCapsMore;
01081   struct tagExtendedHeapRestrictions {
01082     DDSCAPSEX ddsCapsEx;
01083     DDSCAPSEX ddsCapsExAlt;
01084   } ddsExtendedHeapRestrictions[1];
01085 } DDMORESURFACECAPS, *LPDDMORESURFACECAPS;
01086 
01087 typedef struct _DDSTEREOMODE {
01088   DWORD dwSize;
01089   DWORD dwHeight;
01090   DWORD dwWidth;
01091   DWORD dwBpp;
01092   DWORD dwRefreshRate;
01093   BOOL bSupported;
01094 } DDSTEREOMODE, *LPDDSTEREOMODE;
01095 
01096 /*****************************************************************************
01097  * high-level ddraw implementation structures
01098  */
01099 typedef struct _IUNKNOWN_LIST {
01100   struct _IUNKNOWN_LIST *lpLink;
01101   LPGUID lpGuid;
01102 #ifndef _NO_COM
01103   IUnknown *lpIUnknown;
01104 #else
01105   LPVOID lpIUnknown;
01106 #endif /* _NO_COM */
01107 } IUNKNOWN_LIST, *LPIUNKNOWN_LIST;
01108 
01109 typedef struct _PROCESS_LIST {
01110   struct _PROCESS_LIST *lpLink;
01111   DWORD dwProcessId;
01112   DWORD dwRefCnt;
01113   DWORD dwAlphaDepth;
01114   DWORD dwZDepth;
01115 } PROCESS_LIST, *LPPROCESS_LIST;
01116 
01117 typedef struct _ATTACHLIST {
01118   DWORD dwFlags;
01119   struct _ATTACHLIST *lpLink;
01120   LPDDRAWI_DDRAWSURFACE_LCL lpAttached;
01121   LPDDRAWI_DDRAWSURFACE_INT lpIAttached;
01122 } ATTACHLIST, *LPATTACHLIST;
01123 
01124 #define DDAL_IMPLICIT 0x00000001
01125 
01126 typedef struct _ACCESSRECTLIST {
01127   struct _ACCESSRECTLIST *lpLink;
01128   RECT rDest;
01129   LPDDRAWI_DIRECTDRAW_LCL lpOwner;
01130   LPVOID lpSurfaceData;
01131   DWORD dwFlags;
01132   LPHEAPALIASINFO lpHeapAliasInfo;
01133 } ACCESSRECTLIST, *LPACCESSRECTLIST;
01134 
01135 #define ACCESSRECT_VRAMSTYLE           0x00000001
01136 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002
01137 #define ACCESSRECT_BROKEN              0x00000004
01138 
01139 typedef struct _DBLNODE {
01140   struct _DBLNODE *next;
01141   struct _DBLNODE *prev;
01142   LPDDRAWI_DDRAWSURFACE_LCL object;
01143   LPDDRAWI_DDRAWSURFACE_INT object_int;
01144 } DBLNODE, *LPDBLNODE;
01145 
01146 typedef struct _DDRAWI_DIRECTDRAW_INT {
01147   LPVOID lpVtbl;
01148   LPDDRAWI_DIRECTDRAW_LCL lpLcl;
01149   LPDDRAWI_DIRECTDRAW_INT lpLink;
01150   DWORD dwIntRefCnt;
01151 } DDRAWI_DIRECTDRAW_INT;
01152 
01153 typedef struct _DDRAWI_DIRECTDRAW_LCL {
01154   DWORD lpDDMore;
01155   LPDDRAWI_DIRECTDRAW_GBL lpGbl;
01156   DWORD dwUnused0;
01157   DWORD dwLocalFlags;
01158   DWORD dwLocalRefCnt;
01159   DWORD dwProcessId;
01160 #ifndef _NO_COM
01161   IUnknown *pUnkOuter;
01162 #else
01163   PVOID pUnkOuter;
01164 #endif
01165   DWORD dwObsolete1;
01166   ULONG_PTR hWnd;
01167   ULONG_PTR hDC;
01168   DWORD dwErrorMode;
01169   LPDDRAWI_DDRAWSURFACE_INT lpPrimary;
01170   LPDDRAWI_DDRAWSURFACE_INT lpCB;
01171   DWORD dwPreferredMode;
01172   /* DirectX 2 */
01173   HINSTANCE hD3DInstance;
01174 #ifndef _NO_COM
01175   IUnknown *pD3DIUnknown;
01176 #else
01177   PVOID pD3DIUnknown;
01178 #endif
01179   LPDDHAL_CALLBACKS lpDDCB;
01180   ULONG_PTR hDDVxd;
01181   /* DirectX 5.0 */
01182   DWORD dwAppHackFlags;
01183   /* DirectX 5.0A */
01184   ULONG_PTR hFocusWnd;
01185   DWORD dwHotTracking;
01186   DWORD dwIMEState;
01187   /* DirectX 6.0 */
01188   ULONG_PTR hWndPopup;
01189   ULONG_PTR hDD;
01190   ULONG_PTR hGammaCalibrator;
01191   LPDDGAMMACALIBRATORPROC lpGammaCalibrator;
01192 } DDRAWI_DIRECTDRAW_LCL;
01193 
01194 #define DDRAWILCL_HASEXCLUSIVEMODE    0x00000001
01195 #define DDRAWILCL_ISFULLSCREEN        0x00000002
01196 #define DDRAWILCL_SETCOOPCALLED       0x00000004
01197 #define DDRAWILCL_ACTIVEYES           0x00000008
01198 #define DDRAWILCL_ACTIVENO            0x00000010
01199 #define DDRAWILCL_HOOKEDHWND          0x00000020
01200 #define DDRAWILCL_ALLOWMODEX          0x00000040
01201 #define DDRAWILCL_V1SCLBEHAVIOUR      0x00000080
01202 #define DDRAWILCL_MODEHASBEENCHANGED  0x00000100
01203 #define DDRAWILCL_CREATEDWINDOW       0x00000200
01204 #define DDRAWILCL_DIRTYDC             0x00000400
01205 #define DDRAWILCL_DISABLEINACTIVATE   0x00000800
01206 #define DDRAWILCL_CURSORCLIPPED       0x00001000
01207 #define DDRAWILCL_EXPLICITMONITOR     0x00002000
01208 #define DDRAWILCL_MULTITHREADED       0x00004000
01209 #define DDRAWILCL_FPUSETUP            0x00008000
01210 #define DDRAWILCL_POWEREDDOWN         0x00010000
01211 #define DDRAWILCL_DIRECTDRAW7         0x00020000
01212 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000
01213 #define DDRAWILCL_FPUPRESERVE         0x00080000
01214 #define DDRAWILCL_DX8DRIVER           0x00100000
01215 #define DDRAWILCL_DIRECTDRAW8         0x00200000
01216 
01217 typedef struct _DDRAWI_DIRECTDRAW_GBL {
01218   DWORD dwRefCnt;
01219   DWORD dwFlags;
01220   FLATPTR fpPrimaryOrig;
01221   DDCORECAPS ddCaps;
01222   DWORD dwInternal1;
01223   DWORD dwUnused1[9];
01224   LPDDHAL_CALLBACKS lpDDCBtmp;
01225   LPDDRAWI_DDRAWSURFACE_INT dsList;
01226   LPDDRAWI_DDRAWPALETTE_INT palList;
01227   LPDDRAWI_DDRAWCLIPPER_INT clipperList;
01228   LPDDRAWI_DIRECTDRAW_GBL lp16DD;
01229   DWORD dwMaxOverlays;
01230   DWORD dwCurrOverlays;
01231   DWORD dwMonitorFrequency;
01232   DDCORECAPS ddHELCaps;
01233   DWORD dwUnused2[50];
01234   DDCOLORKEY ddckCKDestOverlay;
01235   DDCOLORKEY ddckCKSrcOverlay;
01236   VIDMEMINFO vmiData;
01237   LPVOID lpDriverHandle;
01238   LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner;
01239   DWORD dwModeIndex;
01240   DWORD dwModeIndexOrig;
01241   DWORD dwNumFourCC;
01242   LPDWORD lpdwFourCC;
01243   DWORD dwNumModes;
01244   LPDDHALMODEINFO lpModeInfo;
01245   PROCESS_LIST plProcessList;
01246   DWORD dwSurfaceLockCount;
01247   DWORD dwAliasedLockCnt;
01248   ULONG_PTR dwReserved3;
01249   ULONG_PTR hDD;
01250   char cObsolete[12];
01251   DWORD dwReserved1;
01252   DWORD dwReserved2;
01253   DBLNODE dbnOverlayRoot;
01254   volatile LPWORD lpwPDeviceFlags;
01255   DWORD dwPDevice;
01256   DWORD dwWin16LockCnt;
01257   DWORD dwUnused3;
01258   DWORD hInstance;
01259   DWORD dwEvent16;
01260   DWORD dwSaveNumModes;
01261   /* DirectX 2 */
01262   ULONG_PTR lpD3DGlobalDriverData;
01263   ULONG_PTR lpD3DHALCallbacks;
01264   DDCORECAPS ddBothCaps;
01265   /* DirectX 5.0 */
01266   LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
01267   LPDDRAWI_DDVIDEOPORT_INT dvpList;
01268   ULONG_PTR lpD3DHALCallbacks2;
01269   RECT rectDevice;
01270   DWORD cMonitors;
01271   LPVOID gpbmiSrc;
01272   LPVOID gpbmiDest;
01273   LPHEAPALIASINFO phaiHeapAliases;
01274   ULONG_PTR hKernelHandle;
01275   ULONG_PTR pfnNotifyProc;
01276   LPDDKERNELCAPS lpDDKernelCaps;
01277   LPDDNONLOCALVIDMEMCAPS lpddNLVCaps;
01278   LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps;
01279   LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps;
01280   ULONG_PTR lpD3DExtendedCaps;
01281   /* DirectX 5.0A */
01282   DWORD dwDOSBoxEvent;
01283   RECT rectDesktop;
01284   char cDriverName[MAX_DRIVER_NAME];
01285   /* DirectX 6.0 */
01286   ULONG_PTR lpD3DHALCallbacks3;
01287   DWORD dwNumZPixelFormats;
01288   LPDDPIXELFORMAT lpZPixelFormats;
01289   LPDDRAWI_DDMOTIONCOMP_INT mcList;
01290   DWORD hDDVxd;
01291   DDSCAPSEX ddsCapsMore;
01292 } DDRAWI_DIRECTDRAW_GBL;
01293 
01294 #define DDRAWI_xxxxxxxxx1              0x00000001
01295 #define DDRAWI_xxxxxxxxx2              0x00000002
01296 #define DDRAWI_VIRTUALDESKTOP          0x00000008
01297 #define DDRAWI_MODEX                   0x00000010
01298 #define DDRAWI_DISPLAYDRV              0x00000020
01299 #define DDRAWI_FULLSCREEN              0x00000040
01300 #define DDRAWI_MODECHANGED             0x00000080
01301 #define DDRAWI_NOHARDWARE              0x00000100
01302 #define DDRAWI_PALETTEINIT             0x00000200
01303 #define DDRAWI_NOEMULATION             0x00000400
01304 #define DDRAWI_HASCKEYDESTOVERLAY      0x00000800
01305 #define DDRAWI_HASCKEYSRCOVERLAY       0x00001000
01306 #define DDRAWI_HASGDIPALETTE           0x00002000
01307 #define DDRAWI_EMULATIONINITIALIZED    0x00004000
01308 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000
01309 #define DDRAWI_MODEXILLEGAL            0x00010000
01310 #define DDRAWI_FLIPPEDTOGDI            0x00020000
01311 #define DDRAWI_NEEDSWIN16FORVRAMLOCK   0x00040000
01312 #define DDRAWI_PDEVICEVRAMBITCLEARED   0x00080000
01313 #define DDRAWI_STANDARDVGA             0x00100000
01314 #define DDRAWI_EXTENDEDALIGNMENT       0x00200000
01315 #define DDRAWI_CHANGINGMODE            0x00400000
01316 #define DDRAWI_GDIDRV                  0x00800000
01317 #define DDRAWI_ATTACHEDTODESKTOP       0x01000000
01318 #define DDRAWI_UMODELOADED             0x02000000
01319 #define DDRAWI_DDRAWDATANOTFETCHED     0x04000000
01320 #define DDRAWI_SECONDARYDRIVERLOADED   0x08000000
01321 #define DDRAWI_TESTINGMODES            0x10000000
01322 #define DDRAWI_DRIVERINFO2             0x20000000
01323 #define DDRAWI_BADPDEV                 0x40000000
01324 
01325 /* surfaces */
01326 typedef struct _DDRAWI_DDRAWSURFACE_INT {
01327   LPVOID lpVtbl;
01328   LPDDRAWI_DDRAWSURFACE_LCL lpLcl;
01329   LPDDRAWI_DDRAWSURFACE_INT lpLink;
01330   DWORD dwIntRefCnt;
01331 } DDRAWI_DDRAWSURFACE_INT;
01332 
01333 typedef struct _DDRAWI_DDRAWSURFACE_GBL {
01334   DWORD dwRefCnt;
01335   DWORD dwGlobalFlags;
01336   __GNU_EXTENSION union {
01337     LPACCESSRECTLIST lpRectList;
01338     DWORD dwBlockSizeY;
01339     LONG lSlicePitch;
01340   };
01341   __GNU_EXTENSION union {
01342     LPVMEMHEAP lpVidMemHeap;
01343     DWORD dwBlockSizeX;
01344   };
01345   __GNU_EXTENSION union {
01346     LPDDRAWI_DIRECTDRAW_GBL lpDD;
01347     LPVOID lpDDHandle;
01348   };
01349   FLATPTR fpVidMem;
01350   __GNU_EXTENSION union {
01351     LONG lPitch;
01352     DWORD dwLinearSize;
01353   };
01354   WORD wHeight;
01355   WORD wWidth;
01356   DWORD dwUsageCount;
01357   ULONG_PTR dwReserved1;
01358   DDPIXELFORMAT ddpfSurface;
01359 } DDRAWI_DDRAWSURFACE_GBL;
01360 
01361 #define DDRAWISURFGBL_MEMFREE                    0x00000001L
01362 #define DDRAWISURFGBL_SYSMEMREQUESTED            0x00000002L
01363 #define DDRAWISURFGBL_ISGDISURFACE               0x00000004L
01364 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP           0x00000008L
01365 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK    0x00000010L
01366 #define DDRAWISURFGBL_LOCKVRAMSTYLE              0x00000020L
01367 #define DDRAWISURFGBL_LOCKBROKEN                 0x00000040L
01368 #define DDRAWISURFGBL_IMPLICITHANDLE             0x00000080L
01369 #define DDRAWISURFGBL_ISCLIENTMEM                0x00000100L
01370 #define DDRAWISURFGBL_HARDWAREOPSOURCE           0x00000200L
01371 #define DDRAWISURFGBL_HARDWAREOPDEST             0x00000400L
01372 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST)
01373 #define DDRAWISURFGBL_VPORTINTERLEAVED           0x00000800L
01374 #define DDRAWISURFGBL_VPORTDATA                  0x00001000L
01375 #define DDRAWISURFGBL_LATEALLOCATELINEAR         0x00002000L
01376 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER        0x00004000L
01377 #define DDRAWISURFGBL_FASTLOCKHELD               0x00008000L
01378 #define DDRAWISURFGBL_READONLYLOCKHELD           0x00010000L
01379 #define DDRAWISURFGBL_DX8SURFACE                 0x00080000L
01380 #define DDRAWISURFGBL_DDHELDONTFREE              0x00100000L
01381 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED         0x00200000L
01382 #define DDRAWISURFGBL_RESERVED0                  0x80000000L // Reserved flag
01383 
01384 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE {
01385   DWORD dwSize;
01386   __GNU_EXTENSION union {
01387     DWORD dwPhysicalPageTable;
01388     FLATPTR fpPhysicalVidMem;
01389   };
01390   LPDWORD pPageTable;
01391   DWORD cPages;
01392   ULONG_PTR dwSavedDCContext;
01393   FLATPTR fpAliasedVidMem;
01394   ULONG_PTR dwDriverReserved;
01395   ULONG_PTR dwHELReserved;
01396   DWORD cPageUnlocks;
01397   ULONG_PTR hKernelSurface;
01398   DWORD dwKernelRefCnt;
01399   LPDDCOLORCONTROL lpColorInfo;
01400   FLATPTR fpNTAlias;
01401   DWORD dwContentsStamp;
01402   LPVOID lpvUnswappedDriverReserved;
01403   LPVOID lpDDRAWReserved2;
01404   DWORD dwDDRAWReserved1;
01405   DWORD dwDDRAWReserved2;
01406   FLATPTR fpAliasOfVidMem;
01407 } DDRAWI_DDRAWSURFACE_GBL_MORE;
01408 
01409 /* the MS version of this macro was somewhat obfuscated and unreadable
01410  * (possibly because of mediocre MS coders)... so I simplified it...
01411  * (and so I commit no copyright violations either, hah) */
01412 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \
01413   (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1))
01414 
01415 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \
01416   ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem )
01417 
01418 typedef struct  _DISPLAYMODEINFO {
01419   WORD wWidth;
01420   WORD wHeight;
01421   BYTE wBPP;
01422   BYTE wMonitorsAttachedToDesktop;
01423   WORD wRefreshRate;
01424 } DISPLAYMODEINFO, *LPDISPLAYMODEINFO;
01425 
01426 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO)))
01427 
01428 typedef struct _DDRAWI_DDRAWSURFACE_MORE {
01429   DWORD dwSize;
01430   IUNKNOWN_LIST *lpIUnknowns;
01431   LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
01432   DWORD dwPageLockCount;
01433   DWORD dwBytesAllocated;
01434   LPDDRAWI_DIRECTDRAW_INT lpDD_int;
01435   DWORD dwMipMapCount;
01436   LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper;
01437   /* DirectX 5.0 */
01438   LPHEAPALIASINFO lpHeapAliasInfo;
01439   DWORD dwOverlayFlags;
01440   VOID *rgjunc;
01441   LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort;
01442   LPDDOVERLAYFX lpddOverlayFX;
01443   DDSCAPSEX ddsCapsEx;
01444   DWORD dwTextureStage;
01445   LPVOID lpDDRAWReserved;
01446   LPVOID lpDDRAWReserved2;
01447   LPVOID lpDDrawReserved3;
01448   DWORD dwDDrawReserved4;
01449   LPVOID lpDDrawReserved5;
01450   LPDWORD lpGammaRamp;
01451   LPDWORD lpOriginalGammaRamp;
01452   LPVOID lpDDrawReserved6;
01453 # ifndef WIN95
01454   DISPLAYMODEINFO dmiDDrawReserved7;
01455 # endif
01456   DWORD dwSurfaceHandle;
01457   DWORD qwDDrawReserved8[2];
01458   LPVOID lpDDrawReserved9;
01459   DWORD cSurfaces;
01460   LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2;
01461   LPDDRAWI_DDRAWSURFACE_LCL *slist;
01462   DWORD dwFVF;
01463   LPVOID lpVB;
01464 } DDRAWI_DDRAWSURFACE_MORE;
01465 
01466 typedef struct _DDRAWI_DDRAWSURFACE_LCL {
01467   LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore;
01468   LPDDRAWI_DDRAWSURFACE_GBL lpGbl;
01469   ULONG_PTR hDDSurface;
01470   LPATTACHLIST lpAttachList;
01471   LPATTACHLIST lpAttachListFrom;
01472   DWORD dwLocalRefCnt;
01473   DWORD dwProcessId;
01474   DWORD dwFlags;
01475   DDSCAPS ddsCaps;
01476   __GNU_EXTENSION union {
01477     LPDDRAWI_DDRAWPALETTE_INT lpDDPalette;
01478     LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette;
01479   };
01480   __GNU_EXTENSION union {
01481     LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper;
01482     LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper;
01483   };
01484   DWORD dwModeCreatedIn;
01485   DWORD dwBackBufferCount;
01486   DDCOLORKEY ddckCKDestBlt;
01487   DDCOLORKEY ddckCKSrcBlt;
01488   ULONG_PTR hDC;
01489   ULONG_PTR dwReserved1;
01490   DDCOLORKEY ddckCKSrcOverlay;
01491   DDCOLORKEY ddckCKDestOverlay;
01492   LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying;
01493   DBLNODE dbnOverlayNode;
01494   RECT rcOverlaySrc;
01495   RECT rcOverlayDest;
01496   DWORD dwClrXparent;
01497   DWORD dwAlpha;
01498   LONG lOverlayX;
01499   LONG lOverlayY;
01500 } DDRAWI_DDRAWSURFACE_LCL;
01501 
01502 #define DDRAWISURF_ATTACHED           0x00000001L
01503 #define DDRAWISURF_IMPLICITCREATE     0x00000002L
01504 #define DDRAWISURF_ISFREE             0x00000004L
01505 #define DDRAWISURF_ATTACHED_FROM      0x00000008L
01506 #define DDRAWISURF_IMPLICITROOT       0x00000010L
01507 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L
01508 #define DDRAWISURF_DATAISALIASED      0x00000040L
01509 #define DDRAWISURF_HASDC              0x00000080L
01510 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L
01511 #define DDRAWISURF_HASCKEYDESTBLT     0x00000200L
01512 #define DDRAWISURF_HASCKEYSRCOVERLAY  0x00000400L
01513 #define DDRAWISURF_HASCKEYSRCBLT      0x00000800L
01514 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L
01515 #define DDRAWISURF_HASPIXELFORMAT     0x00002000L
01516 #define DDRAWISURF_HASOVERLAYDATA     0x00004000L
01517 #define DDRAWISURF_SETGAMMA           0x00008000L
01518 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L
01519 #define DDRAWISURF_SW_CKEYDESTBLT     0x00020000L
01520 #define DDRAWISURF_SW_CKEYSRCOVERLAY  0x00040000L
01521 #define DDRAWISURF_SW_CKEYSRCBLT      0x00080000L
01522 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L
01523 #define DDRAWISURF_HW_CKEYDESTBLT     0x00200000L
01524 #define DDRAWISURF_HW_CKEYSRCOVERLAY  0x00400000L
01525 #define DDRAWISURF_HW_CKEYSRCBLT      0x00800000L
01526 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L
01527 #define DDRAWISURF_HELCB              0x02000000L
01528 #define DDRAWISURF_FRONTBUFFER        0x04000000L
01529 #define DDRAWISURF_BACKBUFFER         0x08000000L
01530 #define DDRAWISURF_INVALID            0x10000000L
01531 #define DDRAWISURF_DCIBUSY            0x20000000L
01532 #define DDRAWISURF_GETDCNULL          0x40000000L
01533 #define DDRAWISURF_STEREOSURFACELEFT  0x20000000L
01534 #define DDRAWISURF_DRIVERMANAGED      0x40000000L
01535 #define DDRAWISURF_DCILOCK            0x80000000L
01536 
01537 /* palettes */
01538 typedef struct _DDRAWI_DDRAWPALETTE_INT {
01539   LPVOID lpVtbl;
01540   LPDDRAWI_DDRAWPALETTE_LCL lpLcl;
01541   LPDDRAWI_DDRAWPALETTE_INT lpLink;
01542   DWORD dwIntRefCnt;
01543 } DDRAWI_DDRAWPALETTE_INT;
01544 
01545 typedef struct _DDRAWI_DDRAWPALETTE_GBL {
01546   DWORD dwRefCnt;
01547   DWORD dwFlags;
01548   LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
01549   DWORD dwProcessId;
01550   LPPALETTEENTRY lpColorTable;
01551   __GNU_EXTENSION union {
01552     ULONG_PTR dwReserved1;
01553     HPALETTE hHELGDIPalette;
01554   };
01555   DWORD dwDriverReserved;
01556   DWORD dwContentsStamp;
01557   DWORD dwSaveStamp;
01558   DWORD dwHandle;
01559 } DDRAWI_DDRAWPALETTE_GBL;
01560 
01561 #define DDRAWIPAL_256           0x00000001
01562 #define DDRAWIPAL_16            0x00000002
01563 #define DDRAWIPAL_GDI           0x00000004
01564 #define DDRAWIPAL_STORED_8      0x00000008
01565 #define DDRAWIPAL_STORED_16     0x00000010
01566 #define DDRAWIPAL_STORED_24     0x00000020
01567 #define DDRAWIPAL_EXCLUSIVE     0x00000040
01568 #define DDRAWIPAL_INHEL         0x00000080
01569 #define DDRAWIPAL_DIRTY         0x00000100
01570 #define DDRAWIPAL_ALLOW256      0x00000200
01571 #define DDRAWIPAL_4             0x00000400
01572 #define DDRAWIPAL_2             0x00000800
01573 #define DDRAWIPAL_STORED_8INDEX 0x00001000
01574 #define DDRAWIPAL_ALPHA         0x00002000
01575 
01576 #define D3DFORMAT_OP_TEXTURE                              0x00000001L
01577 #define D3DFORMAT_OP_VOLUMETEXTURE                        0x00000002L
01578 #define D3DFORMAT_OP_CUBETEXTURE                          0x00000004L
01579 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET               0x00000008L
01580 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET             0x00000010L
01581 #define D3DFORMAT_OP_ZSTENCIL                             0x00000040L
01582 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH  0x00000080L
01583 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
01584 #define D3DFORMAT_OP_DISPLAYMODE                          0x00000400L
01585 #define D3DFORMAT_OP_3DACCELERATION                       0x00000800L
01586 #define D3DFORMAT_OP_PIXELSIZE                            0x00001000L
01587 #define D3DFORMAT_OP_CONVERT_TO_ARGB                      0x00002000L
01588 #define D3DFORMAT_OP_OFFSCREENPLAIN                       0x00004000L
01589 #define D3DFORMAT_OP_SRGBREAD                             0x00008000L
01590 #define D3DFORMAT_OP_BUMPMAP                              0x00010000L
01591 #define D3DFORMAT_OP_NOFILTER                             0x00040000L
01592 #define DDPF_D3DFORMAT                                    0x00200000l
01593 #define DDPF_NOVEL_TEXTURE_FORMAT                         0x00100000l
01594 #define D3DFORMAT_MEMBEROFGROUP_ARGB                      0x00080000L
01595 #define D3DFORMAT_OP_SRGBWRITE                            0x00100000L
01596 #define D3DFORMAT_OP_NOALPHABLEND                         0x00200000L
01597 #define D3DFORMAT_OP_AUTOGENMIPMAP                        0x00400000L
01598 #define D3DFORMAT_OP_VERTEXTEXTURE                        0x00800000L
01599 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP                 0x01000000L
01600 #define DELETED_OK                                        0
01601 #define DELETED_LASTONE                                   1
01602 #define DELETED_NOTFOUND                                  2
01603 #define DDCALLBACKSSIZE_V1                                (offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode))
01604 #define DDCALLBACKSSIZE                                   sizeof( DDHAL_DDCALLBACKS )
01605 #define DDRAWICLIP_WATCHWINDOW                            0x00000001
01606 #define DDRAWICLIP_ISINITIALIZED                          0x00000002
01607 #define DDRAWICLIP_INMASTERSPRITELIST                     0x00000004
01608 #define PFINDEX_UNINITIALIZED                             (0UL)
01609 #define PFINDEX_UNSUPPORTED                               (~0UL)
01610 #define ROP_HAS_SOURCE                                    0x00000001l
01611 #define ROP_HAS_PATTERN                                   0x00000002l
01612 #define ROP_HAS_SOURCEPATTERN                             ROP_HAS_SOURCE | ROP_HAS_PATTERN
01613 #define DDRAWIVPORT_ON                                    0x00000001
01614 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP                     0x00000002
01615 #define DDRAWIVPORT_COLORKEYANDINTERP                     0x00000004
01616 #define DDRAWIVPORT_NOKERNELHANDLES                       0x00000008
01617 #define DDRAWIVPORT_SOFTWARE_BOB                          0x00000010
01618 #define DDRAWIVPORT_VBION                                 0x00000020
01619 #define DDRAWIVPORT_VIDEOON                               0x00000040
01620 #define DDRAWI_GETCOLOR                                   0x0001
01621 #define DDRAWI_SETCOLOR                                   0x0002
01622 #define DDMCQUERY_READ                                    0x00000001
01623 #define DDWAITVB_I_TESTVB                                 0x80000006
01624 
01625 #define DDBLT_ANYALPHA                                           \
01626   (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \
01627    DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE |             \
01628    DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST)
01629 
01630 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \
01631                               DDSCAPS_OVERLAY | DDSCAPS_TEXTURE |              \
01632                               DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP )
01633 
01634 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO)
01635 
01636 #define DDOVER_ANYALPHA                                            \
01637   (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \
01638    DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE |             \
01639    DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST)
01640 
01641 typedef struct _DDRAWI_DDRAWPALETTE_LCL {
01642   DWORD lpPalMore;
01643   LPDDRAWI_DDRAWPALETTE_GBL lpGbl;
01644   ULONG_PTR dwUnused0;
01645   DWORD dwLocalRefCnt;
01646 #ifndef _NO_COM
01647   IUnknown *pUnkOuter;
01648 #else
01649   PVOID pUnkOuter;
01650 #endif
01651   LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
01652   ULONG_PTR dwReserved1;
01653   /* DirectX 6.0 */
01654   ULONG_PTR dwDDRAWReserved1;
01655   ULONG_PTR dwDDRAWReserved2;
01656   ULONG_PTR dwDDRAWReserved3;
01657 } DDRAWI_DDRAWPALETTE_LCL;
01658 
01659 typedef struct _DDMCCOMPBUFFERINFO {
01660   DWORD dwSize;
01661   DWORD dwNumCompBuffers;
01662   DWORD dwWidthToCreate;
01663   DWORD dwHeightToCreate;
01664   DWORD dwBytesToAllocate;
01665   DDSCAPS2 ddCompCaps;
01666   DDPIXELFORMAT ddPixelFormat;
01667 } DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO;
01668 
01669 typedef struct _DDMCBUFFERINFO {
01670   DWORD dwSize;
01671   LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface;
01672   DWORD dwDataOffset;
01673   DWORD dwDataSize;
01674   LPVOID lpPrivate;
01675 } DDMCBUFFERINFO, *LPDDMCBUFFERINFO;
01676 
01677 typedef struct _DDHAL_GETDRIVERSTATEDATA {
01678   DWORD dwFlags;
01679   __GNU_EXTENSION union {
01680     ULONG_PTR dwhContext;
01681   };
01682   LPDWORD lpdwStates;
01683   DWORD dwLength;
01684   HRESULT ddRVal;
01685 } DDHAL_GETDRIVERSTATEDATA;
01686 
01687 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA {
01688   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01689   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01690   LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached;
01691   HRESULT ddRVal;
01692   LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
01693 } DDHAL_ADDATTACHEDSURFACEDATA;
01694 
01695 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA {
01696   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01697   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01698   LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface;
01699   DWORD dwInputDataSize;
01700   LPVOID lpInputData;
01701   DWORD dwOutputDataSize;
01702   LPVOID lpOutputData;
01703   HRESULT ddRVal;
01704   LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame;
01705 } DDHAL_BEGINMOCOMPFRAMEDATA;
01706 
01707 typedef struct _DDHAL_COLORCONTROLDATA {
01708   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01709   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01710   LPDDCOLORCONTROL lpColorData;
01711   DWORD dwFlags;
01712   HRESULT ddRVal;
01713   LPDDHALCOLORCB_COLORCONTROL ColorControl;
01714 } DDHAL_COLORCONTROLDATA;
01715 
01716 typedef struct _DDHAL_CREATEMOCOMPDATA {
01717   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01718   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01719   LPGUID lpGuid;
01720   DWORD dwUncompWidth;
01721   DWORD dwUncompHeight;
01722   DDPIXELFORMAT ddUncompPixelFormat;
01723   LPVOID lpData;
01724   DWORD dwDataSize;
01725   HRESULT ddRVal;
01726   LPDDHALMOCOMPCB_CREATE CreateMoComp;
01727 } DDHAL_CREATEMOCOMPDATA;
01728 
01729 typedef struct _DDHAL_DESTROYMOCOMPDATA {
01730   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01731   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01732   HRESULT ddRVal;
01733   LPDDHALMOCOMPCB_DESTROY DestroyMoComp;
01734 } DDHAL_DESTROYMOCOMPDATA;
01735 
01736 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA {
01737   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01738   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01739   LPVOID lpInputData;
01740   DWORD dwInputDataSize;
01741   HRESULT ddRVal;
01742   LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame;
01743 } DDHAL_ENDMOCOMPFRAMEDATA;
01744 
01745 typedef struct _DDHAL_FLIPTOGDISURFACEDATA {
01746   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01747   DWORD dwToGDI;
01748   DWORD dwReserved;
01749   HRESULT ddRVal;
01750   LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface;
01751 } DDHAL_FLIPTOGDISURFACEDATA;
01752 
01753 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA {
01754   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01755   DDSCAPS DDSCaps;
01756   DWORD dwTotal;
01757   DWORD dwFree;
01758   HRESULT ddRVal;
01759   LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
01760   DDSCAPSEX ddsCapsEx;
01761 } DDHAL_GETAVAILDRIVERMEMORYDATA;
01762 
01763 typedef struct _DDHAL_GETBLTSTATUSDATA {
01764   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01765   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01766   DWORD dwFlags;
01767   HRESULT ddRVal;
01768   LPDDHALSURFCB_GETBLTSTATUS GetBltStatus;
01769 } DDHAL_GETBLTSTATUSDATA;
01770 
01771 typedef struct _DDHAL_GETFLIPSTATUSDATA {
01772   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01773   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01774   DWORD dwFlags;
01775   HRESULT ddRVal;
01776   LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus;
01777 } DDHAL_GETFLIPSTATUSDATA;
01778 
01779 typedef struct _DDHAL_GETINTERNALMOCOMPDATA {
01780   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01781   LPGUID lpGuid;
01782   DWORD dwWidth;
01783   DWORD dwHeight;
01784   DDPIXELFORMAT ddPixelFormat;
01785   DWORD dwScratchMemAlloc;
01786   HRESULT ddRVal;
01787   LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;
01788 } DDHAL_GETINTERNALMOCOMPDATA;
01789 
01790 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA {
01791   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01792   LPGUID lpGuid;
01793   DWORD dwWidth;
01794   DWORD dwHeight;
01795   DDPIXELFORMAT ddPixelFormat;
01796   DWORD dwNumTypesCompBuffs;
01797   LPDDMCCOMPBUFFERINFO lpCompBuffInfo;
01798   HRESULT ddRVal;
01799   LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;
01800 } DDHAL_GETMOCOMPCOMPBUFFDATA;
01801 
01802 typedef struct _DDHAL_GETMOCOMPGUIDSDATA {
01803   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01804   DWORD dwNumGuids;
01805   LPGUID lpGuids;
01806   HRESULT ddRVal;
01807   LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids;
01808 } DDHAL_GETMOCOMPGUIDSDATA;
01809 
01810 typedef struct _DDHAL_GETMOCOMPFORMATSDATA {
01811   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01812   LPGUID lpGuid;
01813   DWORD dwNumFormats;
01814   LPDDPIXELFORMAT lpFormats;
01815   HRESULT ddRVal;
01816   LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats;
01817 } DDHAL_GETMOCOMPFORMATSDATA;
01818 
01819 typedef struct _DDHAL_GETSCANLINEDATA {
01820   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01821   DWORD dwScanLine;
01822   HRESULT ddRVal;
01823   LPDDHAL_GETSCANLINE GetScanLine;
01824 } DDHAL_GETSCANLINEDATA;
01825 
01826 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA {
01827   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01828   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01829   LPDDRAWI_DDRAWSURFACE_LCL lpSurface;
01830   DWORD dwFlags;
01831   HRESULT ddRVal;
01832   LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus;
01833 } DDHAL_QUERYMOCOMPSTATUSDATA;
01834 
01835 typedef struct _DDHAL_RENDERMOCOMPDATA {
01836   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01837   LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp;
01838   DWORD dwNumBuffers;
01839   LPDDMCBUFFERINFO lpBufferInfo;
01840   DWORD dwFunction;
01841   LPVOID lpInputData;
01842   DWORD dwInputDataSize;
01843   LPVOID lpOutputData;
01844   DWORD dwOutputDataSize;
01845   HRESULT ddRVal;
01846   LPDDHALMOCOMPCB_RENDER RenderMoComp;
01847 } DDHAL_RENDERMOCOMPDATA;
01848 
01849 typedef struct _DDHAL_SETCOLORKEYDATA {
01850   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01851   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01852   DWORD dwFlags;
01853   DDCOLORKEY ckNew;
01854   HRESULT ddRVal;
01855   LPDDHALSURFCB_SETCOLORKEY SetColorKey;
01856 } DDHAL_SETCOLORKEYDATA;
01857 
01858 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA {
01859   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01860   LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
01861   LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
01862   LONG lXPos;
01863   LONG lYPos;
01864   HRESULT ddRVal;
01865   LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
01866 } DDHAL_SETOVERLAYPOSITIONDATA;
01867 
01868 typedef struct _DDHAL_UPDATEOVERLAYDATA {
01869   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01870   LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;
01871   RECTL rDest;
01872   LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface;
01873   RECTL rSrc;
01874   DWORD dwFlags;
01875   DDOVERLAYFX overlayFX;
01876   HRESULT ddRVal;
01877   LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay;
01878 } DDHAL_UPDATEOVERLAYDATA;
01879 
01880 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA {
01881   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01882   DWORD dwFlags;
01883   DWORD bIsInVB;
01884   ULONG_PTR hEvent;
01885   HRESULT ddRVal;
01886   LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank;
01887 } DDHAL_WAITFORVERTICALBLANKDATA;
01888 
01889 typedef struct _DDHAL_DRVSETCOLORKEYDATA {
01890   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01891   DWORD dwFlags;
01892   DDCOLORKEY ckNew;
01893   HRESULT ddRVal;
01894   LPDDHAL_SETCOLORKEY SetColorKey;
01895 } DDHAL_DRVSETCOLORKEYDATA;
01896 
01897 typedef struct _DDMONITORINFO {
01898   WORD Manufacturer;
01899   WORD Product;
01900   DWORD SerialNumber;
01901   GUID DeviceIdentifier;
01902   int Mode640x480;
01903   int Mode800x600;
01904   int Mode1024x768;
01905   int Mode1280x1024;
01906   int Mode1600x1200;
01907   int ModeReserved1;
01908   int ModeReserved2;
01909   int ModeReserved3;
01910 } DDMONITORINFO, FAR *LPDDMONITORINFO;
01911 
01912 typedef struct _DDRAWI_DDRAWCLIPPER_INT {
01913   LPVOID lpVtbl;
01914   LPDDRAWI_DDRAWCLIPPER_LCL lpLcl;
01915   LPDDRAWI_DDRAWCLIPPER_INT lpLink;
01916   DWORD dwIntRefCnt;
01917 } DDRAWI_DDRAWCLIPPER_INT;
01918 
01919 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA {
01920   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01921   DWORD dwHeap;
01922   FLATPTR fpGARTLin;
01923   FLATPTR fpGARTDev;
01924   ULONG_PTR ulPolicyMaxBytes;
01925   HRESULT ddRVal;
01926   LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap;
01927 } DDHAL_UPDATENONLOCALHEAPDATA;
01928 
01929 typedef struct _DDHAL_SETCLIPLISTDATA {
01930   LPDDRAWI_DIRECTDRAW_GBL lpDD;
01931   LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface;
01932   HRESULT ddRVal;
01933   LPDDHALSURFCB_SETCLIPLIST SetClipList;
01934 } DDHAL_SETCLIPLISTDATA;
01935 
01936 typedef struct _DDRAWI_DDMOTIONCOMP_LCL {
01937   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01938   GUID guid;
01939   DWORD dwUncompWidth;
01940   DWORD dwUncompHeight;
01941   DDPIXELFORMAT ddUncompPixelFormat;
01942   DWORD dwInternalFlags;
01943   DWORD dwRefCnt;
01944   DWORD dwProcessId;
01945   HANDLE hMoComp;
01946   DWORD dwDriverReserved1;
01947   DWORD dwDriverReserved2;
01948   DWORD dwDriverReserved3;
01949   LPVOID lpDriverReserved1;
01950   LPVOID lpDriverReserved2;
01951   LPVOID lpDriverReserved3;
01952 } DDRAWI_DDMOTIONCOMP_LCL;
01953 
01954 typedef struct _DDRAWI_DDMOTIONCOMP_INT {
01955   LPVOID lpVtbl;
01956   LPDDRAWI_DDMOTIONCOMP_LCL lpLcl;
01957   LPDDRAWI_DDMOTIONCOMP_INT lpLink;
01958   DWORD dwIntRefCnt;
01959 } DDRAWI_DDMOTIONCOMP_INT;
01960 
01961 typedef struct _DDRAWI_DDVIDEOPORT_LCL {
01962   LPDDRAWI_DIRECTDRAW_LCL lpDD;
01963   DDVIDEOPORTDESC ddvpDesc;
01964   DDVIDEOPORTINFO ddvpInfo;
01965   LPDDRAWI_DDRAWSURFACE_INT lpSurface;
01966   LPDDRAWI_DDRAWSURFACE_INT lpVBISurface;
01967   LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts;
01968   DWORD dwNumAutoflip;
01969   DWORD dwProcessID;
01970   DWORD dwStateFlags;
01971   DWORD dwFlags;
01972   DWORD dwRefCnt;
01973   FLATPTR fpLastFlip;
01974   ULONG_PTR dwReserved1;
01975   ULONG_PTR dwReserved2;
01976   HANDLE hDDVideoPort;
01977   DWORD dwNumVBIAutoflip;
01978   LPDDVIDEOPORTDESC lpVBIDesc;
01979   LPDDVIDEOPORTDESC lpVideoDesc;
01980   LPDDVIDEOPORTINFO lpVBIInfo;
01981   LPDDVIDEOPORTINFO lpVideoInfo;
01982   DWORD dwVBIProcessID;
01983   LPDDRAWI_DDVIDEOPORT_INT lpVPNotify;
01984 } DDRAWI_DDVIDEOPORT_LCL;
01985 
01986 typedef struct _DDRAWI_DDVIDEOPORT_INT {
01987   LPVOID lpVtbl;
01988   LPDDRAWI_DDVIDEOPORT_LCL lpLcl;
01989   LPDDRAWI_DDVIDEOPORT_INT lpLink;
01990   DWORD dwIntRefCnt;
01991   DWORD dwFlags;
01992 } DDRAWI_DDVIDEOPORT_INT;
01993 
01994 typedef struct _DDRAWI_DDRAWCLIPPER_LCL {
01995   DWORD lpClipMore;
01996   LPDDRAWI_DDRAWCLIPPER_GBL lpGbl;
01997   LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl;
01998   DWORD dwLocalRefCnt;
01999 #ifndef _NO_COM
02000   IUnknown *pUnkOuter;
02001 #else
02002   PVOID pUnkOuter;
02003 #endif
02004   LPDDRAWI_DIRECTDRAW_INT lpDD_int;
02005   ULONG_PTR dwReserved1;
02006 #ifndef _NO_COM
02007   IUnknown *pAddrefedThisOwner;
02008 #else
02009   PVOID pAddrefedThisOwner;
02010 #endif
02011 } DDRAWI_DDRAWCLIPPER_LCL;
02012 
02013 typedef struct _DDRAWI_DDRAWCLIPPER_GBL {
02014   DWORD dwRefCnt;
02015   DWORD dwFlags;
02016   LPDDRAWI_DIRECTDRAW_GBL lpDD;
02017   DWORD dwProcessId;
02018   ULONG_PTR dwReserved1;
02019   ULONG_PTR hWnd;
02020   LPRGNDATA lpStaticClipList;
02021 } DDRAWI_DDRAWCLIPPER_GBL;
02022 
02023 typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL);
02024 
02025 extern HRESULT DDAPI
02026 LateAllocateSurfaceMem(
02027   LPDIRECTDRAWSURFACE lpSurface,
02028   DWORD dwPleaseAllocType,
02029   DWORD dwWidthInBytesOrSize,
02030   DWORD dwHeight);
02031 
02032 LPDIRECTDRAWSURFACE GetNextMipMap(
02033   LPDIRECTDRAWSURFACE lpLevel);
02034 
02035 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS;
02036 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS;
02037 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS;
02038 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS;
02039 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS;
02040 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS;
02041 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS;
02042 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS;
02043 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS;
02044 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS;
02045 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS;
02046 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS;
02047 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS;
02048 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS;
02049 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS;
02050 
02051 typedef DIRECTDRAWCLIPPERCALLBACKS  *LPDIRECTDRAWCLIPPERCALLBACKS;
02052 typedef DIRECTDRAWPALETTECALLBACKS  *LPDIRECTDRAWPALETTECALLBACKS;
02053 typedef DIRECTDRAWSURFACECALLBACKS  *LPDIRECTDRAWSURFACECALLBACKS;
02054 typedef DIRECTDRAWCALLBACKS  *LPDIRECTDRAWCALLBACKS;
02055 
02056 HRESULT CALLBACK
02057 D3DParseUnknownCommand (
02058   LPVOID lpvCommands,
02059   LPVOID *lplpvReturnedCommand);
02060 
02061 #ifdef __cplusplus
02062 } /* extern "C" */
02063 #endif
02064 
02065 #endif /* __DDRAWI_INCLUDED__ */

Generated on Sun May 27 2012 04:31:21 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.