1 /* 2 * DirectDraw driver interface 3 * (DirectX 7 version) 4 * 5 * Copyright (C) 2001 Ove Kaaven 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 #ifndef __DDRAWI_INCLUDED__ 23 #define __DDRAWI_INCLUDED__ 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 #define OBJECT_ISROOT 0x80000000 30 31 #include <ddraw.h> 32 #include <dvp.h> 33 #include <ddkernel.h> 34 #include <dmemmgr.h> 35 36 #define DDAPI WINAPI 37 38 #define VALID_ALIGNMENT(align) \ 39 (!((align==0)||(align%2)!= 0 )) 40 41 /* the DirectDraw versions */ 42 #define DD_VERSION 0x0200 /* compatibility version */ 43 #define DD_RUNTIME_VERSION 0x0902 /* actual version */ 44 45 /* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ 46 #define DD_HAL_VERSION 0x0100 47 48 /* more DCICOMMAND escapes */ 49 #ifndef DCICOMMAND 50 #define DCICOMMAND 3075 51 #endif 52 53 #define DDCREATEDRIVEROBJECT 10 54 #define DDGET32BITDRIVERNAME 11 55 #define DDNEWCALLBACKFNS 12 56 #define DDVERSIONINFO 13 57 58 #define DDUNSUPPORTEDMODE ((DWORD) -1) 59 60 #include "dciddi.h" 61 62 #ifndef CCHDEVICENAME 63 #define CCHDEVICENAME 32 64 #endif 65 #define MAX_DRIVER_NAME CCHDEVICENAME 66 67 #define DDHAL_DRIVER_DLLNAME "DDRAW16.DLL" 68 #define DDHAL_APP_DLLNAME "DDRAW.DLL" 69 70 /* GUID */ 71 #ifdef _WIN32 72 DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xefd60cc0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); 73 DEFINE_GUID(GUID_VideoPortCallbacks, 0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); 74 DEFINE_GUID(GUID_ColorControlCallbacks, 0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); 75 DEFINE_GUID(GUID_VideoPortCaps, 0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); 76 DEFINE_GUID(GUID_D3DCallbacks2, 0x0ba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x00, 0xaa, 0x00, 0xbb, 0xb7, 0x6a); 77 DEFINE_GUID(GUID_D3DCallbacks3, 0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e); 78 DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37); 79 DEFINE_GUID(GUID_KernelCallbacks, 0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); 80 DEFINE_GUID(GUID_KernelCaps, 0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8); 81 DEFINE_GUID(GUID_D3DExtendedCaps, 0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29); 82 DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae); 83 DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5); 84 DEFINE_GUID(GUID_DDStereoMode, 0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6); 85 DEFINE_GUID(GUID_OptSurfaceKmodeInfo, 0xe05c8472, 0x51d4, 0x11d1, 0x8c, 0xce, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); 86 DEFINE_GUID(GUID_OptSurfaceUmodeInfo, 0x9d792804, 0x5fa8, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); 87 DEFINE_GUID(GUID_UserModeDriverInfo, 0xf0b0e8e2, 0x5f97, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); 88 DEFINE_GUID(GUID_UserModeDriverPassword, 0x97f861b6, 0x60a1, 0x11d1, 0x8c, 0xd0, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); 89 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8); 90 DEFINE_GUID(GUID_MotionCompCallbacks, 0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e); 91 DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A); 92 #endif 93 94 #ifndef _WIN32 95 #undef E_NOTIMPL 96 #undef E_OUTOFMEMORY 97 #undef E_INVALIDARG 98 #undef E_FAIL 99 #define E_NOTIMPL 0x80004001L 100 #define E_OUTOFMEMORY 0x8007000EL 101 #define E_INVALIDARG 0x80070057L 102 #define E_FAIL 0x80004005L 103 #endif 104 105 /***************************************************************************** 106 * Initialization stuff 107 */ 108 typedef struct { 109 char szName[260]; 110 char szEntryPoint[64]; 111 DWORD dwContext; 112 } DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; 113 114 typedef struct { 115 DWORD dwHALVersion; 116 ULONG_PTR dwReserved1; 117 ULONG_PTR dwReserved2; 118 } DDVERSIONDATA,*LPDDVERSIONDATA; 119 120 typedef DWORD (PASCAL *LPDD32BITDRIVERINIT)(DWORD dwContext); 121 122 /* predeclare some structures */ 123 typedef struct _DDHALINFO *LPDDHALINFO; 124 typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; 125 126 #ifndef DDRAWI_DIRECTDRAW_DEFINED 127 typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; 128 typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; 129 #define DDRAWI_DIRECTDRAW_DEFINED 130 #endif 131 132 typedef struct _DDRAWI_DDRAWSURFACE_INT *LPDDRAWI_DDRAWSURFACE_INT; 133 134 #ifndef DDRAWI_DDRAWSURFACE_DEFINED 135 typedef struct _DDRAWI_DDRAWSURFACE_LCL *LPDDRAWI_DDRAWSURFACE_LCL; 136 #define DDRAWI_DDRAWSURFACE_DEFINED 137 #endif 138 139 typedef struct _DDRAWI_DDRAWSURFACE_GBL *LPDDRAWI_DDRAWSURFACE_GBL; 140 typedef struct _DDRAWI_DDRAWSURFACE_MORE *LPDDRAWI_DDRAWSURFACE_MORE; 141 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE *LPDDRAWI_DDRAWSURFACE_GBL_MORE; 142 typedef struct _DDRAWI_DDRAWPALETTE_INT *LPDDRAWI_DDRAWPALETTE_INT; 143 typedef struct _DDRAWI_DDRAWPALETTE_LCL *LPDDRAWI_DDRAWPALETTE_LCL; 144 typedef struct _DDRAWI_DDRAWPALETTE_GBL *LPDDRAWI_DDRAWPALETTE_GBL; 145 typedef struct _DDRAWI_DDRAWCLIPPER_INT *LPDDRAWI_DDRAWCLIPPER_INT; 146 typedef struct _DDRAWI_DDRAWCLIPPER_LCL *LPDDRAWI_DDRAWCLIPPER_LCL; 147 typedef struct _DDRAWI_DDRAWCLIPPER_GBL *LPDDRAWI_DDRAWCLIPPER_GBL; 148 typedef struct _DDRAWI_DDVIDEOPORT_INT *LPDDRAWI_DDVIDEOPORT_INT; 149 typedef struct _DDRAWI_DDVIDEOPORT_LCL *LPDDRAWI_DDVIDEOPORT_LCL; 150 typedef struct _DDRAWI_DDMOTIONCOMP_INT *LPDDRAWI_DDMOTIONCOMP_INT; 151 typedef struct _DDRAWI_DDMOTIONCOMP_LCL *LPDDRAWI_DDMOTIONCOMP_LCL; 152 153 /***************************************************************************** 154 * driver->ddraw callbacks 155 */ 156 typedef BOOL (DDAPI *LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset); 157 typedef FLATPTR (DDAPI *LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); 158 typedef void (DDAPI *LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); 159 160 typedef struct { 161 DWORD dwSize; 162 LPDDHAL_SETINFO lpSetInfo; 163 LPDDHAL_VIDMEMALLOC lpVidMemAlloc; 164 LPDDHAL_VIDMEMFREE lpVidMemFree; 165 } DDHALDDRAWFNS, *LPDDHALDDRAWFNS; 166 167 /***************************************************************************** 168 * mode info structure 169 */ 170 typedef struct _DDHALMODEINFO { 171 DWORD dwWidth; 172 DWORD dwHeight; 173 LONG lPitch; 174 DWORD dwBPP; 175 WORD wFlags; 176 WORD wRefreshRate; 177 DWORD dwRBitMask; 178 DWORD dwGBitMask; 179 DWORD dwBBitMask; 180 DWORD dwAlphaBitMask; 181 } DDHALMODEINFO, *LPDDHALMODEINFO; 182 183 #define DDMODEINFO_PALETTIZED 0x0001 184 #define DDMODEINFO_MODEX 0x0002 185 #define DDMODEINFO_UNSUPPORTED 0x0004 186 #define DDMODEINFO_STANDARDVGA 0x0008 187 #define DDMODEINFO_MAXREFRESH 0x0010 188 #define DDMODEINFO_STEREO 0x0020 189 190 /***************************************************************************** 191 * video memory info structure 192 */ 193 typedef struct _VIDMEM { 194 DWORD dwFlags; 195 FLATPTR fpStart; 196 __GNU_EXTENSION union { 197 FLATPTR fpEnd; 198 DWORD dwWidth; 199 }; 200 DDSCAPS ddsCaps; 201 DDSCAPS ddsCapsAlt; 202 __GNU_EXTENSION union { 203 LPVMEMHEAP lpHeap; 204 DWORD dwHeight; 205 }; 206 } VIDMEM; 207 208 #define VIDMEM_ISLINEAR 0x00000001l 209 #define VIDMEM_ISRECTANGULAR 0x00000002l 210 #define VIDMEM_ISHEAP 0x00000004l 211 #define VIDMEM_ISNONLOCAL 0x00000008l 212 #define VIDMEM_ISWC 0x00000010l 213 #define VIDMEM_HEAPDISABLED 0x00000020l 214 215 typedef struct _VIDMEMINFO { 216 FLATPTR fpPrimary; 217 DWORD dwFlags; 218 DWORD dwDisplayWidth; 219 DWORD dwDisplayHeight; 220 LONG lDisplayPitch; 221 DDPIXELFORMAT ddpfDisplay; 222 DWORD dwOffscreenAlign; 223 DWORD dwOverlayAlign; 224 DWORD dwTextureAlign; 225 DWORD dwZBufferAlign; 226 DWORD dwAlphaAlign; 227 DWORD dwNumHeaps; 228 LPVIDMEM pvmList; 229 } VIDMEMINFO, *LPVIDMEMINFO; 230 231 typedef struct _HEAPALIAS { 232 FLATPTR fpVidMem; 233 LPVOID lpAlias; 234 DWORD dwAliasSize; 235 } HEAPALIAS, *LPHEAPALIAS; 236 237 typedef struct _HEAPALIASINFO { 238 DWORD dwRefCnt; 239 DWORD dwFlags; 240 DWORD dwNumHeaps; 241 LPHEAPALIAS lpAliases; 242 } HEAPALIASINFO, *LPHEAPALIASINFO; 243 244 #define HEAPALIASINFO_MAPPEDREAL 0x00000001 245 #define HEAPALIASINFO_MAPPEDDUMMY 0x00000002 246 247 /***************************************************************************** 248 * capabilities structures 249 */ 250 typedef struct _DDCORECAPS { 251 DWORD dwSize; 252 DWORD dwCaps; 253 DWORD dwCaps2; 254 DWORD dwCKeyCaps; 255 DWORD dwFXCaps; 256 DWORD dwFXAlphaCaps; 257 DWORD dwPalCaps; 258 DWORD dwSVCaps; 259 DWORD dwAlphaBltConstBitDepths; 260 DWORD dwAlphaBltPixelBitDepths; 261 DWORD dwAlphaBltSurfaceBitDepths; 262 DWORD dwAlphaOverlayConstBitDepths; 263 DWORD dwAlphaOverlayPixelBitDepths; 264 DWORD dwAlphaOverlaySurfaceBitDepths; 265 DWORD dwZBufferBitDepths; 266 DWORD dwVidMemTotal; 267 DWORD dwVidMemFree; 268 DWORD dwMaxVisibleOverlays; 269 DWORD dwCurrVisibleOverlays; 270 DWORD dwNumFourCCCodes; 271 DWORD dwAlignBoundarySrc; 272 DWORD dwAlignSizeSrc; 273 DWORD dwAlignBoundaryDest; 274 DWORD dwAlignSizeDest; 275 DWORD dwAlignStrideAlign; 276 DWORD dwRops[DD_ROP_SPACE]; 277 DDSCAPS ddsCaps; 278 DWORD dwMinOverlayStretch; 279 DWORD dwMaxOverlayStretch; 280 DWORD dwMinLiveVideoStretch; 281 DWORD dwMaxLiveVideoStretch; 282 DWORD dwMinHwCodecStretch; 283 DWORD dwMaxHwCodecStretch; 284 DWORD dwReserved1; 285 DWORD dwReserved2; 286 DWORD dwReserved3; 287 DWORD dwSVBCaps; 288 DWORD dwSVBCKeyCaps; 289 DWORD dwSVBFXCaps; 290 DWORD dwSVBRops[DD_ROP_SPACE]; 291 DWORD dwVSBCaps; 292 DWORD dwVSBCKeyCaps; 293 DWORD dwVSBFXCaps; 294 DWORD dwVSBRops[DD_ROP_SPACE]; 295 DWORD dwSSBCaps; 296 DWORD dwSSBCKeyCaps; 297 DWORD dwSSBFXCaps; 298 DWORD dwSSBRops[DD_ROP_SPACE]; 299 DWORD dwMaxVideoPorts; 300 DWORD dwCurrVideoPorts; 301 DWORD dwSVBCaps2; 302 } DDCORECAPS, *LPDDCORECAPS; 303 304 typedef struct _DDNONLOCALVIDMEMCAPS { 305 DWORD dwSize; 306 DWORD dwNLVBCaps; 307 DWORD dwNLVBCaps2; 308 DWORD dwNLVBCKeyCaps; 309 DWORD dwNLVBFXCaps; 310 DWORD dwNLVBRops[DD_ROP_SPACE]; 311 } DDNONLOCALVIDMEMCAPS, *LPDDNONLOCALVIDMEMCAPS; 312 313 #define DDSCAPS_EXECUTEBUFFER DDSCAPS_RESERVED2 314 #define DDSCAPS2_VERTEXBUFFER DDSCAPS2_RESERVED1 315 #define DDSCAPS2_COMMANDBUFFER DDSCAPS2_RESERVED2 316 317 /***************************************************************************** 318 * ddraw->driver callbacks 319 */ 320 #define DDHAL_DRIVER_NOTHANDLED 0x00000000l 321 #define DDHAL_DRIVER_HANDLED 0x00000001l 322 #define DDHAL_DRIVER_NOCKEYHW 0x00000002l 323 324 typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA; 325 typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA; 326 typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA; 327 typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA; 328 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA; 329 typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA; 330 typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA; 331 typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA; 332 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA; 333 typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA; 334 335 typedef DWORD (PASCAL *LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA); 336 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA); 337 typedef DWORD (PASCAL *LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA); 338 typedef DWORD (PASCAL *LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA); 339 typedef DWORD (PASCAL *LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); 340 typedef DWORD (PASCAL *LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA ); 341 typedef DWORD (PASCAL *LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA); 342 typedef DWORD (PASCAL *LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA); 343 typedef DWORD (PASCAL *LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA); 344 typedef DWORD (PASCAL *LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA); 345 346 typedef struct _DDHAL_DDCALLBACKS { 347 DWORD dwSize; 348 DWORD dwFlags; 349 LPDDHAL_DESTROYDRIVER DestroyDriver; 350 LPDDHAL_CREATESURFACE CreateSurface; 351 LPDDHAL_SETCOLORKEY SetColorKey; 352 LPDDHAL_SETMODE SetMode; 353 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; 354 LPDDHAL_CANCREATESURFACE CanCreateSurface; 355 LPDDHAL_CREATEPALETTE CreatePalette; 356 LPDDHAL_GETSCANLINE GetScanLine; 357 /* DirectX 2 */ 358 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; 359 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; 360 } DDHAL_DDCALLBACKS, *LPDDHAL_DDCALLBACKS; 361 362 typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA; 363 typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA; 364 typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA; 365 typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA; 366 typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA; 367 typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA; 368 typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA; 369 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA; 370 typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA; 371 typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA; 372 typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA; 373 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA; 374 typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA; 375 376 typedef DWORD (PASCAL *LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA); 377 typedef DWORD (PASCAL *LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA); 378 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA); 379 typedef DWORD (PASCAL *LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA); 380 typedef DWORD (PASCAL *LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA); 381 typedef DWORD (PASCAL *LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA); 382 typedef DWORD (PASCAL *LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA); 383 typedef DWORD (PASCAL *LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); 384 typedef DWORD (PASCAL *LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA); 385 typedef DWORD (PASCAL *LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA); 386 typedef DWORD (PASCAL *LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA); 387 typedef DWORD (PASCAL *LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); 388 typedef DWORD (PASCAL *LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA); 389 390 typedef struct _DDHAL_DDSURFACECALLBACKS { 391 DWORD dwSize; 392 DWORD dwFlags; 393 LPDDHALSURFCB_DESTROYSURFACE DestroySurface; 394 LPDDHALSURFCB_FLIP Flip; 395 LPDDHALSURFCB_SETCLIPLIST SetClipList; 396 LPDDHALSURFCB_LOCK Lock; 397 LPDDHALSURFCB_UNLOCK Unlock; 398 LPDDHALSURFCB_BLT Blt; 399 LPDDHALSURFCB_SETCOLORKEY SetColorKey; 400 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; 401 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; 402 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; 403 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; 404 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; 405 LPVOID reserved4; 406 LPDDHALSURFCB_SETPALETTE SetPalette; 407 } DDHAL_DDSURFACECALLBACKS, *LPDDHAL_DDSURFACECALLBACKS; 408 409 typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA; 410 typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA; 411 412 typedef DWORD (PASCAL *LPDDHALPALCB_DESTROYPALETTE) (LPDDHAL_DESTROYPALETTEDATA); 413 typedef DWORD (PASCAL *LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA); 414 415 typedef struct _DDHAL_DDPALETTECALLBACKS { 416 DWORD dwSize; 417 DWORD dwFlags; 418 LPDDHALPALCB_DESTROYPALETTE DestroyPalette; 419 LPDDHALPALCB_SETENTRIES SetEntries; 420 } DDHAL_DDPALETTECALLBACKS, *LPDDHAL_DDPALETTECALLBACKS; 421 422 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CANCREATEEXEBUF) (LPDDHAL_CANCREATESURFACEDATA); 423 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA); 424 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA); 425 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA); 426 typedef DWORD (PASCAL *LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA); 427 428 typedef struct _DDHAL_DDEXEBUFCALLBACKS { 429 DWORD dwSize; 430 DWORD dwFlags; 431 LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; 432 LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; 433 LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; 434 LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; 435 LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer; 436 } DDHAL_DDEXEBUFCALLBACKS, *LPDDHAL_DDEXEBUFCALLBACKS; 437 438 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA *LPDDHAL_GETAVAILDRIVERMEMORYDATA; 439 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA *LPDDHAL_UPDATENONLOCALHEAPDATA; 440 typedef struct _DDHAL_GETHEAPALIGNMENTDATA *LPDDHAL_GETHEAPALIGNMENTDATA; 441 442 typedef DWORD (PASCAL *LPDDHAL_GETAVAILDRIVERMEMORY)(LPDDHAL_GETAVAILDRIVERMEMORYDATA); 443 typedef DWORD (PASCAL *LPDDHAL_UPDATENONLOCALHEAP) (LPDDHAL_UPDATENONLOCALHEAPDATA); 444 typedef DWORD (PASCAL *LPDDHAL_GETHEAPALIGNMENT) (LPDDHAL_GETHEAPALIGNMENTDATA); 445 446 typedef struct _DDHAL_DDMISCELLANEOUSCALLBACKS { 447 DWORD dwSize; 448 DWORD dwFlags; 449 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; 450 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; 451 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; 452 LPDDHALSURFCB_GETBLTSTATUS GetSysmemBltStatus; 453 } DDHAL_DDMISCELLANEOUSCALLBACKS, *LPDDHAL_DDMISCELLANEOUSCALLBACKS; 454 455 typedef struct _DDHAL_CREATESURFACEEXDATA *LPDDHAL_CREATESURFACEEXDATA; 456 typedef struct _DDHAL_GETDRIVERSTATEDATA *LPDDHAL_GETDRIVERSTATEDATA; 457 typedef struct _DDHAL_DESTROYDDLOCALDATA *LPDDHAL_DESTROYDDLOCALDATA; 458 459 typedef DWORD (PASCAL *LPDDHAL_CREATESURFACEEX)(LPDDHAL_CREATESURFACEEXDATA); 460 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERSTATE) (LPDDHAL_GETDRIVERSTATEDATA); 461 typedef DWORD (PASCAL *LPDDHAL_DESTROYDDLOCAL) (LPDDHAL_DESTROYDDLOCALDATA); 462 463 typedef struct _DDHAL_DDMISCELLANEOUS2CALLBACKS { 464 DWORD dwSize; 465 DWORD dwFlags; 466 LPVOID Reserved; 467 LPDDHAL_CREATESURFACEEX CreateSurfaceEx; 468 LPDDHAL_GETDRIVERSTATE GetDriverState; 469 LPDDHAL_DESTROYDDLOCAL DestroyDDLocal; 470 } DDHAL_DDMISCELLANEOUS2CALLBACKS, *LPDDHAL_DDMISCELLANEOUS2CALLBACKS; 471 472 typedef struct _DDHAL_CANCREATEVPORTDATA *LPDDHAL_CANCREATEVPORTDATA; 473 typedef struct _DDHAL_CREATEVPORTDATA *LPDDHAL_CREATEVPORTDATA; 474 typedef struct _DDHAL_FLIPVPORTDATA *LPDDHAL_FLIPVPORTDATA; 475 typedef struct _DDHAL_GETVPORTCONNECTDATA *LPDDHAL_GETVPORTCONNECTDATA; 476 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA *LPDDHAL_GETVPORTBANDWIDTHDATA; 477 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA *LPDDHAL_GETVPORTINPUTFORMATDATA; 478 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA *LPDDHAL_GETVPORTOUTPUTFORMATDATA; 479 typedef struct _DDHAL_GETVPORTFIELDDATA *LPDDHAL_GETVPORTFIELDDATA; 480 typedef struct _DDHAL_GETVPORTLINEDATA *LPDDHAL_GETVPORTLINEDATA; 481 typedef struct _DDHAL_DESTROYVPORTDATA *LPDDHAL_DESTROYVPORTDATA; 482 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA *LPDDHAL_GETVPORTFLIPSTATUSDATA; 483 typedef struct _DDHAL_UPDATEVPORTDATA *LPDDHAL_UPDATEVPORTDATA; 484 typedef struct _DDHAL_WAITFORVPORTSYNCDATA *LPDDHAL_WAITFORVPORTSYNCDATA; 485 typedef struct _DDHAL_GETVPORTSIGNALDATA *LPDDHAL_GETVPORTSIGNALDATA; 486 typedef struct _DDHAL_VPORTCOLORDATA *LPDDHAL_VPORTCOLORDATA; 487 488 typedef DWORD (PASCAL *LPDDHALVPORTCB_CANCREATEVIDEOPORT)(LPDDHAL_CANCREATEVPORTDATA); 489 typedef DWORD (PASCAL *LPDDHALVPORTCB_CREATEVIDEOPORT)(LPDDHAL_CREATEVPORTDATA); 490 typedef DWORD (PASCAL *LPDDHALVPORTCB_FLIP)(LPDDHAL_FLIPVPORTDATA); 491 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETBANDWIDTH)(LPDDHAL_GETVPORTBANDWIDTHDATA); 492 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETINPUTFORMATS)(LPDDHAL_GETVPORTINPUTFORMATDATA); 493 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETOUTPUTFORMATS)(LPDDHAL_GETVPORTOUTPUTFORMATDATA); 494 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFIELD)(LPDDHAL_GETVPORTFIELDDATA); 495 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETLINE)(LPDDHAL_GETVPORTLINEDATA); 496 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETVPORTCONNECT)(LPDDHAL_GETVPORTCONNECTDATA); 497 typedef DWORD (PASCAL *LPDDHALVPORTCB_DESTROYVPORT)(LPDDHAL_DESTROYVPORTDATA); 498 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETFLIPSTATUS)(LPDDHAL_GETVPORTFLIPSTATUSDATA); 499 typedef DWORD (PASCAL *LPDDHALVPORTCB_UPDATE)(LPDDHAL_UPDATEVPORTDATA); 500 typedef DWORD (PASCAL *LPDDHALVPORTCB_WAITFORSYNC)(LPDDHAL_WAITFORVPORTSYNCDATA); 501 typedef DWORD (PASCAL *LPDDHALVPORTCB_GETSIGNALSTATUS)(LPDDHAL_GETVPORTSIGNALDATA); 502 typedef DWORD (PASCAL *LPDDHALVPORTCB_COLORCONTROL)(LPDDHAL_VPORTCOLORDATA); 503 504 typedef struct _DDHAL_DDVIDEOPORTCALLBACKS { 505 DWORD dwSize; 506 DWORD dwFlags; 507 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; 508 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; 509 LPDDHALVPORTCB_FLIP FlipVideoPort; 510 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; 511 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; 512 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; 513 LPVOID lpReserved1; 514 LPDDHALVPORTCB_GETFIELD GetVideoPortField; 515 LPDDHALVPORTCB_GETLINE GetVideoPortLine; 516 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; 517 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; 518 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; 519 LPDDHALVPORTCB_UPDATE UpdateVideoPort; 520 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; 521 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; 522 LPDDHALVPORTCB_COLORCONTROL ColorControl; 523 } DDHAL_DDVIDEOPORTCALLBACKS; 524 525 typedef struct _DDHAL_COLORCONTROLDATA *LPDDHAL_COLORCONTROLDATA; 526 527 typedef DWORD (PASCAL *LPDDHALCOLORCB_COLORCONTROL)(LPDDHAL_COLORCONTROLDATA); 528 529 typedef struct _DDHAL_DDCOLORCONTROLCALLBACKS { 530 DWORD dwSize; 531 DWORD dwFlags; 532 LPDDHALCOLORCB_COLORCONTROL ColorControl; 533 } DDHAL_DDCOLORCONTROLCALLBACKS; 534 535 typedef struct _DDHAL_SYNCSURFACEDATA *LPDDHAL_SYNCSURFACEDATA; 536 typedef struct _DDHAL_SYNCVIDEOPORTDATA *LPDDHAL_SYNCVIDEOPORTDATA; 537 538 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCSURFACE)(LPDDHAL_SYNCSURFACEDATA); 539 typedef DWORD (PASCAL *LPDDHALKERNELCB_SYNCVIDEOPORT)(LPDDHAL_SYNCVIDEOPORTDATA); 540 541 typedef struct _DDHAL_DDKERNELCALLBACKS { 542 DWORD dwSize; 543 DWORD dwFlags; 544 LPDDHALKERNELCB_SYNCSURFACE SyncSurfaceData; 545 LPDDHALKERNELCB_SYNCVIDEOPORT SyncVideoPortData; 546 } DDHAL_DDKERNELCALLBACKS, *LPDDHAL_DDKERNELCALLBACKS; 547 548 typedef struct _DDHAL_GETMOCOMPGUIDSDATA *LPDDHAL_GETMOCOMPGUIDSDATA; 549 typedef struct _DDHAL_GETMOCOMPFORMATSDATA *LPDDHAL_GETMOCOMPFORMATSDATA; 550 typedef struct _DDHAL_CREATEMOCOMPDATA *LPDDHAL_CREATEMOCOMPDATA; 551 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA *LPDDHAL_GETMOCOMPCOMPBUFFDATA; 552 typedef struct _DDHAL_GETINTERNALMOCOMPDATA *LPDDHAL_GETINTERNALMOCOMPDATA; 553 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA *LPDDHAL_BEGINMOCOMPFRAMEDATA; 554 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA *LPDDHAL_ENDMOCOMPFRAMEDATA; 555 typedef struct _DDHAL_RENDERMOCOMPDATA *LPDDHAL_RENDERMOCOMPDATA; 556 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA *LPDDHAL_QUERYMOCOMPSTATUSDATA; 557 typedef struct _DDHAL_DESTROYMOCOMPDATA *LPDDHAL_DESTROYMOCOMPDATA; 558 559 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETGUIDS)(LPDDHAL_GETMOCOMPGUIDSDATA); 560 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETFORMATS)(LPDDHAL_GETMOCOMPFORMATSDATA); 561 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_CREATE)(LPDDHAL_CREATEMOCOMPDATA); 562 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETCOMPBUFFINFO)(LPDDHAL_GETMOCOMPCOMPBUFFDATA); 563 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_GETINTERNALINFO)(LPDDHAL_GETINTERNALMOCOMPDATA); 564 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_BEGINFRAME)(LPDDHAL_BEGINMOCOMPFRAMEDATA); 565 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_ENDFRAME)(LPDDHAL_ENDMOCOMPFRAMEDATA); 566 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_RENDER)(LPDDHAL_RENDERMOCOMPDATA); 567 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_QUERYSTATUS)(LPDDHAL_QUERYMOCOMPSTATUSDATA); 568 typedef DWORD (PASCAL *LPDDHALMOCOMPCB_DESTROY)(LPDDHAL_DESTROYMOCOMPDATA); 569 570 typedef struct _DDHAL_DDMOTIONCOMPCALLBACKS { 571 DWORD dwSize; 572 DWORD dwFlags; 573 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; 574 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; 575 LPDDHALMOCOMPCB_CREATE CreateMoComp; 576 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; 577 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; 578 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; 579 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; 580 LPDDHALMOCOMPCB_RENDER RenderMoComp; 581 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; 582 LPDDHALMOCOMPCB_DESTROY DestroyMoComp; 583 } DDHAL_DDMOTIONCOMPCALLBACKS, *LPDDHAL_DDMOTIONCOMPCALLBACKS; 584 585 typedef HRESULT (WINAPI *LPDDGAMMACALIBRATORPROC)(LPDDGAMMARAMP, LPBYTE); 586 587 /***************************************************************************** 588 * driver info structure 589 * 590 * The HAL is queried for additional callbacks via the GetDriverInfo callback. 591 */ 592 typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; 593 typedef DWORD (PASCAL *LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); 594 595 typedef struct _DDHAL_GETDRIVERINFODATA { 596 DWORD dwSize; 597 DWORD dwFlags; 598 GUID guidInfo; 599 DWORD dwExpectedSize; 600 LPVOID lpvData; 601 DWORD dwActualSize; 602 HRESULT ddRVal; 603 ULONG_PTR dwContext; 604 } DDHAL_GETDRIVERINFODATA; 605 606 typedef struct _DDHALINFO { 607 DWORD dwSize; 608 LPDDHAL_DDCALLBACKS lpDDCallbacks; 609 LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; 610 LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; 611 VIDMEMINFO vmiData; 612 DDCORECAPS ddCaps; 613 DWORD dwMonitorFrequency; 614 LPDDHAL_GETDRIVERINFO GetDriverInfo; 615 DWORD dwModeIndex; 616 LPDWORD lpdwFourCC; 617 DWORD dwNumModes; 618 LPDDHALMODEINFO lpModeInfo; 619 DWORD dwFlags; 620 LPVOID lpPDevice; 621 DWORD hInstance; 622 /* DirectX 2 */ 623 ULONG_PTR lpD3DGlobalDriverData; 624 ULONG_PTR lpD3DHALCallbacks; 625 LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks; 626 } DDHALINFO; 627 628 #define DDPALETTECALLBACKSSIZE sizeof(DDHAL_DDPALETTECALLBACKS) 629 #define DDSURFACECALLBACKSSIZE sizeof(DDHAL_DDSURFACECALLBACKS) 630 #define DDMISCELLANEOUSCALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS) 631 #define DDMISCELLANEOUS2CALLBACKSSIZE sizeof(DDHAL_DDMISCELLANEOUS2CALLBACKS) 632 #define DDEXEBUFCALLBACKSSIZE sizeof(DDHAL_DDEXEBUFCALLBACKS) 633 #define DDVIDEOPORTCALLBACKSSIZE sizeof(DDHAL_DDVIDEOPORTCALLBACKS) 634 #define DDCOLORCONTROLCALLBACKSSIZE sizeof(DDHAL_DDCOLORCONTROLCALLBACKS) 635 #define DDKERNELCALLBACKSSIZE sizeof(DDHAL_DDKERNELCALLBACKS) 636 #define DDMOTIONCOMPCALLBACKSSIZE sizeof(DDHAL_DDMOTIONCOMPCALLBACKS) 637 638 #define MAX_PALETTE_SIZE 256 639 640 #define MAX_AUTOFLIP_BUFFERS 10 641 #define DDSCAPS2_INDEXBUFFER DDSCAPS2_RESERVED3 642 #define DDSCAPS3_VIDEO DDSCAPS3_RESERVED2 643 #define D3DFMT_INTERNAL_D32 71 644 #define D3DFMT_INTERNAL_S1D15 72 645 #define D3DFMT_INTERNAL_D15S1 73 646 #define D3DFMT_INTERNAL_S8D24 74 647 #define D3DFMT_INTERNAL_D24S8 75 648 #define D3DFMT_INTERNAL_X8D24 76 649 #define D3DFMT_INTERNAL_D24X8 77 650 #define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l 651 #define DDHAL_PLEASEALLOC_LINEARSIZE 0x00000003l 652 653 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l 654 #define DDHAL_CB32_CREATESURFACE 0x00000002l 655 #define DDHAL_CB32_SETCOLORKEY 0x00000004l 656 #define DDHAL_CB32_SETMODE 0x00000008l 657 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l 658 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l 659 #define DDHAL_CB32_CREATEPALETTE 0x00000040l 660 #define DDHAL_CB32_GETSCANLINE 0x00000080l 661 #define DDHAL_CB32_SETEXCLUSIVEMODE 0x00000100l 662 #define DDHAL_CB32_FLIPTOGDISURFACE 0x00000200l 663 #define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l 664 #define DDHAL_PALCB32_SETENTRIES 0x00000002l 665 #define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 666 #define DDHALINFO_MODEXILLEGAL 0x00000002 667 #define DDHALINFO_GETDRIVERINFOSET 0x00000004 668 #define DDHALINFO_GETDRIVERINFO2 0x00000008 669 #define DDRAWI_VPORTSTART 0x0001 670 #define DDRAWI_VPORTSTOP 0x0002 671 #define DDRAWI_VPORTUPDATE 0x0003 672 #define DDRAWI_VPORTGETCOLOR 0x0001 673 #define DDRAWI_VPORTSETCOLOR 0x0002 674 #define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001 675 #define DDHAL_SURFCB32_FLIP 0x00000002 676 #define DDHAL_SURFCB32_SETCLIPLIST 0x00000004 677 #define DDHAL_SURFCB32_LOCK 0x00000008 678 #define DDHAL_SURFCB32_UNLOCK 0x00000010 679 #define DDHAL_SURFCB32_BLT 0x00000020 680 #define DDHAL_SURFCB32_SETCOLORKEY 0x00000040 681 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080 682 #define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100 683 #define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200 684 #define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400 685 #define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800 686 #define DDHAL_SURFCB32_RESERVED4 0x00001000 687 #define DDHAL_SURFCB32_SETPALETTE 0x00002000 688 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY 0x00000001 689 #define DDHAL_MISCCB32_UPDATENONLOCALHEAP 0x00000002 690 #define DDHAL_MISCCB32_GETHEAPALIGNMENT 0x00000004 691 #define DDHAL_MISCCB32_GETSYSMEMBLTSTATUS 0x00000008 692 #define DDHAL_MISC2CB32_ALPHABLT 0x00000001 693 #define DDHAL_MISC2CB32_CREATESURFACEEX 0x00000002 694 #define DDHAL_MISC2CB32_GETDRIVERSTATE 0x00000004 695 #define DDHAL_MISC2CB32_DESTROYDDLOCAL 0x00000008 696 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF 0x00000001l 697 #define DDHAL_EXEBUFCB32_CREATEEXEBUF 0x00000002l 698 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF 0x00000004l 699 #define DDHAL_EXEBUFCB32_LOCKEXEBUF 0x00000008l 700 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF 0x00000010l 701 #define DDHAL_VPORT32_CANCREATEVIDEOPORT 0x00000001 702 #define DDHAL_VPORT32_CREATEVIDEOPORT 0x00000002 703 #define DDHAL_VPORT32_FLIP 0x00000004 704 #define DDHAL_VPORT32_GETBANDWIDTH 0x00000008 705 #define DDHAL_VPORT32_GETINPUTFORMATS 0x00000010 706 #define DDHAL_VPORT32_GETOUTPUTFORMATS 0x00000020 707 #define DDHAL_VPORT32_GETFIELD 0x00000080 708 #define DDHAL_VPORT32_GETLINE 0x00000100 709 #define DDHAL_VPORT32_GETCONNECT 0x00000200 710 #define DDHAL_VPORT32_DESTROY 0x00000400 711 #define DDHAL_VPORT32_GETFLIPSTATUS 0x00000800 712 #define DDHAL_VPORT32_UPDATE 0x00001000 713 #define DDHAL_VPORT32_WAITFORSYNC 0x00002000 714 #define DDHAL_VPORT32_GETSIGNALSTATUS 0x00004000 715 #define DDHAL_VPORT32_COLORCONTROL 0x00008000 716 #define DDHAL_COLOR_COLORCONTROL 0x00000001 717 #define DDHAL_KERNEL_SYNCSURFACEDATA 0x00000001l 718 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA 0x00000002l 719 #define DDHAL_MOCOMP32_GETGUIDS 0x00000001 720 #define DDHAL_MOCOMP32_GETFORMATS 0x00000002 721 #define DDHAL_MOCOMP32_CREATE 0x00000004 722 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO 0x00000008 723 #define DDHAL_MOCOMP32_GETINTERNALINFO 0x00000010 724 #define DDHAL_MOCOMP32_BEGINFRAME 0x00000020 725 #define DDHAL_MOCOMP32_ENDFRAME 0x00000040 726 #define DDHAL_MOCOMP32_RENDER 0x00000080 727 #define DDHAL_MOCOMP32_QUERYSTATUS 0x00000100 728 #define DDHAL_MOCOMP32_DESTROY 0x00000200 729 730 /* where the high-level ddraw implementation stores the callbacks */ 731 typedef struct _DDHAL_CALLBACKS { 732 DDHAL_DDCALLBACKS cbDDCallbacks; 733 DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks; 734 DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks; 735 DDHAL_DDCALLBACKS HALDD; 736 DDHAL_DDSURFACECALLBACKS HALDDSurface; 737 DDHAL_DDPALETTECALLBACKS HALDDPalette; 738 DDHAL_DDCALLBACKS HELDD; 739 DDHAL_DDSURFACECALLBACKS HELDDSurface; 740 DDHAL_DDPALETTECALLBACKS HELDDPalette; 741 DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks; 742 DDHAL_DDEXEBUFCALLBACKS HALDDExeBuf; 743 DDHAL_DDEXEBUFCALLBACKS HELDDExeBuf; 744 DDHAL_DDVIDEOPORTCALLBACKS cbDDVideoPortCallbacks; 745 DDHAL_DDVIDEOPORTCALLBACKS HALDDVideoPort; 746 DDHAL_DDCOLORCONTROLCALLBACKS cbDDColorControlCallbacks; 747 DDHAL_DDCOLORCONTROLCALLBACKS HALDDColorControl; 748 DDHAL_DDMISCELLANEOUSCALLBACKS cbDDMiscellaneousCallbacks; 749 DDHAL_DDMISCELLANEOUSCALLBACKS HALDDMiscellaneous; 750 DDHAL_DDKERNELCALLBACKS cbDDKernelCallbacks; 751 DDHAL_DDKERNELCALLBACKS HALDDKernel; 752 DDHAL_DDMOTIONCOMPCALLBACKS cbDDMotionCompCallbacks; 753 DDHAL_DDMOTIONCOMPCALLBACKS HALDDMotionComp; 754 } DDHAL_CALLBACKS, *LPDDHAL_CALLBACKS; 755 756 /***************************************************************************** 757 * parameter structures 758 */ 759 typedef struct _DDHAL_DESTROYDRIVERDATA { 760 LPDDRAWI_DIRECTDRAW_GBL lpDD; 761 HRESULT ddRVal; 762 LPDDHAL_DESTROYDRIVER DestroyDriver; 763 } DDHAL_DESTROYDRIVERDATA; 764 765 typedef struct _DDHAL_SETMODEDATA { 766 LPDDRAWI_DIRECTDRAW_GBL lpDD; 767 DWORD dwModeIndex; 768 HRESULT ddRVal; 769 LPDDHAL_SETMODE SetMode; 770 BOOL inexcl; 771 BOOL useRefreshRate; 772 } DDHAL_SETMODEDATA; 773 774 typedef struct _DDHAL_CREATESURFACEDATA { 775 LPDDRAWI_DIRECTDRAW_GBL lpDD; 776 LPDDSURFACEDESC lpDDSurfaceDesc; 777 LPDDRAWI_DDRAWSURFACE_LCL *lplpSList; 778 DWORD dwSCnt; 779 HRESULT ddRVal; 780 LPDDHAL_CREATESURFACE CreateSurface; 781 } DDHAL_CREATESURFACEDATA; 782 783 typedef struct _DDHAL_CANCREATESURFACEDATA { 784 LPDDRAWI_DIRECTDRAW_GBL lpDD; 785 LPDDSURFACEDESC lpDDSurfaceDesc; 786 DWORD bIsDifferentPixelFormat; 787 HRESULT ddRVal; 788 LPDDHAL_CANCREATESURFACE CanCreateSurface; 789 } DDHAL_CANCREATESURFACEDATA; 790 791 typedef struct _DDHAL_CREATEPALETTEDATA { 792 LPDDRAWI_DIRECTDRAW_GBL lpDD; 793 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; 794 LPPALETTEENTRY lpColorTable; 795 HRESULT ddRVal; 796 LPDDHAL_CREATEPALETTE CreatePalette; 797 BOOL is_excl; 798 } DDHAL_CREATEPALETTEDATA; 799 800 typedef struct _DDHAL_SETEXCLUSIVEMODEDATA { 801 LPDDRAWI_DIRECTDRAW_GBL lpDD; 802 DWORD dwEnterExcl; 803 DWORD dwReserved; 804 HRESULT ddRVal; 805 LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; 806 } DDHAL_SETEXCLUSIVEMODEDATA; 807 808 /* surfaces */ 809 typedef struct _DDHAL_DESTROYSURFACEDATA { 810 LPDDRAWI_DIRECTDRAW_GBL lpDD; 811 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 812 HRESULT ddRVal; 813 LPDDHALSURFCB_DESTROYSURFACE DestroySurface; 814 } DDHAL_DESTROYSURFACEDATA; 815 816 typedef struct _DDHAL_FLIPDATA { 817 LPDDRAWI_DIRECTDRAW_GBL lpDD; 818 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; 819 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; 820 DWORD dwFlags; 821 HRESULT ddRVal; 822 LPDDHALSURFCB_FLIP Flip; 823 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurrLeft; 824 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTargLeft; 825 } DDHAL_FLIPDATA; 826 827 typedef struct _DDHAL_LOCKDATA { 828 LPDDRAWI_DIRECTDRAW_GBL lpDD; 829 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 830 DWORD bHasRect; 831 RECTL rArea; 832 LPVOID lpSurfData; 833 HRESULT ddRVal; 834 LPDDHALSURFCB_LOCK Lock; 835 DWORD dwFlags; 836 } DDHAL_LOCKDATA; 837 838 typedef struct _DDHAL_UNLOCKDATA { 839 LPDDRAWI_DIRECTDRAW_GBL lpDD; 840 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 841 HRESULT ddRVal; 842 LPDDHALSURFCB_UNLOCK Unlock; 843 } DDHAL_UNLOCKDATA; 844 845 typedef struct _DDHAL_BLTDATA { 846 LPDDRAWI_DIRECTDRAW_GBL lpDD; 847 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; 848 RECTL rDest; 849 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; 850 RECTL rSrc; 851 DWORD dwFlags; 852 DWORD dwROPFlags; 853 DDBLTFX bltFX; 854 HRESULT ddRVal; 855 LPDDHALSURFCB_BLT Blt; 856 BOOL IsClipped; 857 RECTL rOrigDest; 858 RECTL rOrigSrc; 859 DWORD dwRectCnt; 860 LPRECT prDestRects; 861 } DDHAL_BLTDATA; 862 863 typedef struct _DDHAL_SETPALETTEDATA { 864 LPDDRAWI_DIRECTDRAW_GBL lpDD; 865 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 866 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; 867 HRESULT ddRVal; 868 LPDDHALSURFCB_SETPALETTE SetPalette; 869 BOOL Attach; 870 } DDHAL_SETPALETTEDATA; 871 872 /* palettes */ 873 typedef struct _DDHAL_DESTROYPALETTEDATA { 874 LPDDRAWI_DIRECTDRAW_GBL lpDD; 875 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; 876 HRESULT ddRVal; 877 LPDDHALPALCB_DESTROYPALETTE DestroyPalette; 878 } DDHAL_DESTROYPALETTEDATA; 879 880 typedef struct _DDHAL_SETENTRIESDATA { 881 LPDDRAWI_DIRECTDRAW_GBL lpDD; 882 LPDDRAWI_DDRAWPALETTE_GBL lpDDPalette; 883 DWORD dwBase; 884 DWORD dwNumEntries; 885 LPPALETTEENTRY lpEntries; 886 HRESULT ddRVal; 887 LPDDHALPALCB_SETENTRIES SetEntries; 888 } DDHAL_SETENTRIESDATA; 889 890 typedef struct _DDHAL_CANCREATEVPORTDATA { 891 LPDDRAWI_DIRECTDRAW_LCL lpDD; 892 LPDDVIDEOPORTDESC lpDDVideoPortDesc; 893 HRESULT ddRVal; 894 LPDDHALVPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort; 895 } DDHAL_CANCREATEVPORTDATA; 896 897 typedef struct _DDHAL_CREATEVPORTDATA { 898 LPDDRAWI_DIRECTDRAW_LCL lpDD; 899 LPDDVIDEOPORTDESC lpDDVideoPortDesc; 900 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 901 HRESULT ddRVal; 902 LPDDHALVPORTCB_CREATEVIDEOPORT CreateVideoPort; 903 } DDHAL_CREATEVPORTDATA; 904 905 typedef struct _DDHAL_GETVPORTBANDWIDTHDATA { 906 LPDDRAWI_DIRECTDRAW_LCL lpDD; 907 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 908 LPDDPIXELFORMAT lpddpfFormat; 909 DWORD dwWidth; 910 DWORD dwHeight; 911 DWORD dwFlags; 912 LPDDVIDEOPORTBANDWIDTH lpBandwidth; 913 HRESULT ddRVal; 914 LPDDHALVPORTCB_GETBANDWIDTH GetVideoPortBandwidth; 915 } DDHAL_GETVPORTBANDWIDTHDATA; 916 917 typedef struct _DDHAL_GETVPORTINPUTFORMATDATA { 918 LPDDRAWI_DIRECTDRAW_LCL lpDD; 919 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 920 DWORD dwFlags; 921 LPDDPIXELFORMAT lpddpfFormat; 922 DWORD dwNumFormats; 923 HRESULT ddRVal; 924 LPDDHALVPORTCB_GETINPUTFORMATS GetVideoPortInputFormats; 925 } DDHAL_GETVPORTINPUTFORMATDATA; 926 927 typedef struct _DDHAL_GETVPORTFIELDDATA { 928 LPDDRAWI_DIRECTDRAW_LCL lpDD; 929 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 930 BOOL bField; 931 HRESULT ddRVal; 932 LPDDHALVPORTCB_GETFIELD GetVideoPortField; 933 } DDHAL_GETVPORTFIELDDATA; 934 935 typedef struct _DDHAL_GETVPORTOUTPUTFORMATDATA { 936 LPDDRAWI_DIRECTDRAW_LCL lpDD; 937 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 938 DWORD dwFlags; 939 LPDDPIXELFORMAT lpddpfInputFormat; 940 LPDDPIXELFORMAT lpddpfOutputFormats; 941 DWORD dwNumFormats; 942 HRESULT ddRVal; 943 LPDDHALVPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats; 944 } DDHAL_GETVPORTOUTPUTFORMATDATA; 945 946 typedef struct _DDHAL_GETVPORTLINEDATA { 947 LPDDRAWI_DIRECTDRAW_LCL lpDD; 948 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 949 DWORD dwLine; 950 HRESULT ddRVal; 951 LPDDHALVPORTCB_GETLINE GetVideoPortLine; 952 } DDHAL_GETVPORTLINEDATA; 953 954 typedef struct _DDHAL_DESTROYVPORTDATA { 955 LPDDRAWI_DIRECTDRAW_LCL lpDD; 956 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 957 HRESULT ddRVal; 958 LPDDHALVPORTCB_DESTROYVPORT DestroyVideoPort; 959 } DDHAL_DESTROYVPORTDATA; 960 961 typedef struct _DDHAL_GETVPORTFLIPSTATUSDATA { 962 LPDDRAWI_DIRECTDRAW_LCL lpDD; 963 FLATPTR fpSurface; 964 HRESULT ddRVal; 965 LPDDHALVPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus; 966 } DDHAL_GETVPORTFLIPSTATUSDATA; 967 968 typedef struct _DDHAL_UPDATEVPORTDATA { 969 LPDDRAWI_DIRECTDRAW_LCL lpDD; 970 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 971 LPDDRAWI_DDRAWSURFACE_INT *lplpDDSurface; 972 LPDDRAWI_DDRAWSURFACE_INT *lplpDDVBISurface; 973 LPDDVIDEOPORTINFO lpVideoInfo; 974 DWORD dwFlags; 975 DWORD dwNumAutoflip; 976 DWORD dwNumVBIAutoflip; 977 HRESULT ddRVal; 978 LPDDHALVPORTCB_UPDATE UpdateVideoPort; 979 } DDHAL_UPDATEVPORTDATA; 980 981 typedef struct _DDHAL_WAITFORVPORTSYNCDATA { 982 LPDDRAWI_DIRECTDRAW_LCL lpDD; 983 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 984 DWORD dwFlags; 985 DWORD dwLine; 986 DWORD dwTimeOut; 987 HRESULT ddRVal; 988 LPDDHALVPORTCB_WAITFORSYNC WaitForVideoPortSync; 989 } DDHAL_WAITFORVPORTSYNCDATA; 990 991 typedef struct _DDHAL_GETVPORTSIGNALDATA { 992 LPDDRAWI_DIRECTDRAW_LCL lpDD; 993 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 994 DWORD dwStatus; 995 HRESULT ddRVal; 996 LPDDHALVPORTCB_GETSIGNALSTATUS GetVideoSignalStatus; 997 } DDHAL_GETVPORTSIGNALDATA; 998 999 typedef struct _DDHAL_VPORTCOLORDATA { 1000 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1001 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 1002 DWORD dwFlags; 1003 LPDDCOLORCONTROL lpColorData; 1004 HRESULT ddRVal; 1005 LPDDHALVPORTCB_COLORCONTROL ColorControl; 1006 } DDHAL_VPORTCOLORDATA; 1007 1008 typedef struct _DDHAL_FLIPVPORTDATA { 1009 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1010 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 1011 LPDDRAWI_DDRAWSURFACE_LCL lpSurfCurr; 1012 LPDDRAWI_DDRAWSURFACE_LCL lpSurfTarg; 1013 HRESULT ddRVal; 1014 LPDDHALVPORTCB_FLIP FlipVideoPort; 1015 } DDHAL_FLIPVPORTDATA; 1016 1017 typedef struct _DDHAL_GETVPORTCONNECTDATA { 1018 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1019 DWORD dwPortId; 1020 LPDDVIDEOPORTCONNECT lpConnect; 1021 DWORD dwNumEntries; 1022 HRESULT ddRVal; 1023 LPDDHALVPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo; 1024 } DDHAL_GETVPORTCONNECTDATA; 1025 1026 typedef struct _DDHAL_SYNCSURFACEDATA { 1027 DWORD dwSize; 1028 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1029 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1030 DWORD dwSurfaceOffset; 1031 ULONG_PTR fpLockPtr; 1032 LONG lPitch; 1033 DWORD dwOverlayOffset; 1034 DWORD dwOverlaySrcWidth; 1035 DWORD dwOverlaySrcHeight; 1036 DWORD dwOverlayDestWidth; 1037 DWORD dwOverlayDestHeight; 1038 ULONG_PTR dwDriverReserved1; 1039 ULONG_PTR dwDriverReserved2; 1040 ULONG_PTR dwDriverReserved3; 1041 HRESULT ddRVal; 1042 } DDHAL_SYNCSURFACEDATA; 1043 1044 typedef struct _DDHAL_SYNCVIDEOPORTDATA { 1045 DWORD dwSize; 1046 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1047 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 1048 DWORD dwOriginOffset; 1049 DWORD dwHeight; 1050 DWORD dwVBIHeight; 1051 ULONG_PTR dwDriverReserved1; 1052 ULONG_PTR dwDriverReserved2; 1053 ULONG_PTR dwDriverReserved3; 1054 HRESULT ddRVal; 1055 } DDHAL_SYNCVIDEOPORTDATA; 1056 1057 typedef struct _DDHAL_DESTROYDDLOCALDATA { 1058 DWORD dwFlags; 1059 LPDDRAWI_DIRECTDRAW_LCL pDDLcl; 1060 HRESULT ddRVal; 1061 } DDHAL_DESTROYDDLOCALDATA; 1062 1063 typedef struct _DDHAL_CREATESURFACEEXDATA { 1064 DWORD dwFlags; 1065 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; 1066 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; 1067 HRESULT ddRVal; 1068 } DDHAL_CREATESURFACEEXDATA; 1069 1070 typedef struct _DDHAL_GETHEAPALIGNMENTDATA { 1071 ULONG_PTR dwInstance; 1072 DWORD dwHeap; 1073 HRESULT ddRVal; 1074 LPDDHAL_GETHEAPALIGNMENT GetHeapAlignment; 1075 HEAPALIGNMENT Alignment; 1076 } DDHAL_GETHEAPALIGNMENTDATA; 1077 1078 typedef struct _DDMORESURFACECAPS { 1079 DWORD dwSize; 1080 DDSCAPSEX ddsCapsMore; 1081 struct tagExtendedHeapRestrictions { 1082 DDSCAPSEX ddsCapsEx; 1083 DDSCAPSEX ddsCapsExAlt; 1084 } ddsExtendedHeapRestrictions[1]; 1085 } DDMORESURFACECAPS, *LPDDMORESURFACECAPS; 1086 1087 typedef struct _DDSTEREOMODE { 1088 DWORD dwSize; 1089 DWORD dwHeight; 1090 DWORD dwWidth; 1091 DWORD dwBpp; 1092 DWORD dwRefreshRate; 1093 BOOL bSupported; 1094 } DDSTEREOMODE, *LPDDSTEREOMODE; 1095 1096 /***************************************************************************** 1097 * high-level ddraw implementation structures 1098 */ 1099 typedef struct _IUNKNOWN_LIST { 1100 struct _IUNKNOWN_LIST *lpLink; 1101 LPGUID lpGuid; 1102 #ifndef _NO_COM 1103 IUnknown *lpIUnknown; 1104 #else 1105 LPVOID lpIUnknown; 1106 #endif /* _NO_COM */ 1107 } IUNKNOWN_LIST, *LPIUNKNOWN_LIST; 1108 1109 typedef struct _PROCESS_LIST { 1110 struct _PROCESS_LIST *lpLink; 1111 DWORD dwProcessId; 1112 DWORD dwRefCnt; 1113 DWORD dwAlphaDepth; 1114 DWORD dwZDepth; 1115 } PROCESS_LIST, *LPPROCESS_LIST; 1116 1117 typedef struct _ATTACHLIST { 1118 DWORD dwFlags; 1119 struct _ATTACHLIST *lpLink; 1120 LPDDRAWI_DDRAWSURFACE_LCL lpAttached; 1121 LPDDRAWI_DDRAWSURFACE_INT lpIAttached; 1122 } ATTACHLIST, *LPATTACHLIST; 1123 1124 #define DDAL_IMPLICIT 0x00000001 1125 1126 typedef struct _ACCESSRECTLIST { 1127 struct _ACCESSRECTLIST *lpLink; 1128 RECT rDest; 1129 LPDDRAWI_DIRECTDRAW_LCL lpOwner; 1130 LPVOID lpSurfaceData; 1131 DWORD dwFlags; 1132 LPHEAPALIASINFO lpHeapAliasInfo; 1133 } ACCESSRECTLIST, *LPACCESSRECTLIST; 1134 1135 #define ACCESSRECT_VRAMSTYLE 0x00000001 1136 #define ACCESSRECT_NOTHOLDINGWIN16LOCK 0x00000002 1137 #define ACCESSRECT_BROKEN 0x00000004 1138 1139 typedef struct _DBLNODE { 1140 struct _DBLNODE *next; 1141 struct _DBLNODE *prev; 1142 LPDDRAWI_DDRAWSURFACE_LCL object; 1143 LPDDRAWI_DDRAWSURFACE_INT object_int; 1144 } DBLNODE, *LPDBLNODE; 1145 1146 typedef struct _DDRAWI_DIRECTDRAW_INT { 1147 LPVOID lpVtbl; 1148 LPDDRAWI_DIRECTDRAW_LCL lpLcl; 1149 LPDDRAWI_DIRECTDRAW_INT lpLink; 1150 DWORD dwIntRefCnt; 1151 } DDRAWI_DIRECTDRAW_INT; 1152 1153 typedef struct _DDRAWI_DIRECTDRAW_LCL { 1154 DWORD lpDDMore; 1155 LPDDRAWI_DIRECTDRAW_GBL lpGbl; 1156 DWORD dwUnused0; 1157 DWORD dwLocalFlags; 1158 DWORD dwLocalRefCnt; 1159 DWORD dwProcessId; 1160 #ifndef _NO_COM 1161 IUnknown *pUnkOuter; 1162 #else 1163 PVOID pUnkOuter; 1164 #endif 1165 DWORD dwObsolete1; 1166 ULONG_PTR hWnd; 1167 ULONG_PTR hDC; 1168 DWORD dwErrorMode; 1169 LPDDRAWI_DDRAWSURFACE_INT lpPrimary; 1170 LPDDRAWI_DDRAWSURFACE_INT lpCB; 1171 DWORD dwPreferredMode; 1172 /* DirectX 2 */ 1173 HINSTANCE hD3DInstance; 1174 #ifndef _NO_COM 1175 IUnknown *pD3DIUnknown; 1176 #else 1177 PVOID pD3DIUnknown; 1178 #endif 1179 LPDDHAL_CALLBACKS lpDDCB; 1180 ULONG_PTR hDDVxd; 1181 /* DirectX 5.0 */ 1182 DWORD dwAppHackFlags; 1183 /* DirectX 5.0A */ 1184 ULONG_PTR hFocusWnd; 1185 DWORD dwHotTracking; 1186 DWORD dwIMEState; 1187 /* DirectX 6.0 */ 1188 ULONG_PTR hWndPopup; 1189 ULONG_PTR hDD; 1190 ULONG_PTR hGammaCalibrator; 1191 LPDDGAMMACALIBRATORPROC lpGammaCalibrator; 1192 } DDRAWI_DIRECTDRAW_LCL; 1193 1194 #define DDRAWILCL_HASEXCLUSIVEMODE 0x00000001 1195 #define DDRAWILCL_ISFULLSCREEN 0x00000002 1196 #define DDRAWILCL_SETCOOPCALLED 0x00000004 1197 #define DDRAWILCL_ACTIVEYES 0x00000008 1198 #define DDRAWILCL_ACTIVENO 0x00000010 1199 #define DDRAWILCL_HOOKEDHWND 0x00000020 1200 #define DDRAWILCL_ALLOWMODEX 0x00000040 1201 #define DDRAWILCL_V1SCLBEHAVIOUR 0x00000080 1202 #define DDRAWILCL_MODEHASBEENCHANGED 0x00000100 1203 #define DDRAWILCL_CREATEDWINDOW 0x00000200 1204 #define DDRAWILCL_DIRTYDC 0x00000400 1205 #define DDRAWILCL_DISABLEINACTIVATE 0x00000800 1206 #define DDRAWILCL_CURSORCLIPPED 0x00001000 1207 #define DDRAWILCL_EXPLICITMONITOR 0x00002000 1208 #define DDRAWILCL_MULTITHREADED 0x00004000 1209 #define DDRAWILCL_FPUSETUP 0x00008000 1210 #define DDRAWILCL_POWEREDDOWN 0x00010000 1211 #define DDRAWILCL_DIRECTDRAW7 0x00020000 1212 #define DDRAWILCL_ATTEMPTEDD3DCONTEXT 0x00040000 1213 #define DDRAWILCL_FPUPRESERVE 0x00080000 1214 #define DDRAWILCL_DX8DRIVER 0x00100000 1215 #define DDRAWILCL_DIRECTDRAW8 0x00200000 1216 1217 typedef struct _DDRAWI_DIRECTDRAW_GBL { 1218 DWORD dwRefCnt; 1219 DWORD dwFlags; 1220 FLATPTR fpPrimaryOrig; 1221 DDCORECAPS ddCaps; 1222 DWORD dwInternal1; 1223 DWORD dwUnused1[9]; 1224 LPDDHAL_CALLBACKS lpDDCBtmp; 1225 LPDDRAWI_DDRAWSURFACE_INT dsList; 1226 LPDDRAWI_DDRAWPALETTE_INT palList; 1227 LPDDRAWI_DDRAWCLIPPER_INT clipperList; 1228 LPDDRAWI_DIRECTDRAW_GBL lp16DD; 1229 DWORD dwMaxOverlays; 1230 DWORD dwCurrOverlays; 1231 DWORD dwMonitorFrequency; 1232 DDCORECAPS ddHELCaps; 1233 DWORD dwUnused2[50]; 1234 DDCOLORKEY ddckCKDestOverlay; 1235 DDCOLORKEY ddckCKSrcOverlay; 1236 VIDMEMINFO vmiData; 1237 LPVOID lpDriverHandle; 1238 LPDDRAWI_DIRECTDRAW_LCL lpExclusiveOwner; 1239 DWORD dwModeIndex; 1240 DWORD dwModeIndexOrig; 1241 DWORD dwNumFourCC; 1242 LPDWORD lpdwFourCC; 1243 DWORD dwNumModes; 1244 LPDDHALMODEINFO lpModeInfo; 1245 PROCESS_LIST plProcessList; 1246 DWORD dwSurfaceLockCount; 1247 DWORD dwAliasedLockCnt; 1248 ULONG_PTR dwReserved3; 1249 ULONG_PTR hDD; 1250 char cObsolete[12]; 1251 DWORD dwReserved1; 1252 DWORD dwReserved2; 1253 DBLNODE dbnOverlayRoot; 1254 volatile LPWORD lpwPDeviceFlags; 1255 DWORD dwPDevice; 1256 DWORD dwWin16LockCnt; 1257 DWORD dwUnused3; 1258 DWORD hInstance; 1259 DWORD dwEvent16; 1260 DWORD dwSaveNumModes; 1261 /* DirectX 2 */ 1262 ULONG_PTR lpD3DGlobalDriverData; 1263 ULONG_PTR lpD3DHALCallbacks; 1264 DDCORECAPS ddBothCaps; 1265 /* DirectX 5.0 */ 1266 LPDDVIDEOPORTCAPS lpDDVideoPortCaps; 1267 LPDDRAWI_DDVIDEOPORT_INT dvpList; 1268 ULONG_PTR lpD3DHALCallbacks2; 1269 RECT rectDevice; 1270 DWORD cMonitors; 1271 LPVOID gpbmiSrc; 1272 LPVOID gpbmiDest; 1273 LPHEAPALIASINFO phaiHeapAliases; 1274 ULONG_PTR hKernelHandle; 1275 ULONG_PTR pfnNotifyProc; 1276 LPDDKERNELCAPS lpDDKernelCaps; 1277 LPDDNONLOCALVIDMEMCAPS lpddNLVCaps; 1278 LPDDNONLOCALVIDMEMCAPS lpddNLVHELCaps; 1279 LPDDNONLOCALVIDMEMCAPS lpddNLVBothCaps; 1280 ULONG_PTR lpD3DExtendedCaps; 1281 /* DirectX 5.0A */ 1282 DWORD dwDOSBoxEvent; 1283 RECT rectDesktop; 1284 char cDriverName[MAX_DRIVER_NAME]; 1285 /* DirectX 6.0 */ 1286 ULONG_PTR lpD3DHALCallbacks3; 1287 DWORD dwNumZPixelFormats; 1288 LPDDPIXELFORMAT lpZPixelFormats; 1289 LPDDRAWI_DDMOTIONCOMP_INT mcList; 1290 DWORD hDDVxd; 1291 DDSCAPSEX ddsCapsMore; 1292 } DDRAWI_DIRECTDRAW_GBL; 1293 1294 #define DDRAWI_xxxxxxxxx1 0x00000001 1295 #define DDRAWI_xxxxxxxxx2 0x00000002 1296 #define DDRAWI_VIRTUALDESKTOP 0x00000008 1297 #define DDRAWI_MODEX 0x00000010 1298 #define DDRAWI_DISPLAYDRV 0x00000020 1299 #define DDRAWI_FULLSCREEN 0x00000040 1300 #define DDRAWI_MODECHANGED 0x00000080 1301 #define DDRAWI_NOHARDWARE 0x00000100 1302 #define DDRAWI_PALETTEINIT 0x00000200 1303 #define DDRAWI_NOEMULATION 0x00000400 1304 #define DDRAWI_HASCKEYDESTOVERLAY 0x00000800 1305 #define DDRAWI_HASCKEYSRCOVERLAY 0x00001000 1306 #define DDRAWI_HASGDIPALETTE 0x00002000 1307 #define DDRAWI_EMULATIONINITIALIZED 0x00004000 1308 #define DDRAWI_HASGDIPALETTE_EXCLUSIVE 0x00008000 1309 #define DDRAWI_MODEXILLEGAL 0x00010000 1310 #define DDRAWI_FLIPPEDTOGDI 0x00020000 1311 #define DDRAWI_NEEDSWIN16FORVRAMLOCK 0x00040000 1312 #define DDRAWI_PDEVICEVRAMBITCLEARED 0x00080000 1313 #define DDRAWI_STANDARDVGA 0x00100000 1314 #define DDRAWI_EXTENDEDALIGNMENT 0x00200000 1315 #define DDRAWI_CHANGINGMODE 0x00400000 1316 #define DDRAWI_GDIDRV 0x00800000 1317 #define DDRAWI_ATTACHEDTODESKTOP 0x01000000 1318 #define DDRAWI_UMODELOADED 0x02000000 1319 #define DDRAWI_DDRAWDATANOTFETCHED 0x04000000 1320 #define DDRAWI_SECONDARYDRIVERLOADED 0x08000000 1321 #define DDRAWI_TESTINGMODES 0x10000000 1322 #define DDRAWI_DRIVERINFO2 0x20000000 1323 #define DDRAWI_BADPDEV 0x40000000 1324 1325 /* surfaces */ 1326 typedef struct _DDRAWI_DDRAWSURFACE_INT { 1327 LPVOID lpVtbl; 1328 LPDDRAWI_DDRAWSURFACE_LCL lpLcl; 1329 LPDDRAWI_DDRAWSURFACE_INT lpLink; 1330 DWORD dwIntRefCnt; 1331 } DDRAWI_DDRAWSURFACE_INT; 1332 1333 typedef struct _DDRAWI_DDRAWSURFACE_GBL { 1334 DWORD dwRefCnt; 1335 DWORD dwGlobalFlags; 1336 __GNU_EXTENSION union { 1337 LPACCESSRECTLIST lpRectList; 1338 DWORD dwBlockSizeY; 1339 LONG lSlicePitch; 1340 }; 1341 __GNU_EXTENSION union { 1342 LPVMEMHEAP lpVidMemHeap; 1343 DWORD dwBlockSizeX; 1344 }; 1345 __GNU_EXTENSION union { 1346 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1347 LPVOID lpDDHandle; 1348 }; 1349 FLATPTR fpVidMem; 1350 __GNU_EXTENSION union { 1351 LONG lPitch; 1352 DWORD dwLinearSize; 1353 }; 1354 WORD wHeight; 1355 WORD wWidth; 1356 DWORD dwUsageCount; 1357 ULONG_PTR dwReserved1; 1358 DDPIXELFORMAT ddpfSurface; 1359 } DDRAWI_DDRAWSURFACE_GBL; 1360 1361 #define DDRAWISURFGBL_MEMFREE 0x00000001L 1362 #define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L 1363 #define DDRAWISURFGBL_ISGDISURFACE 0x00000004L 1364 #define DDRAWISURFGBL_SOFTWAREAUTOFLIP 0x00000008L 1365 #define DDRAWISURFGBL_LOCKNOTHOLDINGWIN16LOCK 0x00000010L 1366 #define DDRAWISURFGBL_LOCKVRAMSTYLE 0x00000020L 1367 #define DDRAWISURFGBL_LOCKBROKEN 0x00000040L 1368 #define DDRAWISURFGBL_IMPLICITHANDLE 0x00000080L 1369 #define DDRAWISURFGBL_ISCLIENTMEM 0x00000100L 1370 #define DDRAWISURFGBL_HARDWAREOPSOURCE 0x00000200L 1371 #define DDRAWISURFGBL_HARDWAREOPDEST 0x00000400L 1372 #define DDRAWISURFGBL_HARDWAREOPSTARTED (DDRAWISURFGBL_HARDWAREOPSOURCE|DDRAWISURFGBL_HARDWAREOPDEST) 1373 #define DDRAWISURFGBL_VPORTINTERLEAVED 0x00000800L 1374 #define DDRAWISURFGBL_VPORTDATA 0x00001000L 1375 #define DDRAWISURFGBL_LATEALLOCATELINEAR 0x00002000L 1376 #define DDRAWISURFGBL_SYSMEMEXECUTEBUFFER 0x00004000L 1377 #define DDRAWISURFGBL_FASTLOCKHELD 0x00008000L 1378 #define DDRAWISURFGBL_READONLYLOCKHELD 0x00010000L 1379 #define DDRAWISURFGBL_DX8SURFACE 0x00080000L 1380 #define DDRAWISURFGBL_DDHELDONTFREE 0x00100000L 1381 #define DDRAWISURFGBL_NOTIFYWHENUNLOCKED 0x00200000L 1382 #define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag 1383 1384 typedef struct _DDRAWI_DDRAWSURFACE_GBL_MORE { 1385 DWORD dwSize; 1386 __GNU_EXTENSION union { 1387 DWORD dwPhysicalPageTable; 1388 FLATPTR fpPhysicalVidMem; 1389 }; 1390 LPDWORD pPageTable; 1391 DWORD cPages; 1392 ULONG_PTR dwSavedDCContext; 1393 FLATPTR fpAliasedVidMem; 1394 ULONG_PTR dwDriverReserved; 1395 ULONG_PTR dwHELReserved; 1396 DWORD cPageUnlocks; 1397 ULONG_PTR hKernelSurface; 1398 DWORD dwKernelRefCnt; 1399 LPDDCOLORCONTROL lpColorInfo; 1400 FLATPTR fpNTAlias; 1401 DWORD dwContentsStamp; 1402 LPVOID lpvUnswappedDriverReserved; 1403 LPVOID lpDDRAWReserved2; 1404 DWORD dwDDRAWReserved1; 1405 DWORD dwDDRAWReserved2; 1406 FLATPTR fpAliasOfVidMem; 1407 } DDRAWI_DDRAWSURFACE_GBL_MORE; 1408 1409 /* the MS version of this macro was somewhat obfuscated and unreadable 1410 * (possibly because of mediocre MS coders)... so I simplified it... 1411 * (and so I commit no copyright violations either, hah) */ 1412 #define GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl) \ 1413 (*(((LPDDRAWI_DDRAWSURFACE_GBL_MORE *)(psurf_gbl)) - 1)) 1414 1415 #define SURFACE_PHYSICALVIDMEM( psurf_gbl ) \ 1416 ( GET_LPDDRAWSURFACE_GBL_MORE(psurf_gbl )->fpPhysicalVidMem ) 1417 1418 typedef struct _DISPLAYMODEINFO { 1419 WORD wWidth; 1420 WORD wHeight; 1421 BYTE wBPP; 1422 BYTE wMonitorsAttachedToDesktop; 1423 WORD wRefreshRate; 1424 } DISPLAYMODEINFO, *LPDISPLAYMODEINFO; 1425 1426 #define EQUAL_DISPLAYMODE ( A, B ) (0 == memcmp(&(A), &(B), sizeof (DISPLAYMODEINFO))) 1427 1428 typedef struct _DDRAWI_DDRAWSURFACE_MORE { 1429 DWORD dwSize; 1430 IUNKNOWN_LIST *lpIUnknowns; 1431 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; 1432 DWORD dwPageLockCount; 1433 DWORD dwBytesAllocated; 1434 LPDDRAWI_DIRECTDRAW_INT lpDD_int; 1435 DWORD dwMipMapCount; 1436 LPDDRAWI_DDRAWCLIPPER_INT lpDDIClipper; 1437 /* DirectX 5.0 */ 1438 LPHEAPALIASINFO lpHeapAliasInfo; 1439 DWORD dwOverlayFlags; 1440 VOID *rgjunc; 1441 LPDDRAWI_DDVIDEOPORT_LCL lpVideoPort; 1442 LPDDOVERLAYFX lpddOverlayFX; 1443 DDSCAPSEX ddsCapsEx; 1444 DWORD dwTextureStage; 1445 LPVOID lpDDRAWReserved; 1446 LPVOID lpDDRAWReserved2; 1447 LPVOID lpDDrawReserved3; 1448 DWORD dwDDrawReserved4; 1449 LPVOID lpDDrawReserved5; 1450 LPDWORD lpGammaRamp; 1451 LPDWORD lpOriginalGammaRamp; 1452 LPVOID lpDDrawReserved6; 1453 # ifndef WIN95 1454 DISPLAYMODEINFO dmiDDrawReserved7; 1455 # endif 1456 DWORD dwSurfaceHandle; 1457 DWORD qwDDrawReserved8[2]; 1458 LPVOID lpDDrawReserved9; 1459 DWORD cSurfaces; 1460 LPDDSURFACEDESC2 pCreatedDDSurfaceDesc2; 1461 LPDDRAWI_DDRAWSURFACE_LCL *slist; 1462 DWORD dwFVF; 1463 LPVOID lpVB; 1464 } DDRAWI_DDRAWSURFACE_MORE; 1465 1466 typedef struct _DDRAWI_DDRAWSURFACE_LCL { 1467 LPDDRAWI_DDRAWSURFACE_MORE lpSurfMore; 1468 LPDDRAWI_DDRAWSURFACE_GBL lpGbl; 1469 ULONG_PTR hDDSurface; 1470 LPATTACHLIST lpAttachList; 1471 LPATTACHLIST lpAttachListFrom; 1472 DWORD dwLocalRefCnt; 1473 DWORD dwProcessId; 1474 DWORD dwFlags; 1475 DDSCAPS ddsCaps; 1476 __GNU_EXTENSION union { 1477 LPDDRAWI_DDRAWPALETTE_INT lpDDPalette; 1478 LPDDRAWI_DDRAWPALETTE_INT lp16DDPalette; 1479 }; 1480 __GNU_EXTENSION union { 1481 LPDDRAWI_DDRAWCLIPPER_LCL lpDDClipper; 1482 LPDDRAWI_DDRAWCLIPPER_INT lp16DDClipper; 1483 }; 1484 DWORD dwModeCreatedIn; 1485 DWORD dwBackBufferCount; 1486 DDCOLORKEY ddckCKDestBlt; 1487 DDCOLORKEY ddckCKSrcBlt; 1488 ULONG_PTR hDC; 1489 ULONG_PTR dwReserved1; 1490 DDCOLORKEY ddckCKSrcOverlay; 1491 DDCOLORKEY ddckCKDestOverlay; 1492 LPDDRAWI_DDRAWSURFACE_INT lpSurfaceOverlaying; 1493 DBLNODE dbnOverlayNode; 1494 RECT rcOverlaySrc; 1495 RECT rcOverlayDest; 1496 DWORD dwClrXparent; 1497 DWORD dwAlpha; 1498 LONG lOverlayX; 1499 LONG lOverlayY; 1500 } DDRAWI_DDRAWSURFACE_LCL; 1501 1502 #define DDRAWISURF_ATTACHED 0x00000001L 1503 #define DDRAWISURF_IMPLICITCREATE 0x00000002L 1504 #define DDRAWISURF_ISFREE 0x00000004L 1505 #define DDRAWISURF_ATTACHED_FROM 0x00000008L 1506 #define DDRAWISURF_IMPLICITROOT 0x00000010L 1507 #define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L 1508 #define DDRAWISURF_DATAISALIASED 0x00000040L 1509 #define DDRAWISURF_HASDC 0x00000080L 1510 #define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L 1511 #define DDRAWISURF_HASCKEYDESTBLT 0x00000200L 1512 #define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L 1513 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L 1514 #define DDRAWISURF_LOCKEXCLUDEDCURSOR 0x00001000L 1515 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L 1516 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L 1517 #define DDRAWISURF_SETGAMMA 0x00008000L 1518 #define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L 1519 #define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L 1520 #define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L 1521 #define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L 1522 #define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L 1523 #define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L 1524 #define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L 1525 #define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L 1526 #define DDRAWISURF_INMASTERSPRITELIST 0x01000000L 1527 #define DDRAWISURF_HELCB 0x02000000L 1528 #define DDRAWISURF_FRONTBUFFER 0x04000000L 1529 #define DDRAWISURF_BACKBUFFER 0x08000000L 1530 #define DDRAWISURF_INVALID 0x10000000L 1531 #define DDRAWISURF_DCIBUSY 0x20000000L 1532 #define DDRAWISURF_GETDCNULL 0x40000000L 1533 #define DDRAWISURF_STEREOSURFACELEFT 0x20000000L 1534 #define DDRAWISURF_DRIVERMANAGED 0x40000000L 1535 #define DDRAWISURF_DCILOCK 0x80000000L 1536 1537 /* palettes */ 1538 typedef struct _DDRAWI_DDRAWPALETTE_INT { 1539 LPVOID lpVtbl; 1540 LPDDRAWI_DDRAWPALETTE_LCL lpLcl; 1541 LPDDRAWI_DDRAWPALETTE_INT lpLink; 1542 DWORD dwIntRefCnt; 1543 } DDRAWI_DDRAWPALETTE_INT; 1544 1545 typedef struct _DDRAWI_DDRAWPALETTE_GBL { 1546 DWORD dwRefCnt; 1547 DWORD dwFlags; 1548 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; 1549 DWORD dwProcessId; 1550 LPPALETTEENTRY lpColorTable; 1551 __GNU_EXTENSION union { 1552 ULONG_PTR dwReserved1; 1553 HPALETTE hHELGDIPalette; 1554 }; 1555 DWORD dwDriverReserved; 1556 DWORD dwContentsStamp; 1557 DWORD dwSaveStamp; 1558 DWORD dwHandle; 1559 } DDRAWI_DDRAWPALETTE_GBL; 1560 1561 #define DDRAWIPAL_256 0x00000001 1562 #define DDRAWIPAL_16 0x00000002 1563 #define DDRAWIPAL_GDI 0x00000004 1564 #define DDRAWIPAL_STORED_8 0x00000008 1565 #define DDRAWIPAL_STORED_16 0x00000010 1566 #define DDRAWIPAL_STORED_24 0x00000020 1567 #define DDRAWIPAL_EXCLUSIVE 0x00000040 1568 #define DDRAWIPAL_INHEL 0x00000080 1569 #define DDRAWIPAL_DIRTY 0x00000100 1570 #define DDRAWIPAL_ALLOW256 0x00000200 1571 #define DDRAWIPAL_4 0x00000400 1572 #define DDRAWIPAL_2 0x00000800 1573 #define DDRAWIPAL_STORED_8INDEX 0x00001000 1574 #define DDRAWIPAL_ALPHA 0x00002000 1575 1576 #define D3DFORMAT_OP_TEXTURE 0x00000001L 1577 #define D3DFORMAT_OP_VOLUMETEXTURE 0x00000002L 1578 #define D3DFORMAT_OP_CUBETEXTURE 0x00000004L 1579 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET 0x00000008L 1580 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET 0x00000010L 1581 #define D3DFORMAT_OP_ZSTENCIL 0x00000040L 1582 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH 0x00000080L 1583 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L 1584 #define D3DFORMAT_OP_DISPLAYMODE 0x00000400L 1585 #define D3DFORMAT_OP_3DACCELERATION 0x00000800L 1586 #define D3DFORMAT_OP_PIXELSIZE 0x00001000L 1587 #define D3DFORMAT_OP_CONVERT_TO_ARGB 0x00002000L 1588 #define D3DFORMAT_OP_OFFSCREENPLAIN 0x00004000L 1589 #define D3DFORMAT_OP_SRGBREAD 0x00008000L 1590 #define D3DFORMAT_OP_BUMPMAP 0x00010000L 1591 #define D3DFORMAT_OP_NOFILTER 0x00040000L 1592 #define DDPF_D3DFORMAT 0x00200000l 1593 #define DDPF_NOVEL_TEXTURE_FORMAT 0x00100000l 1594 #define D3DFORMAT_MEMBEROFGROUP_ARGB 0x00080000L 1595 #define D3DFORMAT_OP_SRGBWRITE 0x00100000L 1596 #define D3DFORMAT_OP_NOALPHABLEND 0x00200000L 1597 #define D3DFORMAT_OP_AUTOGENMIPMAP 0x00400000L 1598 #define D3DFORMAT_OP_VERTEXTEXTURE 0x00800000L 1599 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP 0x01000000L 1600 #define DELETED_OK 0 1601 #define DELETED_LASTONE 1 1602 #define DELETED_NOTFOUND 2 1603 #define DDCALLBACKSSIZE_V1 (offsetof(DDHAL_DDCALLBACKS, SetExclusiveMode)) 1604 #define DDCALLBACKSSIZE sizeof( DDHAL_DDCALLBACKS ) 1605 #define DDRAWICLIP_WATCHWINDOW 0x00000001 1606 #define DDRAWICLIP_ISINITIALIZED 0x00000002 1607 #define DDRAWICLIP_INMASTERSPRITELIST 0x00000004 1608 #define PFINDEX_UNINITIALIZED (0UL) 1609 #define PFINDEX_UNSUPPORTED (~0UL) 1610 #define ROP_HAS_SOURCE 0x00000001l 1611 #define ROP_HAS_PATTERN 0x00000002l 1612 #define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN 1613 #define DDRAWIVPORT_ON 0x00000001 1614 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP 0x00000002 1615 #define DDRAWIVPORT_COLORKEYANDINTERP 0x00000004 1616 #define DDRAWIVPORT_NOKERNELHANDLES 0x00000008 1617 #define DDRAWIVPORT_SOFTWARE_BOB 0x00000010 1618 #define DDRAWIVPORT_VBION 0x00000020 1619 #define DDRAWIVPORT_VIDEOON 0x00000040 1620 #define DDRAWI_GETCOLOR 0x0001 1621 #define DDRAWI_SETCOLOR 0x0002 1622 #define DDMCQUERY_READ 0x00000001 1623 #define DDWAITVB_I_TESTVB 0x80000006 1624 1625 #define DDBLT_ANYALPHA \ 1626 (DDBLT_ALPHASRCSURFACEOVERRIDE | DDBLT_ALPHASRCCONSTOVERRIDE | \ 1627 DDBLT_ALPHASRC | DDBLT_ALPHADESTSURFACEOVERRIDE | \ 1628 DDBLT_ALPHADESTCONSTOVERRIDE | DDBLT_ALPHADEST) 1629 1630 #define DDHAL_ALIGNVALIDCAPS (DDSCAPS_OFFSCREENPLAIN | DDSCAPS_EXECUTEBUFFER | \ 1631 DDSCAPS_OVERLAY | DDSCAPS_TEXTURE | \ 1632 DDSCAPS_ZBUFFER | DDSCAPS_ALPHA | DDSCAPS_FLIP ) 1633 1634 #define DDHALINFOSIZE_V2 sizeof(DDHALINFO) 1635 1636 #define DDOVER_ANYALPHA \ 1637 (DDOVER_ALPHASRCSURFACEOVERRIDE | DDOVER_ALPHASRCCONSTOVERRIDE | \ 1638 DDOVER_ALPHASRC | DDOVER_ALPHADESTSURFACEOVERRIDE | \ 1639 DDOVER_ALPHADESTCONSTOVERRIDE | DDOVER_ALPHADEST) 1640 1641 typedef struct _DDRAWI_DDRAWPALETTE_LCL { 1642 DWORD lpPalMore; 1643 LPDDRAWI_DDRAWPALETTE_GBL lpGbl; 1644 ULONG_PTR dwUnused0; 1645 DWORD dwLocalRefCnt; 1646 #ifndef _NO_COM 1647 IUnknown *pUnkOuter; 1648 #else 1649 PVOID pUnkOuter; 1650 #endif 1651 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; 1652 ULONG_PTR dwReserved1; 1653 /* DirectX 6.0 */ 1654 ULONG_PTR dwDDRAWReserved1; 1655 ULONG_PTR dwDDRAWReserved2; 1656 ULONG_PTR dwDDRAWReserved3; 1657 } DDRAWI_DDRAWPALETTE_LCL; 1658 1659 typedef struct _DDMCCOMPBUFFERINFO { 1660 DWORD dwSize; 1661 DWORD dwNumCompBuffers; 1662 DWORD dwWidthToCreate; 1663 DWORD dwHeightToCreate; 1664 DWORD dwBytesToAllocate; 1665 DDSCAPS2 ddCompCaps; 1666 DDPIXELFORMAT ddPixelFormat; 1667 } DDMCCOMPBUFFERINFO, *LPDDMCCOMPBUFFERINFO; 1668 1669 typedef struct _DDMCBUFFERINFO { 1670 DWORD dwSize; 1671 LPDDRAWI_DDRAWSURFACE_LCL lpCompSurface; 1672 DWORD dwDataOffset; 1673 DWORD dwDataSize; 1674 LPVOID lpPrivate; 1675 } DDMCBUFFERINFO, *LPDDMCBUFFERINFO; 1676 1677 typedef struct _DDHAL_GETDRIVERSTATEDATA { 1678 DWORD dwFlags; 1679 __GNU_EXTENSION union { 1680 ULONG_PTR dwhContext; 1681 }; 1682 LPDWORD lpdwStates; 1683 DWORD dwLength; 1684 HRESULT ddRVal; 1685 } DDHAL_GETDRIVERSTATEDATA; 1686 1687 typedef struct _DDHAL_ADDATTACHEDSURFACEDATA { 1688 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1689 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1690 LPDDRAWI_DDRAWSURFACE_LCL lpSurfAttached; 1691 HRESULT ddRVal; 1692 LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; 1693 } DDHAL_ADDATTACHEDSURFACEDATA; 1694 1695 typedef struct _DDHAL_BEGINMOCOMPFRAMEDATA { 1696 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1697 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1698 LPDDRAWI_DDRAWSURFACE_LCL lpDestSurface; 1699 DWORD dwInputDataSize; 1700 LPVOID lpInputData; 1701 DWORD dwOutputDataSize; 1702 LPVOID lpOutputData; 1703 HRESULT ddRVal; 1704 LPDDHALMOCOMPCB_BEGINFRAME BeginMoCompFrame; 1705 } DDHAL_BEGINMOCOMPFRAMEDATA; 1706 1707 typedef struct _DDHAL_COLORCONTROLDATA { 1708 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1709 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1710 LPDDCOLORCONTROL lpColorData; 1711 DWORD dwFlags; 1712 HRESULT ddRVal; 1713 LPDDHALCOLORCB_COLORCONTROL ColorControl; 1714 } DDHAL_COLORCONTROLDATA; 1715 1716 typedef struct _DDHAL_CREATEMOCOMPDATA { 1717 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1718 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1719 LPGUID lpGuid; 1720 DWORD dwUncompWidth; 1721 DWORD dwUncompHeight; 1722 DDPIXELFORMAT ddUncompPixelFormat; 1723 LPVOID lpData; 1724 DWORD dwDataSize; 1725 HRESULT ddRVal; 1726 LPDDHALMOCOMPCB_CREATE CreateMoComp; 1727 } DDHAL_CREATEMOCOMPDATA; 1728 1729 typedef struct _DDHAL_DESTROYMOCOMPDATA { 1730 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1731 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1732 HRESULT ddRVal; 1733 LPDDHALMOCOMPCB_DESTROY DestroyMoComp; 1734 } DDHAL_DESTROYMOCOMPDATA; 1735 1736 typedef struct _DDHAL_ENDMOCOMPFRAMEDATA { 1737 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1738 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1739 LPVOID lpInputData; 1740 DWORD dwInputDataSize; 1741 HRESULT ddRVal; 1742 LPDDHALMOCOMPCB_ENDFRAME EndMoCompFrame; 1743 } DDHAL_ENDMOCOMPFRAMEDATA; 1744 1745 typedef struct _DDHAL_FLIPTOGDISURFACEDATA { 1746 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1747 DWORD dwToGDI; 1748 DWORD dwReserved; 1749 HRESULT ddRVal; 1750 LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; 1751 } DDHAL_FLIPTOGDISURFACEDATA; 1752 1753 typedef struct _DDHAL_GETAVAILDRIVERMEMORYDATA { 1754 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1755 DDSCAPS DDSCaps; 1756 DWORD dwTotal; 1757 DWORD dwFree; 1758 HRESULT ddRVal; 1759 LPDDHAL_GETAVAILDRIVERMEMORY GetAvailDriverMemory; 1760 DDSCAPSEX ddsCapsEx; 1761 } DDHAL_GETAVAILDRIVERMEMORYDATA; 1762 1763 typedef struct _DDHAL_GETBLTSTATUSDATA { 1764 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1765 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1766 DWORD dwFlags; 1767 HRESULT ddRVal; 1768 LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; 1769 } DDHAL_GETBLTSTATUSDATA; 1770 1771 typedef struct _DDHAL_GETFLIPSTATUSDATA { 1772 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1773 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1774 DWORD dwFlags; 1775 HRESULT ddRVal; 1776 LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; 1777 } DDHAL_GETFLIPSTATUSDATA; 1778 1779 typedef struct _DDHAL_GETINTERNALMOCOMPDATA { 1780 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1781 LPGUID lpGuid; 1782 DWORD dwWidth; 1783 DWORD dwHeight; 1784 DDPIXELFORMAT ddPixelFormat; 1785 DWORD dwScratchMemAlloc; 1786 HRESULT ddRVal; 1787 LPDDHALMOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo; 1788 } DDHAL_GETINTERNALMOCOMPDATA; 1789 1790 typedef struct _DDHAL_GETMOCOMPCOMPBUFFDATA { 1791 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1792 LPGUID lpGuid; 1793 DWORD dwWidth; 1794 DWORD dwHeight; 1795 DDPIXELFORMAT ddPixelFormat; 1796 DWORD dwNumTypesCompBuffs; 1797 LPDDMCCOMPBUFFERINFO lpCompBuffInfo; 1798 HRESULT ddRVal; 1799 LPDDHALMOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo; 1800 } DDHAL_GETMOCOMPCOMPBUFFDATA; 1801 1802 typedef struct _DDHAL_GETMOCOMPGUIDSDATA { 1803 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1804 DWORD dwNumGuids; 1805 LPGUID lpGuids; 1806 HRESULT ddRVal; 1807 LPDDHALMOCOMPCB_GETGUIDS GetMoCompGuids; 1808 } DDHAL_GETMOCOMPGUIDSDATA; 1809 1810 typedef struct _DDHAL_GETMOCOMPFORMATSDATA { 1811 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1812 LPGUID lpGuid; 1813 DWORD dwNumFormats; 1814 LPDDPIXELFORMAT lpFormats; 1815 HRESULT ddRVal; 1816 LPDDHALMOCOMPCB_GETFORMATS GetMoCompFormats; 1817 } DDHAL_GETMOCOMPFORMATSDATA; 1818 1819 typedef struct _DDHAL_GETSCANLINEDATA { 1820 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1821 DWORD dwScanLine; 1822 HRESULT ddRVal; 1823 LPDDHAL_GETSCANLINE GetScanLine; 1824 } DDHAL_GETSCANLINEDATA; 1825 1826 typedef struct _DDHAL_QUERYMOCOMPSTATUSDATA { 1827 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1828 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1829 LPDDRAWI_DDRAWSURFACE_LCL lpSurface; 1830 DWORD dwFlags; 1831 HRESULT ddRVal; 1832 LPDDHALMOCOMPCB_QUERYSTATUS QueryMoCompStatus; 1833 } DDHAL_QUERYMOCOMPSTATUSDATA; 1834 1835 typedef struct _DDHAL_RENDERMOCOMPDATA { 1836 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1837 LPDDRAWI_DDMOTIONCOMP_LCL lpMoComp; 1838 DWORD dwNumBuffers; 1839 LPDDMCBUFFERINFO lpBufferInfo; 1840 DWORD dwFunction; 1841 LPVOID lpInputData; 1842 DWORD dwInputDataSize; 1843 LPVOID lpOutputData; 1844 DWORD dwOutputDataSize; 1845 HRESULT ddRVal; 1846 LPDDHALMOCOMPCB_RENDER RenderMoComp; 1847 } DDHAL_RENDERMOCOMPDATA; 1848 1849 typedef struct _DDHAL_SETCOLORKEYDATA { 1850 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1851 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1852 DWORD dwFlags; 1853 DDCOLORKEY ckNew; 1854 HRESULT ddRVal; 1855 LPDDHALSURFCB_SETCOLORKEY SetColorKey; 1856 } DDHAL_SETCOLORKEYDATA; 1857 1858 typedef struct _DDHAL_SETOVERLAYPOSITIONDATA { 1859 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1860 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; 1861 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; 1862 LONG lXPos; 1863 LONG lYPos; 1864 HRESULT ddRVal; 1865 LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; 1866 } DDHAL_SETOVERLAYPOSITIONDATA; 1867 1868 typedef struct _DDHAL_UPDATEOVERLAYDATA { 1869 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1870 LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface; 1871 RECTL rDest; 1872 LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; 1873 RECTL rSrc; 1874 DWORD dwFlags; 1875 DDOVERLAYFX overlayFX; 1876 HRESULT ddRVal; 1877 LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; 1878 } DDHAL_UPDATEOVERLAYDATA; 1879 1880 typedef struct _DDHAL_WAITFORVERTICALBLANKDATA { 1881 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1882 DWORD dwFlags; 1883 DWORD bIsInVB; 1884 ULONG_PTR hEvent; 1885 HRESULT ddRVal; 1886 LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; 1887 } DDHAL_WAITFORVERTICALBLANKDATA; 1888 1889 typedef struct _DDHAL_DRVSETCOLORKEYDATA { 1890 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1891 DWORD dwFlags; 1892 DDCOLORKEY ckNew; 1893 HRESULT ddRVal; 1894 LPDDHAL_SETCOLORKEY SetColorKey; 1895 } DDHAL_DRVSETCOLORKEYDATA; 1896 1897 typedef struct _DDMONITORINFO { 1898 WORD Manufacturer; 1899 WORD Product; 1900 DWORD SerialNumber; 1901 GUID DeviceIdentifier; 1902 int Mode640x480; 1903 int Mode800x600; 1904 int Mode1024x768; 1905 int Mode1280x1024; 1906 int Mode1600x1200; 1907 int ModeReserved1; 1908 int ModeReserved2; 1909 int ModeReserved3; 1910 } DDMONITORINFO, FAR *LPDDMONITORINFO; 1911 1912 typedef struct _DDRAWI_DDRAWCLIPPER_INT { 1913 LPVOID lpVtbl; 1914 LPDDRAWI_DDRAWCLIPPER_LCL lpLcl; 1915 LPDDRAWI_DDRAWCLIPPER_INT lpLink; 1916 DWORD dwIntRefCnt; 1917 } DDRAWI_DDRAWCLIPPER_INT; 1918 1919 typedef struct _DDHAL_UPDATENONLOCALHEAPDATA { 1920 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1921 DWORD dwHeap; 1922 FLATPTR fpGARTLin; 1923 FLATPTR fpGARTDev; 1924 ULONG_PTR ulPolicyMaxBytes; 1925 HRESULT ddRVal; 1926 LPDDHAL_UPDATENONLOCALHEAP UpdateNonLocalHeap; 1927 } DDHAL_UPDATENONLOCALHEAPDATA; 1928 1929 typedef struct _DDHAL_SETCLIPLISTDATA { 1930 LPDDRAWI_DIRECTDRAW_GBL lpDD; 1931 LPDDRAWI_DDRAWSURFACE_LCL lpDDSurface; 1932 HRESULT ddRVal; 1933 LPDDHALSURFCB_SETCLIPLIST SetClipList; 1934 } DDHAL_SETCLIPLISTDATA; 1935 1936 typedef struct _DDRAWI_DDMOTIONCOMP_LCL { 1937 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1938 GUID guid; 1939 DWORD dwUncompWidth; 1940 DWORD dwUncompHeight; 1941 DDPIXELFORMAT ddUncompPixelFormat; 1942 DWORD dwInternalFlags; 1943 DWORD dwRefCnt; 1944 DWORD dwProcessId; 1945 HANDLE hMoComp; 1946 DWORD dwDriverReserved1; 1947 DWORD dwDriverReserved2; 1948 DWORD dwDriverReserved3; 1949 LPVOID lpDriverReserved1; 1950 LPVOID lpDriverReserved2; 1951 LPVOID lpDriverReserved3; 1952 } DDRAWI_DDMOTIONCOMP_LCL; 1953 1954 typedef struct _DDRAWI_DDMOTIONCOMP_INT { 1955 LPVOID lpVtbl; 1956 LPDDRAWI_DDMOTIONCOMP_LCL lpLcl; 1957 LPDDRAWI_DDMOTIONCOMP_INT lpLink; 1958 DWORD dwIntRefCnt; 1959 } DDRAWI_DDMOTIONCOMP_INT; 1960 1961 typedef struct _DDRAWI_DDVIDEOPORT_LCL { 1962 LPDDRAWI_DIRECTDRAW_LCL lpDD; 1963 DDVIDEOPORTDESC ddvpDesc; 1964 DDVIDEOPORTINFO ddvpInfo; 1965 LPDDRAWI_DDRAWSURFACE_INT lpSurface; 1966 LPDDRAWI_DDRAWSURFACE_INT lpVBISurface; 1967 LPDDRAWI_DDRAWSURFACE_INT *lpFlipInts; 1968 DWORD dwNumAutoflip; 1969 DWORD dwProcessID; 1970 DWORD dwStateFlags; 1971 DWORD dwFlags; 1972 DWORD dwRefCnt; 1973 FLATPTR fpLastFlip; 1974 ULONG_PTR dwReserved1; 1975 ULONG_PTR dwReserved2; 1976 HANDLE hDDVideoPort; 1977 DWORD dwNumVBIAutoflip; 1978 LPDDVIDEOPORTDESC lpVBIDesc; 1979 LPDDVIDEOPORTDESC lpVideoDesc; 1980 LPDDVIDEOPORTINFO lpVBIInfo; 1981 LPDDVIDEOPORTINFO lpVideoInfo; 1982 DWORD dwVBIProcessID; 1983 LPDDRAWI_DDVIDEOPORT_INT lpVPNotify; 1984 } DDRAWI_DDVIDEOPORT_LCL; 1985 1986 typedef struct _DDRAWI_DDVIDEOPORT_INT { 1987 LPVOID lpVtbl; 1988 LPDDRAWI_DDVIDEOPORT_LCL lpLcl; 1989 LPDDRAWI_DDVIDEOPORT_INT lpLink; 1990 DWORD dwIntRefCnt; 1991 DWORD dwFlags; 1992 } DDRAWI_DDVIDEOPORT_INT; 1993 1994 typedef struct _DDRAWI_DDRAWCLIPPER_LCL { 1995 DWORD lpClipMore; 1996 LPDDRAWI_DDRAWCLIPPER_GBL lpGbl; 1997 LPDDRAWI_DIRECTDRAW_LCL lpDD_lcl; 1998 DWORD dwLocalRefCnt; 1999 #ifndef _NO_COM 2000 IUnknown *pUnkOuter; 2001 #else 2002 PVOID pUnkOuter; 2003 #endif 2004 LPDDRAWI_DIRECTDRAW_INT lpDD_int; 2005 ULONG_PTR dwReserved1; 2006 #ifndef _NO_COM 2007 IUnknown *pAddrefedThisOwner; 2008 #else 2009 PVOID pAddrefedThisOwner; 2010 #endif 2011 } DDRAWI_DDRAWCLIPPER_LCL; 2012 2013 typedef struct _DDRAWI_DDRAWCLIPPER_GBL { 2014 DWORD dwRefCnt; 2015 DWORD dwFlags; 2016 LPDDRAWI_DIRECTDRAW_GBL lpDD; 2017 DWORD dwProcessId; 2018 ULONG_PTR dwReserved1; 2019 ULONG_PTR hWnd; 2020 LPRGNDATA lpStaticClipList; 2021 } DDRAWI_DDRAWCLIPPER_GBL; 2022 2023 typedef BOOL (PASCAL *LPDDHEL_INIT)(LPDDRAWI_DIRECTDRAW_GBL,BOOL); 2024 2025 extern HRESULT DDAPI 2026 LateAllocateSurfaceMem( 2027 LPDIRECTDRAWSURFACE lpSurface, 2028 DWORD dwPleaseAllocType, 2029 DWORD dwWidthInBytesOrSize, 2030 DWORD dwHeight); 2031 2032 LPDIRECTDRAWSURFACE GetNextMipMap( 2033 LPDIRECTDRAWSURFACE lpLevel); 2034 2035 typedef struct IDirectDrawClipperVtbl DIRECTDRAWCLIPPERCALLBACKS; 2036 typedef struct IDirectDrawPaletteVtbl DIRECTDRAWPALETTECALLBACKS; 2037 typedef struct IDirectDrawSurfaceVtbl DIRECTDRAWSURFACECALLBACKS; 2038 typedef struct IDirectDrawSurface2Vtbl DIRECTDRAWSURFACE2CALLBACKS; 2039 typedef struct IDirectDrawSurface3Vtbl DIRECTDRAWSURFACE3CALLBACKS; 2040 typedef struct IDirectDrawSurface4Vtbl DIRECTDRAWSURFACE4CALLBACKS; 2041 typedef struct IDirectDrawSurface7Vtbl DIRECTDRAWSURFACE7CALLBACKS; 2042 typedef struct IDirectDrawColorControlVtbl DIRECTDRAWCOLORCONTROLCALLBACKS; 2043 typedef struct IDirectDrawVtbl DIRECTDRAWCALLBACKS; 2044 typedef struct IDirectDraw2Vtbl DIRECTDRAW2CALLBACKS; 2045 typedef struct IDirectDraw4Vtbl DIRECTDRAW4CALLBACKS; 2046 typedef struct IDirectDraw7Vtbl DIRECTDRAW7CALLBACKS; 2047 typedef struct IDirectDrawKernelVtbl DIRECTDRAWKERNELCALLBACKS; 2048 typedef struct IDirectDrawSurfaceKernelVtbl DIRECTDRAWSURFACEKERNELCALLBACKS; 2049 typedef struct IDirectDrawGammaControlVtbl DIRECTDRAWGAMMACONTROLCALLBACKS; 2050 2051 typedef DIRECTDRAWCLIPPERCALLBACKS *LPDIRECTDRAWCLIPPERCALLBACKS; 2052 typedef DIRECTDRAWPALETTECALLBACKS *LPDIRECTDRAWPALETTECALLBACKS; 2053 typedef DIRECTDRAWSURFACECALLBACKS *LPDIRECTDRAWSURFACECALLBACKS; 2054 typedef DIRECTDRAWCALLBACKS *LPDIRECTDRAWCALLBACKS; 2055 2056 HRESULT CALLBACK 2057 D3DParseUnknownCommand ( 2058 LPVOID lpvCommands, 2059 LPVOID *lplpvReturnedCommand); 2060 2061 #ifdef __cplusplus 2062 } /* extern "C" */ 2063 #endif 2064 2065 #endif /* __DDRAWI_INCLUDED__ */ 2066