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