• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * ddrawint.h
3  *
4  * DirectDraw NT driver interface
5  *
6  * Contributors:
7  *   Created by Ge van Geldorp
8  *
9  * THIS SOFTWARE IS NOT COPYRIGHTED
10  *
11  * This source code is offered for use in the public domain. You may
12  * use, modify or distribute it freely.
13  *
14  * This code is distributed in the hope that it will be useful but
15  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16  * DISCLAIMED. This includes but is not limited to warranties of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18  *
19  */
20 
21 #ifndef __DD_INCLUDED__
22 #define __DD_INCLUDED__
23 
24 DEFINE_GUID( GUID_MiscellaneousCallbacks,  0xEFD60CC0, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
25 DEFINE_GUID( GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
26 DEFINE_GUID( GUID_VideoPortCallbacks,      0xefd60cc1, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
27 DEFINE_GUID( GUID_ColorControlCallbacks,   0xefd60cc2, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
28 DEFINE_GUID( GUID_MotionCompCallbacks,     0xb1122b40, 0x5dA5, 0x11d1, 0x8f, 0xcF, 0x00, 0xc0, 0x4f, 0xc2, 0x9b, 0x4e);
29 DEFINE_GUID( GUID_VideoPortCaps,           0xefd60cc3, 0x49e7, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
30 DEFINE_GUID( GUID_D3DCaps,                 0x7bf06991, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02);
31 DEFINE_GUID( GUID_D3DExtendedCaps,         0x7de41f80, 0x9d93, 0x11d0, 0x89, 0xab, 0x00, 0xa0, 0xc9, 0x05, 0x41, 0x29);
32 DEFINE_GUID( GUID_D3DCallbacks,            0x7bf06990, 0x8794, 0x11d0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xd2, 0xef, 0x02);
33 DEFINE_GUID( GUID_D3DCallbacks2,           0xba584e1, 0x70b6, 0x11d0, 0x88, 0x9d, 0x0, 0xaa, 0x0, 0xbb, 0xb7, 0x6a);
34 DEFINE_GUID( GUID_D3DCallbacks3,           0xddf41230, 0xec0a, 0x11d0, 0xa9, 0xb6, 0x00, 0xaa, 0x00, 0xc0, 0x99, 0x3e);
35 DEFINE_GUID( GUID_NonLocalVidMemCaps,      0x86c4fa80, 0x8d84, 0x11d0, 0x94, 0xe8, 0x00, 0xc0, 0x4f, 0xc3, 0x41, 0x37);
36 DEFINE_GUID( GUID_KernelCallbacks,         0x80863800, 0x6B06, 0x11D0, 0x9B, 0x06, 0x0, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
37 DEFINE_GUID( GUID_KernelCaps,              0xFFAA7540, 0x7AA8, 0x11D0, 0x9B, 0x06, 0x00, 0xA0, 0xC9, 0x03, 0xA3, 0xB8);
38 DEFINE_GUID( GUID_ZPixelFormats,           0x93869880, 0x36cf, 0x11d1, 0x9b, 0x1b, 0x0, 0xaa, 0x0, 0xbb, 0xb8, 0xae);
39 DEFINE_GUID( GUID_DDMoreCaps,              0x880baf30, 0xb030, 0x11d0, 0x8e, 0xa7, 0x00, 0x60, 0x97, 0x97, 0xea, 0x5b);
40 DEFINE_GUID( GUID_D3DParseUnknownCommandCallback, 0x2e04ffa0, 0x98e4, 0x11d1, 0x8c, 0xe1, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
41 DEFINE_GUID( GUID_NTCallbacks,             0x6fe9ecde, 0xdf89, 0x11d1, 0x9d, 0xb0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xba);
42 DEFINE_GUID( GUID_DDMoreSurfaceCaps,       0x3b8a0466, 0xf269, 0x11d1, 0x88, 0x0b, 0x0, 0xc0, 0x4f, 0xd9, 0x30, 0xc5);
43 DEFINE_GUID( GUID_GetHeapAlignment,        0x42e02f16, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
44 DEFINE_GUID( GUID_UpdateNonLocalHeap,      0x42e02f17, 0x7b41, 0x11d2, 0x8b, 0xff, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
45 DEFINE_GUID( GUID_NTPrivateDriverCaps,     0xfad16a23, 0x7b66, 0x11d2, 0x83, 0xd7, 0x0, 0xc0, 0x4f, 0x7c, 0xe5, 0x8c);
46 DEFINE_GUID( GUID_DDStereoMode,            0xf828169c, 0xa8e8, 0x11d2, 0xa1, 0xf2, 0x0, 0xa0, 0xc9, 0x83, 0xea, 0xf6);
47 DEFINE_GUID( GUID_VPE2Callbacks,           0x52882147, 0x2d47, 0x469a, 0xa0, 0xd1, 0x3, 0x45, 0x58, 0x90, 0xf6, 0xc8);
48 
49 
50 #ifndef GUID_DEFS_ONLY
51 
52 #ifndef _NO_DDRAWINT_NO_COM
53 #ifndef _NO_COM
54 #define _NO_COM
55 #include <ddraw.h>
56 #include <dvp.h>
57 #undef _NO_COM
58 #else
59 #include <ddraw.h>
60 #include <dvp.h>
61 #endif
62 #else
63 #include <ddraw.h>
64 #include <dvp.h>
65 #endif
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 #ifndef MAKE_HRESULT // fixme this if statment should not be here, but MAKE_HRESULT should be here
72 #define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((ULONG)(sev)<<31) | ((ULONG)(fac)<<16) | ((ULONG)(code))) )
73 #endif
74 
75 #ifndef FLATPTR_DEFINED
76 typedef ULONG_PTR FLATPTR;
77 #define FLATPTR_DEFINED
78 #endif
79 
80 typedef struct _DD_VIDEOPORT_LOCAL   *PDD_VIDEOPORT_LOCAL;
81 
82 /************************************************************************/
83 /* _DD_GETHEAPALIGNMENTDATA is defined in dmemmgr.h                     */
84  /************************************************************************/
85 struct _DD_GETHEAPALIGNMENTDATA;
86 #ifndef DD_GETHEAPALIGNMENTDATA_DECLARED
87 typedef struct _DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA;
88 #define DD_GETHEAPALIGNMENTDATA_DECLARED
89 #endif
90 
91 /************************************************************************/
92 /* Video memory info structures                                         */
93 /************************************************************************/
94 
95 typedef struct _VIDEOMEMORY
96 {
97 	DWORD		dwFlags;
98 	FLATPTR		fpStart;
99 	__GNU_EXTENSION union {
100 	  FLATPTR	fpEnd;
101 	  DWORD		dwWidth;
102 	};
103 	DDSCAPS		ddsCaps;
104 	DDSCAPS		ddsCapsAlt;
105 	__GNU_EXTENSION union {
106 	  struct _VMEMHEAP  *lpHeap;
107 	  DWORD		dwHeight;
108 	};
109 } VIDEOMEMORY, *PVIDEOMEMORY;
110 
111 typedef struct _VIDEOMEMORYINFO
112 {
113 	FLATPTR		fpPrimary;
114 	DWORD		dwFlags;
115 	DWORD		dwDisplayWidth;
116 	DWORD		dwDisplayHeight;
117 	LONG		lDisplayPitch;
118 	DDPIXELFORMAT	ddpfDisplay;
119 	DWORD		dwOffscreenAlign;
120 	DWORD		dwOverlayAlign;
121 	DWORD		dwTextureAlign;
122 	DWORD		dwZBufferAlign;
123 	DWORD		dwAlphaAlign;
124 	PVOID		pvPrimary;
125 } VIDEOMEMORYINFO;
126 typedef VIDEOMEMORYINFO *LPVIDEOMEMORYINFO;
127 
128 typedef struct _DD_DIRECTDRAW_GLOBAL
129 {
130 	PVOID			dhpdev;
131 	ULONG_PTR		dwReserved1;
132 	ULONG_PTR		dwReserved2;
133 	LPDDVIDEOPORTCAPS	lpDDVideoPortCaps;
134 } DD_DIRECTDRAW_GLOBAL, *PDD_DIRECTDRAW_GLOBAL;
135 
136 typedef struct _DD_DIRECTDRAW_LOCAL
137 {
138 	PDD_DIRECTDRAW_GLOBAL	lpGbl;
139 } DD_DIRECTDRAW_LOCAL, *PDD_DIRECTDRAW_LOCAL;
140 
141 
142 typedef struct _DD_SURFACE_GLOBAL
143 {
144 	__GNU_EXTENSION union {
145 	  DWORD		dwBlockSizeY;
146 	  LONG		lSlicePitch;
147 	};
148 
149 	__GNU_EXTENSION union {
150 	  PVIDEOMEMORY	lpVidMemHeap;
151 	  DWORD		dwBlockSizeX;
152 	  DWORD		dwUserMemSize;
153 	};
154 
155 	FLATPTR		fpVidMem;
156 	__GNU_EXTENSION union {
157 	  LONG		lPitch;
158 	  DWORD		dwLinearSize;
159 	};
160 	LONG		yHint;
161 	LONG		xHint;
162 	DWORD		wHeight;
163 	DWORD		wWidth;
164 	ULONG_PTR	dwReserved1;
165 	DDPIXELFORMAT	ddpfSurface;
166 	FLATPTR		fpHeapOffset;
167 	HANDLE		hCreatorProcess;
168 } DD_SURFACE_GLOBAL, *PDD_SURFACE_GLOBAL;
169 
170 typedef struct _DD_SURFACE_MORE
171 {
172 	DWORD			dwMipMapCount;
173 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
174 	DWORD			dwOverlayFlags;
175 	DDSCAPSEX		ddsCapsEx;
176 	DWORD			dwSurfaceHandle;
177 } DD_SURFACE_MORE, *PDD_SURFACE_MORE;
178 
179 typedef struct _DD_ATTACHLIST *PDD_ATTACHLIST;
180 
181 typedef struct _DD_SURFACE_LOCAL
182 {
183 	PDD_SURFACE_GLOBAL	lpGbl;
184 	DWORD			dwFlags;
185 	DDSCAPS			ddsCaps;
186 	ULONG_PTR		dwReserved1;
187 	__GNU_EXTENSION union {
188 	  DDCOLORKEY		ddckCKSrcOverlay;
189 	  DDCOLORKEY		ddckCKSrcBlt;
190 	};
191 	__GNU_EXTENSION union {
192 	  DDCOLORKEY		ddckCKDestOverlay;
193 	  DDCOLORKEY		ddckCKDestBlt;
194 	};
195 	PDD_SURFACE_MORE	lpSurfMore;
196 	PDD_ATTACHLIST		lpAttachList;
197 	PDD_ATTACHLIST		lpAttachListFrom;
198 	RECT			rcOverlaySrc;
199 } DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL;
200 
201 typedef struct _DD_ATTACHLIST
202 {
203 	PDD_ATTACHLIST		lpLink;
204 	PDD_SURFACE_LOCAL	lpAttached;
205 } DD_ATTACHLIST;
206 
207 typedef struct _DD_SURFACE_INT
208 {
209 	PDD_SURFACE_LOCAL 	lpLcl;
210 } DD_SURFACE_INT, *PDD_SURFACE_INT;
211 
212 /************************************************************************/
213 /* DDI representation of the DirectDrawPalette object                   */
214 /************************************************************************/
215 
216 typedef struct _DD_PALETTE_GLOBAL
217 {
218 	ULONG_PTR           Reserved1;
219 } DD_PALETTE_GLOBAL, *PDD_PALETTE_GLOBAL;
220 
221 /************************************************************************/
222 /* DDI representation of the DirectDrawVideo object                     */
223 /************************************************************************/
224 
225 typedef struct
226 {
227 	PDD_DIRECTDRAW_LOCAL	lpDD;
228 	GUID			guid;
229 	DWORD			dwUncompWidth;
230 	DWORD			dwUncompHeight;
231 	DDPIXELFORMAT		ddUncompPixelFormat;
232 	DWORD			dwDriverReserved1;
233 	DWORD			dwDriverReserved2;
234 	DWORD			dwDriverReserved3;
235 	LPVOID			lpDriverReserved1;
236 	LPVOID			lpDriverReserved2;
237 	LPVOID			lpDriverReserved3;
238 } DD_MOTIONCOMP_LOCAL, *PDD_MOTIONCOMP_LOCAL;
239 
240 
241 typedef struct _DD_VIDEOPORT_LOCAL
242 {
243 	PDD_DIRECTDRAW_LOCAL	lpDD;
244 	DDVIDEOPORTDESC		ddvpDesc;
245 	DDVIDEOPORTINFO		ddvpInfo;
246 	PDD_SURFACE_INT		lpSurface;
247 	PDD_SURFACE_INT		lpVBISurface;
248 	DWORD			dwNumAutoflip;
249 	DWORD			dwNumVBIAutoflip;
250 	ULONG_PTR		dwReserved1;
251 	ULONG_PTR		dwReserved2;
252 	ULONG_PTR		dwReserved3;
253 } DD_VIDEOPORT_LOCAL;
254 
255 /************************************************************************/
256 /* IDirectDrawSurface callbacks                                         */
257 /************************************************************************/
258 
259 typedef struct _DD_LOCKDATA
260 {
261 	PDD_DIRECTDRAW_GLOBAL	lpDD;
262 	PDD_SURFACE_LOCAL	lpDDSurface;
263 	DWORD			bHasRect;
264 	RECTL			rArea;
265 	LPVOID			lpSurfData;
266 	HRESULT			ddRVal;
267 	PVOID			Lock;
268 	DWORD			dwFlags;
269 	FLATPTR			fpProcess;
270 } DD_LOCKDATA, *PDD_LOCKDATA;
271 typedef DWORD (WINAPI *PDD_SURFCB_LOCK)(PDD_LOCKDATA);
272 
273 
274 typedef struct _DD_UNLOCKDATA
275 {
276 	PDD_DIRECTDRAW_GLOBAL	lpDD;
277 	PDD_SURFACE_LOCAL	lpDDSurface;
278 	HRESULT			ddRVal;
279 	PVOID			Unlock;
280 } DD_UNLOCKDATA, *PDD_UNLOCKDATA;
281 typedef DWORD (WINAPI *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA);
282 
283 #define DDABLT_SRCOVERDEST		0x00000001
284 #define DDBLT_AFLAGS			0x80000000
285 
286 typedef struct _DD_BLTDATA
287 {
288 	PDD_DIRECTDRAW_GLOBAL	lpDD;
289 	PDD_SURFACE_LOCAL	lpDDDestSurface;
290 	RECTL			rDest;
291 	PDD_SURFACE_LOCAL	lpDDSrcSurface;
292 	RECTL			rSrc;
293 	DWORD			dwFlags;
294 	DWORD			dwROPFlags;
295 	DDBLTFX			bltFX;
296 	HRESULT			ddRVal;
297 	PVOID			Blt;
298 	WINBOOL			IsClipped;
299 	RECTL			rOrigDest;
300 	RECTL			rOrigSrc;
301 	DWORD			dwRectCnt;
302 	LPRECT			prDestRects;
303 	DWORD			dwAFlags;
304 	DDARGB			ddargbScaleFactors;
305 } DD_BLTDATA, *PDD_BLTDATA;
306 typedef DWORD (WINAPI *PDD_SURFCB_BLT)(PDD_BLTDATA);
307 
308 typedef struct _DD_UPDATEOVERLAYDATA
309 {
310 	PDD_DIRECTDRAW_GLOBAL	lpDD;
311 	PDD_SURFACE_LOCAL	lpDDDestSurface;
312 	RECTL			rDest;
313 	PDD_SURFACE_LOCAL	lpDDSrcSurface;
314 	RECTL			rSrc;
315 	DWORD			dwFlags;
316 	DDOVERLAYFX		overlayFX;
317 	HRESULT			ddRVal;
318 	PVOID			UpdateOverlay;
319 } DD_UPDATEOVERLAYDATA, *PDD_UPDATEOVERLAYDATA;
320 typedef DWORD (WINAPI *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA);
321 
322 typedef struct _DD_SETOVERLAYPOSITIONDATA
323 {
324 	PDD_DIRECTDRAW_GLOBAL	lpDD;
325 	PDD_SURFACE_LOCAL	lpDDSrcSurface;
326 	PDD_SURFACE_LOCAL	lpDDDestSurface;
327 	LONG			lXPos;
328 	LONG			lYPos;
329 	HRESULT			ddRVal;
330 	PVOID			SetOverlayPosition;
331 } DD_SETOVERLAYPOSITIONDATA, *PDD_SETOVERLAYPOSITIONDATA;
332 typedef DWORD (WINAPI *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA);
333 
334 typedef struct _DD_SETPALETTEDATA
335 {
336 	PDD_DIRECTDRAW_GLOBAL	lpDD;
337 	PDD_SURFACE_LOCAL	lpDDSurface;
338 	PDD_PALETTE_GLOBAL	lpDDPalette;
339 	HRESULT			ddRVal;
340 	PVOID			SetPalette;
341 	WINBOOL			Attach;
342 } DD_SETPALETTEDATA, *PDD_SETPALETTEDATA;
343 typedef DWORD (WINAPI *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA);
344 
345 typedef struct _DD_FLIPDATA
346 {
347 	PDD_DIRECTDRAW_GLOBAL	lpDD;
348 	PDD_SURFACE_LOCAL	lpSurfCurr;
349 	PDD_SURFACE_LOCAL	lpSurfTarg;
350 	DWORD			dwFlags;
351 	HRESULT			ddRVal;
352 	PVOID			Flip;
353 	PDD_SURFACE_LOCAL	lpSurfCurrLeft;
354 	PDD_SURFACE_LOCAL	lpSurfTargLeft;
355 } DD_FLIPDATA, *PDD_FLIPDATA;
356 typedef DWORD (WINAPI *PDD_SURFCB_FLIP)(PDD_FLIPDATA);
357 
358 typedef struct _DD_DESTROYSURFACEDATA
359 {
360 	PDD_DIRECTDRAW_GLOBAL	lpDD;
361 	PDD_SURFACE_LOCAL	lpDDSurface;
362 	HRESULT			ddRVal;
363 	PVOID			DestroySurface;
364 } DD_DESTROYSURFACEDATA, *PDD_DESTROYSURFACEDATA;
365 typedef DWORD (WINAPI *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA);
366 
367 typedef struct _DD_SETCLIPLISTDATA
368 {
369 	PDD_DIRECTDRAW_GLOBAL	lpDD;
370 	PDD_SURFACE_LOCAL	lpDDSurface;
371 	HRESULT			ddRVal;
372 	PVOID			SetClipList;
373 } DD_SETCLIPLISTDATA, *PDD_SETCLIPLISTDATA;
374 typedef DWORD (WINAPI *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA);
375 
376 typedef struct _DD_ADDATTACHEDSURFACEDATA
377 {
378 	PDD_DIRECTDRAW_GLOBAL	lpDD;
379 	PDD_SURFACE_LOCAL	lpDDSurface;
380 	PDD_SURFACE_LOCAL	lpSurfAttached;
381 	HRESULT			ddRVal;
382 	PVOID			AddAttachedSurface;
383 } DD_ADDATTACHEDSURFACEDATA, *PDD_ADDATTACHEDSURFACEDATA;
384 typedef DWORD (WINAPI *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA);
385 
386 typedef struct _DD_SETCOLORKEYDATA
387 {
388 	PDD_DIRECTDRAW_GLOBAL	lpDD;
389 	PDD_SURFACE_LOCAL	lpDDSurface;
390 	DWORD			dwFlags;
391 	DDCOLORKEY		ckNew;
392 	HRESULT			ddRVal;
393 	PVOID			SetColorKey;
394 } DD_SETCOLORKEYDATA, *PDD_SETCOLORKEYDATA;
395 typedef DWORD (WINAPI *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA);
396 
397 typedef struct _DD_GETBLTSTATUSDATA
398 {
399 	PDD_DIRECTDRAW_GLOBAL	lpDD;
400 	PDD_SURFACE_LOCAL	lpDDSurface;
401 	DWORD			dwFlags;
402 	HRESULT			ddRVal;
403 	PVOID			GetBltStatus;
404 } DD_GETBLTSTATUSDATA, *PDD_GETBLTSTATUSDATA;
405 typedef DWORD (WINAPI *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA);
406 
407 typedef struct _DD_GETFLIPSTATUSDATA
408 {
409 	PDD_DIRECTDRAW_GLOBAL	lpDD;
410 	PDD_SURFACE_LOCAL	lpDDSurface;
411 	DWORD			dwFlags;
412 	HRESULT			ddRVal;
413 	PVOID			GetFlipStatus;
414 } DD_GETFLIPSTATUSDATA, *PDD_GETFLIPSTATUSDATA;
415 typedef DWORD (WINAPI *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA);
416 
417 typedef struct DD_SURFACECALLBACKS
418 {
419 	DWORD				dwSize;
420 	DWORD				dwFlags;
421 	PDD_SURFCB_DESTROYSURFACE	DestroySurface;
422 	PDD_SURFCB_FLIP			Flip;
423 	PDD_SURFCB_SETCLIPLIST		SetClipList;
424 	PDD_SURFCB_LOCK			Lock;
425 	PDD_SURFCB_UNLOCK		Unlock;
426 	PDD_SURFCB_BLT			Blt;
427 	PDD_SURFCB_SETCOLORKEY		SetColorKey;
428 	PDD_SURFCB_ADDATTACHEDSURFACE	AddAttachedSurface;
429 	PDD_SURFCB_GETBLTSTATUS		GetBltStatus;
430 	PDD_SURFCB_GETFLIPSTATUS	GetFlipStatus;
431 	PDD_SURFCB_UPDATEOVERLAY	UpdateOverlay;
432 	PDD_SURFCB_SETOVERLAYPOSITION	SetOverlayPosition;
433 	PVOID				reserved4;
434 	PDD_SURFCB_SETPALETTE		SetPalette;
435 } DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
436 
437 
438 #define DDHAL_SURFCB32_DESTROYSURFACE			0x00000001
439 #define DDHAL_SURFCB32_FLIP				0x00000002
440 #define DDHAL_SURFCB32_SETCLIPLIST			0x00000004
441 #define DDHAL_SURFCB32_LOCK				0x00000008
442 #define DDHAL_SURFCB32_UNLOCK				0x00000010
443 #define DDHAL_SURFCB32_BLT				0x00000020
444 #define DDHAL_SURFCB32_SETCOLORKEY			0x00000040
445 #define DDHAL_SURFCB32_ADDATTACHEDSURFACE		0x00000080
446 #define DDHAL_SURFCB32_GETBLTSTATUS			0x00000100
447 #define DDHAL_SURFCB32_GETFLIPSTATUS			0x00000200
448 #define DDHAL_SURFCB32_UPDATEOVERLAY			0x00000400
449 #define DDHAL_SURFCB32_SETOVERLAYPOSITION		0x00000800
450 #define DDHAL_SURFCB32_RESERVED4			0x00001000
451 #define DDHAL_SURFCB32_SETPALETTE			0x00002000
452 
453 /************************************************************************/
454 /* IDirectDraw callbacks                                                */
455 /************************************************************************/
456 
457 typedef struct _DD_CREATESURFACEDATA
458 {
459 	PDD_DIRECTDRAW_GLOBAL	lpDD;
460 	DDSURFACEDESC		*lpDDSurfaceDesc;
461 	PDD_SURFACE_LOCAL	*lplpSList;
462 	DWORD			dwSCnt;
463 	HRESULT			ddRVal;
464 	PVOID			CreateSurface;
465 } DD_CREATESURFACEDATA, *PDD_CREATESURFACEDATA;
466 typedef DWORD (WINAPI *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA);
467 
468 typedef struct _DD_DRVSETCOLORKEYDATA
469 {
470 	PDD_SURFACE_LOCAL	lpDDSurface;
471 	DWORD			dwFlags;
472 	DDCOLORKEY		ckNew;
473 	HRESULT			ddRVal;
474 	PVOID			SetColorKey;
475 } DD_DRVSETCOLORKEYDATA, *PDD_DRVSETCOLORKEYDATA;
476 typedef DWORD (WINAPI *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA);
477 
478 #define DDWAITVB_I_TESTVB    0x80000006
479 
480 typedef struct _DD_WAITFORVERTICALBLANKDATA
481 {
482 	PDD_DIRECTDRAW_GLOBAL	lpDD;
483 	DWORD			dwFlags;
484 	DWORD			bIsInVB;
485 	DWORD			hEvent;
486 	HRESULT			ddRVal;
487 	PVOID			WaitForVerticalBlank;
488 } DD_WAITFORVERTICALBLANKDATA, *PDD_WAITFORVERTICALBLANKDATA;
489 typedef DWORD (WINAPI *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA);
490 
491 typedef struct _DD_CANCREATESURFACEDATA
492 {
493 	PDD_DIRECTDRAW_GLOBAL	lpDD;
494 	DDSURFACEDESC		*lpDDSurfaceDesc;
495 	DWORD			bIsDifferentPixelFormat;
496 	HRESULT			ddRVal;
497 	PVOID			CanCreateSurface;
498 } DD_CANCREATESURFACEDATA, *PDD_CANCREATESURFACEDATA;
499 typedef DWORD (WINAPI *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA);
500 
501 typedef struct _DD_CREATEPALETTEDATA
502 {
503 	PDD_DIRECTDRAW_GLOBAL	lpDD;
504 	PDD_PALETTE_GLOBAL	lpDDPalette;
505 	LPPALETTEENTRY		lpColorTable;
506 	HRESULT			ddRVal;
507 	PVOID			CreatePalette;
508 	WINBOOL			is_excl;
509 } DD_CREATEPALETTEDATA, *PDD_CREATEPALETTEDATA;
510 typedef DWORD (WINAPI *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA);
511 
512 typedef struct _DD_GETSCANLINEDATA
513 {
514 	PDD_DIRECTDRAW_GLOBAL	lpDD;
515 	DWORD			dwScanLine;
516 	HRESULT			ddRVal;
517 	PVOID			GetScanLine;
518 } DD_GETSCANLINEDATA, *PDD_GETSCANLINEDATA;
519 typedef DWORD (WINAPI *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA);
520 
521 typedef struct _DD_MAPMEMORYDATA
522 {
523 	PDD_DIRECTDRAW_GLOBAL	lpDD;
524 	WINBOOL			bMap;
525 	HANDLE			hProcess;
526 	FLATPTR			fpProcess;
527 	HRESULT			ddRVal;
528 } DD_MAPMEMORYDATA, *PDD_MAPMEMORYDATA;
529 typedef DWORD (WINAPI *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA);
530 
531 
532 typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA;
533 typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA;
534 
535 typedef DWORD   (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA);
536 typedef DWORD   (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA);
537 
538 typedef struct DD_CALLBACKS
539 {
540 	DWORD			dwSize;
541 	DWORD			dwFlags;
542 	PDD_DESTROYDRIVER	DestroyDriver;
543 	PDD_CREATESURFACE	CreateSurface;
544 	PDD_SETCOLORKEY		SetColorKey;
545 	PDD_SETMODE		SetMode;
546 	PDD_WAITFORVERTICALBLANK WaitForVerticalBlank;
547 	PDD_CANCREATESURFACE	CanCreateSurface;
548 	PDD_CREATEPALETTE	CreatePalette;
549 	PDD_GETSCANLINE		GetScanLine;
550 	PDD_MAPMEMORY		MapMemory;
551 } DD_CALLBACKS, *PDD_CALLBACKS;
552 
553 
554 #define DDHAL_CB32_DESTROYDRIVER			0x00000001l
555 #define DDHAL_CB32_CREATESURFACE			0x00000002l
556 #define DDHAL_CB32_SETCOLORKEY				0x00000004l
557 #define DDHAL_CB32_SETMODE				0x00000008l
558 #define DDHAL_CB32_WAITFORVERTICALBLANK			0x00000010l
559 #define DDHAL_CB32_CANCREATESURFACE			0x00000020l
560 #define DDHAL_CB32_CREATEPALETTE			0x00000040l
561 #define DDHAL_CB32_GETSCANLINE				0x00000080l
562 #define DDHAL_CB32_MAPMEMORY				0x80000000l
563 
564 typedef struct _DD_GETAVAILDRIVERMEMORYDATA
565 {
566 	PDD_DIRECTDRAW_GLOBAL	lpDD;
567 	DDSCAPS			DDSCaps;
568 	DWORD			dwTotal;
569 	DWORD			dwFree;
570 	HRESULT			ddRVal;
571 	PVOID			GetAvailDriverMemory;
572 } DD_GETAVAILDRIVERMEMORYDATA, *PDD_GETAVAILDRIVERMEMORYDATA;
573 typedef DWORD (WINAPI *PDD_GETAVAILDRIVERMEMORY)(PDD_GETAVAILDRIVERMEMORYDATA);
574 
575 typedef struct _DD_MISCELLANEOUSCALLBACKS
576 {
577 	DWORD			dwSize;
578 	DWORD			dwFlags;
579 	PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
580 } DD_MISCELLANEOUSCALLBACKS, *PDD_MISCELLANEOUSCALLBACKS;
581 
582 #define DDHAL_MISCCB32_GETAVAILDRIVERMEMORY		0x00000001
583 
584 typedef DWORD (WINAPI *PDD_ALPHABLT)(PDD_BLTDATA);
585 
586 typedef struct _DD_CREATESURFACEEXDATA
587 {
588 	DWORD			dwFlags;
589 	PDD_DIRECTDRAW_LOCAL	lpDDLcl;
590 	PDD_SURFACE_LOCAL	lpDDSLcl;
591 	HRESULT			ddRVal;
592 } DD_CREATESURFACEEXDATA, *PDD_CREATESURFACEEXDATA;
593 typedef DWORD (WINAPI *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA);
594 
595 typedef struct _DD_GETDRIVERSTATEDATA
596 {
597 	DWORD			dwFlags;
598 	__GNU_EXTENSION union {
599 	  PDD_DIRECTDRAW_GLOBAL	lpDD;
600 	  DWORD_PTR		dwhContext;
601 	};
602 	LPDWORD			lpdwStates;
603 	DWORD			dwLength;
604 	HRESULT			ddRVal;
605 } DD_GETDRIVERSTATEDATA, *PDD_GETDRIVERSTATEDATA;
606 typedef DWORD (WINAPI *PDD_GETDRIVERSTATE)(PDD_GETDRIVERSTATEDATA);
607 
608 typedef struct _DD_DESTROYDDLOCALDATA
609 {
610 	DWORD			dwFlags;
611 	PDD_DIRECTDRAW_LOCAL	pDDLcl;
612 	HRESULT			ddRVal;
613 } DD_DESTROYDDLOCALDATA, *PDD_DESTROYDDLOCALDATA;
614 typedef DWORD (WINAPI *PDD_DESTROYDDLOCAL)(PDD_DESTROYDDLOCALDATA);
615 
616 
617 typedef struct _DD_MISCELLANEOUS2CALLBACKS
618 {
619 	DWORD			dwSize;
620 	DWORD			dwFlags;
621 	PDD_ALPHABLT		AlphaBlt;
622 	PDD_CREATESURFACEEX	CreateSurfaceEx;
623 	PDD_GETDRIVERSTATE	GetDriverState;
624 	PDD_DESTROYDDLOCAL	DestroyDDLocal;
625 } DD_MISCELLANEOUS2CALLBACKS, *PDD_MISCELLANEOUS2CALLBACKS;
626 
627 
628 #define DDHAL_MISC2CB32_ALPHABLT			0x00000001
629 #define DDHAL_MISC2CB32_CREATESURFACEEX			0x00000002
630 #define DDHAL_MISC2CB32_GETDRIVERSTATE			0x00000004
631 #define DDHAL_MISC2CB32_DESTROYDDLOCAL			0x00000008
632 
633 
634 typedef struct _DD_FREEDRIVERMEMORYDATA
635 {
636 	PDD_DIRECTDRAW_GLOBAL	lpDD;
637 	PDD_SURFACE_LOCAL	lpDDSurface;
638 	HRESULT			ddRVal;
639 	PVOID			FreeDriverMemory;
640 } DD_FREEDRIVERMEMORYDATA, *PDD_FREEDRIVERMEMORYDATA;
641 typedef DWORD (WINAPI *PDD_FREEDRIVERMEMORY)(PDD_FREEDRIVERMEMORYDATA);
642 
643 typedef struct _DD_SETEXCLUSIVEMODEDATA
644 {
645 	PDD_DIRECTDRAW_GLOBAL	lpDD;
646 	DWORD			dwEnterExcl;
647 	DWORD			dwReserved;
648 	HRESULT			ddRVal;
649 	PVOID			SetExclusiveMode;
650 } DD_SETEXCLUSIVEMODEDATA, *PDD_SETEXCLUSIVEMODEDATA;
651 typedef DWORD (WINAPI *PDD_SETEXCLUSIVEMODE)(PDD_SETEXCLUSIVEMODEDATA);
652 
653 typedef struct _DD_FLIPTOGDISURFACEDATA
654 {
655 	PDD_DIRECTDRAW_GLOBAL	lpDD;
656 	DWORD			dwToGDI;
657 	DWORD			dwReserved;
658 	HRESULT			ddRVal;
659 	PVOID			FlipToGDISurface;
660 } DD_FLIPTOGDISURFACEDATA, *PDD_FLIPTOGDISURFACEDATA;
661 typedef DWORD (WINAPI *PDD_FLIPTOGDISURFACE)(PDD_FLIPTOGDISURFACEDATA);
662 
663 
664 
665 typedef struct _DD_NTCALLBACKS
666 {
667 	DWORD			dwSize;
668 	DWORD			dwFlags;
669 	PDD_FREEDRIVERMEMORY	FreeDriverMemory;
670 	PDD_SETEXCLUSIVEMODE	SetExclusiveMode;
671 	PDD_FLIPTOGDISURFACE	FlipToGDISurface;
672 } DD_NTCALLBACKS, *PDD_NTCALLBACKS;
673 
674 
675 #define DDHAL_NTCB32_FREEDRIVERMEMORY			0x00000001
676 #define DDHAL_NTCB32_SETEXCLUSIVEMODE			0x00000002
677 #define DDHAL_NTCB32_FLIPTOGDISURFACE			0x00000004
678 
679 /************************************************************************/
680 /* IDirectDrawPalette callbacks                                         */
681 /************************************************************************/
682 
683 typedef struct _DD_DESTROYPALETTEDATA
684 {
685 	PDD_DIRECTDRAW_GLOBAL	lpDD;
686 	PDD_PALETTE_GLOBAL	lpDDPalette;
687 	HRESULT			ddRVal;
688 	PVOID			DestroyPalette;
689 } DD_DESTROYPALETTEDATA, *PDD_DESTROYPALETTEDATA;
690 typedef DWORD (WINAPI *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA);
691 
692 typedef struct _DD_SETENTRIESDATA
693 {
694 	PDD_DIRECTDRAW_GLOBAL	lpDD;
695 	PDD_PALETTE_GLOBAL	lpDDPalette;
696 	DWORD			dwBase;
697 	DWORD			dwNumEntries;
698 	LPPALETTEENTRY		lpEntries;
699 	HRESULT			ddRVal;
700 	PVOID			SetEntries;
701 } DD_SETENTRIESDATA, *PDD_SETENTRIESDATA;
702 typedef DWORD (WINAPI *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA);
703 
704 typedef struct DD_PALETTECALLBACKS
705 {
706 	DWORD			dwSize;
707 	DWORD			dwFlags;
708 	PDD_PALCB_DESTROYPALETTE DestroyPalette;
709 	PDD_PALCB_SETENTRIES	SetEntries;
710 } DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
711 
712 #define DDHAL_PALCB32_DESTROYPALETTE    0x00000001l
713 #define DDHAL_PALCB32_SETENTRIES    0x00000002l
714 
715 /************************************************************************/
716 /* IDirectDrawVideoport callbacks                                       */
717 /************************************************************************/
718 
719 typedef struct _DD_CANCREATEVPORTDATA
720 {
721 	PDD_DIRECTDRAW_LOCAL	lpDD;
722 	LPDDVIDEOPORTDESC	lpDDVideoPortDesc;
723 	HRESULT			ddRVal;
724 	PVOID			CanCreateVideoPort;
725 } DD_CANCREATEVPORTDATA, *PDD_CANCREATEVPORTDATA;
726 typedef DWORD (WINAPI *PDD_VPORTCB_CANCREATEVIDEOPORT)(PDD_CANCREATEVPORTDATA);
727 
728 typedef struct _DD_CREATEVPORTDATA
729 {
730 	PDD_DIRECTDRAW_LOCAL	lpDD;
731 	LPDDVIDEOPORTDESC	lpDDVideoPortDesc;
732 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
733 	HRESULT			ddRVal;
734 	PVOID			CreateVideoPort;
735 } DD_CREATEVPORTDATA, *PDD_CREATEVPORTDATA;
736 typedef DWORD (WINAPI *PDD_VPORTCB_CREATEVIDEOPORT)(PDD_CREATEVPORTDATA);
737 
738 typedef struct _DD_FLIPVPORTDATA
739 {
740 	PDD_DIRECTDRAW_LOCAL	lpDD;
741 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
742 	PDD_SURFACE_LOCAL	lpSurfCurr;
743 	PDD_SURFACE_LOCAL	lpSurfTarg;
744 	HRESULT			ddRVal;
745 	PVOID			FlipVideoPort;
746 } DD_FLIPVPORTDATA, *PDD_FLIPVPORTDATA;
747 typedef DWORD (WINAPI *PDD_VPORTCB_FLIP)(PDD_FLIPVPORTDATA);
748 
749 typedef struct _DD_GETVPORTBANDWIDTHDATA
750 {
751 	PDD_DIRECTDRAW_LOCAL	lpDD;
752 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
753 	LPDDPIXELFORMAT		lpddpfFormat;
754 	DWORD			dwWidth;
755 	DWORD			dwHeight;
756 	DWORD			dwFlags;
757 	LPDDVIDEOPORTBANDWIDTH	lpBandwidth;
758 	HRESULT			ddRVal;
759 	PVOID			GetVideoPortBandwidth;
760 } DD_GETVPORTBANDWIDTHDATA, *PDD_GETVPORTBANDWIDTHDATA;
761 typedef DWORD (WINAPI *PDD_VPORTCB_GETBANDWIDTH)(PDD_GETVPORTBANDWIDTHDATA);
762 
763 typedef struct _DD_GETVPORTINPUTFORMATDATA
764 {
765 	PDD_DIRECTDRAW_LOCAL	lpDD;
766 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
767 	DWORD			dwFlags;
768 	LPDDPIXELFORMAT		lpddpfFormat;
769 	DWORD			dwNumFormats;
770 	HRESULT			ddRVal;
771 	PVOID			GetVideoPortInputFormats;
772 } DD_GETVPORTINPUTFORMATDATA, *PDD_GETVPORTINPUTFORMATDATA;
773 typedef DWORD (WINAPI *PDD_VPORTCB_GETINPUTFORMATS)(PDD_GETVPORTINPUTFORMATDATA);
774 
775 typedef struct _DD_GETVPORTOUTPUTFORMATDATA
776 {
777 	PDD_DIRECTDRAW_LOCAL	lpDD;
778 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
779 	DWORD			dwFlags;
780 	LPDDPIXELFORMAT		lpddpfInputFormat;
781 	LPDDPIXELFORMAT		lpddpfOutputFormats;
782 	DWORD			dwNumFormats;
783 	HRESULT			ddRVal;
784 	PVOID			GetVideoPortInputFormats;
785 } DD_GETVPORTOUTPUTFORMATDATA, *PDD_GETVPORTOUTPUTFORMATDATA;
786 typedef DWORD (WINAPI *PDD_VPORTCB_GETOUTPUTFORMATS)(PDD_GETVPORTOUTPUTFORMATDATA);
787 
788 typedef struct _DD_GETVPORTFIELDDATA
789 {
790 	PDD_DIRECTDRAW_LOCAL	lpDD;
791 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
792 	WINBOOL			bField;
793 	HRESULT			ddRVal;
794 	PVOID			GetVideoPortField;
795 } DD_GETVPORTFIELDDATA, *PDD_GETVPORTFIELDDATA;
796 typedef DWORD (WINAPI *PDD_VPORTCB_GETFIELD)(PDD_GETVPORTFIELDDATA);
797 
798 typedef struct _DD_GETVPORTLINEDATA
799 {
800 	PDD_DIRECTDRAW_LOCAL	lpDD;
801 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
802 	DWORD			dwLine;
803 	HRESULT			ddRVal;
804 	PVOID			GetVideoPortLine;
805 } DD_GETVPORTLINEDATA, *PDD_GETVPORTLINEDATA;
806 typedef DWORD (WINAPI *PDD_VPORTCB_GETLINE)(PDD_GETVPORTLINEDATA);
807 
808 typedef struct _DD_GETVPORTCONNECTDATA
809 {
810 	PDD_DIRECTDRAW_LOCAL	lpDD;
811 	DWORD			dwPortId;
812 	LPDDVIDEOPORTCONNECT	lpConnect;
813 	DWORD			dwNumEntries;
814 	HRESULT			ddRVal;
815 	PVOID			GetVideoPortConnectInfo;
816 } DD_GETVPORTCONNECTDATA, *PDD_GETVPORTCONNECTDATA;
817 typedef DWORD (WINAPI *PDD_VPORTCB_GETVPORTCONNECT)(PDD_GETVPORTCONNECTDATA);
818 
819 typedef struct _DD_DESTROYVPORTDATA
820 {
821 	PDD_DIRECTDRAW_LOCAL	lpDD;
822 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
823 	HRESULT			ddRVal;
824 	PVOID			DestroyVideoPort;
825 } DD_DESTROYVPORTDATA, *PDD_DESTROYVPORTDATA;
826 typedef DWORD (WINAPI *PDD_VPORTCB_DESTROYVPORT)(PDD_DESTROYVPORTDATA);
827 
828 typedef struct _DD_GETVPORTFLIPSTATUSDATA
829 {
830 	PDD_DIRECTDRAW_LOCAL	lpDD;
831 	FLATPTR			fpSurface;
832 	HRESULT			ddRVal;
833 	PVOID			GetVideoPortFlipStatus;
834 } DD_GETVPORTFLIPSTATUSDATA, *PDD_GETVPORTFLIPSTATUSDATA;
835 typedef DWORD (WINAPI *PDD_VPORTCB_GETFLIPSTATUS)(PDD_GETVPORTFLIPSTATUSDATA);
836 
837 
838 typedef struct _DD_UPDATEVPORTDATA
839 {
840 	PDD_DIRECTDRAW_LOCAL	lpDD;
841 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
842 	PDD_SURFACE_INT		*lplpDDSurface;
843 	PDD_SURFACE_INT		*lplpDDVBISurface;
844 	LPDDVIDEOPORTINFO	lpVideoInfo;
845 	DWORD			dwFlags;
846 	DWORD			dwNumAutoflip;
847 	DWORD			dwNumVBIAutoflip;
848 	HRESULT			ddRVal;
849 	PVOID			UpdateVideoPort;
850 } DD_UPDATEVPORTDATA, *PDD_UPDATEVPORTDATA;
851 typedef DWORD (WINAPI *PDD_VPORTCB_UPDATE)(PDD_UPDATEVPORTDATA);
852 
853 typedef struct _DD_WAITFORVPORTSYNCDATA
854 {
855 	PDD_DIRECTDRAW_LOCAL	lpDD;
856 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
857 	DWORD			dwFlags;
858 	DWORD			dwLine;
859 	DWORD			dwTimeOut;
860 	HRESULT			ddRVal;
861 	PVOID			UpdateVideoPort;
862 } DD_WAITFORVPORTSYNCDATA, *PDD_WAITFORVPORTSYNCDATA;
863 typedef DWORD (WINAPI *PDD_VPORTCB_WAITFORSYNC)(PDD_WAITFORVPORTSYNCDATA);
864 
865 typedef struct _DD_GETVPORTSIGNALDATA
866 {
867 	PDD_DIRECTDRAW_LOCAL	lpDD;
868 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
869 	DWORD			dwStatus;
870 	HRESULT			ddRVal;
871 	PVOID			GetVideoSignalStatus;
872 } DD_GETVPORTSIGNALDATA, *PDD_GETVPORTSIGNALDATA;
873 typedef DWORD (WINAPI *PDD_VPORTCB_GETSIGNALSTATUS)(PDD_GETVPORTSIGNALDATA);
874 
875 typedef struct _DD_VPORTCOLORDATA
876 {
877 	PDD_DIRECTDRAW_LOCAL	lpDD;
878 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
879 	DWORD			dwFlags;
880 	LPDDCOLORCONTROL	lpColorData;
881 	HRESULT			ddRVal;
882 	PVOID			ColorControl;
883 } DD_VPORTCOLORDATA, *PDD_VPORTCOLORDATA;
884 typedef DWORD (WINAPI *PDD_VPORTCB_COLORCONTROL)(PDD_VPORTCOLORDATA);
885 
886 
887 typedef struct DD_VIDEOPORTCALLBACKS
888 {
889 	DWORD				dwSize;
890 	DWORD				dwFlags;
891 	PDD_VPORTCB_CANCREATEVIDEOPORT	CanCreateVideoPort;
892 	PDD_VPORTCB_CREATEVIDEOPORT	CreateVideoPort;
893 	PDD_VPORTCB_FLIP		FlipVideoPort;
894 	PDD_VPORTCB_GETBANDWIDTH	GetVideoPortBandwidth;
895 	PDD_VPORTCB_GETINPUTFORMATS	GetVideoPortInputFormats;
896 	PDD_VPORTCB_GETOUTPUTFORMATS	GetVideoPortOutputFormats;
897 	PVOID				lpReserved1;
898 	PDD_VPORTCB_GETFIELD		GetVideoPortField;
899 	PDD_VPORTCB_GETLINE		GetVideoPortLine;
900 	PDD_VPORTCB_GETVPORTCONNECT	GetVideoPortConnectInfo;
901 	PDD_VPORTCB_DESTROYVPORT	DestroyVideoPort;
902 	PDD_VPORTCB_GETFLIPSTATUS	GetVideoPortFlipStatus;
903 	PDD_VPORTCB_UPDATE		UpdateVideoPort;
904 	PDD_VPORTCB_WAITFORSYNC		WaitForVideoPortSync;
905 	PDD_VPORTCB_GETSIGNALSTATUS	GetVideoSignalStatus;
906 	PDD_VPORTCB_COLORCONTROL	ColorControl;
907 } DD_VIDEOPORTCALLBACKS, *PDD_VIDEOPORTCALLBACKS;
908 
909 #define DDHAL_VPORT32_CANCREATEVIDEOPORT		0x00000001
910 #define DDHAL_VPORT32_CREATEVIDEOPORT			0x00000002
911 #define DDHAL_VPORT32_FLIP				0x00000004
912 #define DDHAL_VPORT32_GETBANDWIDTH			0x00000008
913 #define DDHAL_VPORT32_GETINPUTFORMATS			0x00000010
914 #define DDHAL_VPORT32_GETOUTPUTFORMATS			0x00000020
915 #define DDHAL_VPORT32_GETFIELD				0x00000080
916 #define DDHAL_VPORT32_GETLINE				0x00000100
917 #define DDHAL_VPORT32_GETCONNECT			0x00000200
918 #define DDHAL_VPORT32_DESTROY				0x00000400
919 #define DDHAL_VPORT32_GETFLIPSTATUS			0x00000800
920 #define DDHAL_VPORT32_UPDATE				0x00001000
921 #define DDHAL_VPORT32_WAITFORSYNC			0x00002000
922 #define DDHAL_VPORT32_GETSIGNALSTATUS			0x00004000
923 #define DDHAL_VPORT32_COLORCONTROL			0x00008000
924 
925 
926 /************************************************************************/
927 /* IDirectDrawColorControl callbacks                                    */
928 /************************************************************************/
929 
930 #define DDRAWI_GETCOLOR					0x0001
931 #define DDRAWI_SETCOLOR					0x0002
932 
933 typedef struct _DD_COLORCONTROLDATA
934 {
935 	PDD_DIRECTDRAW_GLOBAL	lpDD;
936 	PDD_SURFACE_LOCAL	lpDDSurface;
937 	LPDDCOLORCONTROL	lpColorData;
938 	DWORD			dwFlags;
939 	HRESULT			ddRVal;
940 	PVOID			ColorControl;
941 } DD_COLORCONTROLDATA, *PDD_COLORCONTROLDATA;
942 typedef DWORD (WINAPI *PDD_COLORCB_COLORCONTROL)(PDD_COLORCONTROLDATA);
943 
944 
945 typedef struct _DD_COLORCONTROLCALLBACKS
946 {
947 	DWORD			dwSize;
948 	DWORD			dwFlags;
949 	PDD_COLORCB_COLORCONTROL ColorControl;
950 } DD_COLORCONTROLCALLBACKS, *PDD_COLORCONTROLCALLBACKS;
951 
952 #define DDHAL_COLOR_COLORCONTROL			0x00000001
953 
954 /************************************************************************/
955 /* IDirectDrawVideo callbacks                                           */
956 /************************************************************************/
957 
958 typedef struct _DD_GETMOCOMPGUIDSDATA
959 {
960 	PDD_DIRECTDRAW_LOCAL	lpDD;
961 	DWORD			dwNumGuids;
962 	GUID			*lpGuids;
963 	HRESULT			ddRVal;
964 } DD_GETMOCOMPGUIDSDATA, *PDD_GETMOCOMPGUIDSDATA;
965 typedef DWORD (WINAPI *PDD_MOCOMPCB_GETGUIDS)(PDD_GETMOCOMPGUIDSDATA);
966 
967 typedef struct _DD_GETMOCOMPFORMATSDATA
968 {
969 	PDD_DIRECTDRAW_LOCAL	lpDD;
970 	GUID			*lpGuid;
971 	DWORD			dwNumFormats;
972 	LPDDPIXELFORMAT		lpFormats;
973 	HRESULT			ddRVal;
974 } DD_GETMOCOMPFORMATSDATA, *PDD_GETMOCOMPFORMATSDATA;
975 typedef DWORD (WINAPI *PDD_MOCOMPCB_GETFORMATS)(PDD_GETMOCOMPFORMATSDATA);
976 
977 typedef struct _DD_CREATEMOCOMPDATA
978 {
979 	PDD_DIRECTDRAW_LOCAL	lpDD;
980 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
981 	GUID			*lpGuid;
982 	DWORD			dwUncompWidth;
983 	DWORD			dwUncompHeight;
984 	DDPIXELFORMAT		ddUncompPixelFormat;
985 	LPVOID			lpData;
986 	DWORD			dwDataSize;
987 	HRESULT			ddRVal;
988 } DD_CREATEMOCOMPDATA, *PDD_CREATEMOCOMPDATA;
989 typedef DWORD (WINAPI *PDD_MOCOMPCB_CREATE)(PDD_CREATEMOCOMPDATA);
990 
991 typedef struct _DDCOMPBUFFERINFO
992 {
993 	DWORD			dwSize;
994 	DWORD			dwNumCompBuffers;
995 	DWORD			dwWidthToCreate;
996 	DWORD			dwHeightToCreate;
997 	DWORD			dwBytesToAllocate;
998 	DDSCAPS2		ddCompCaps;
999 	DDPIXELFORMAT		ddPixelFormat;
1000 } DDCOMPBUFFERINFO, *LPDDCOMPBUFFERINFO;
1001 
1002 typedef struct _DD_GETMOCOMPCOMPBUFFDATA
1003 {
1004 	PDD_DIRECTDRAW_LOCAL	lpDD;
1005 	GUID			*lpGuid;
1006 	DWORD			dwWidth;
1007 	DWORD			dwHeight;
1008 	DDPIXELFORMAT		ddPixelFormat;
1009 	DWORD			dwNumTypesCompBuffs;
1010 	LPDDCOMPBUFFERINFO	lpCompBuffInfo;
1011 	HRESULT			ddRVal;
1012 } DD_GETMOCOMPCOMPBUFFDATA, *PDD_GETMOCOMPCOMPBUFFDATA;
1013 typedef DWORD (WINAPI *PDD_MOCOMPCB_GETCOMPBUFFINFO)(PDD_GETMOCOMPCOMPBUFFDATA);
1014 
1015 typedef struct _DD_GETINTERNALMOCOMPDATA
1016 {
1017 	PDD_DIRECTDRAW_LOCAL	lpDD;
1018 	GUID			*lpGuid;
1019 	DWORD			dwWidth;
1020 	DWORD			dwHeight;
1021 	DDPIXELFORMAT		ddPixelFormat;
1022 	DWORD			dwScratchMemAlloc;
1023 	HRESULT			ddRVal;
1024 } DD_GETINTERNALMOCOMPDATA, *PDD_GETINTERNALMOCOMPDATA;
1025 typedef DWORD (WINAPI *PDD_MOCOMPCB_GETINTERNALINFO)(PDD_GETINTERNALMOCOMPDATA);
1026 
1027 typedef struct _DD_BEGINMOCOMPFRAMEDATA
1028 {
1029 	PDD_DIRECTDRAW_LOCAL	lpDD;
1030 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
1031 	PDD_SURFACE_LOCAL	lpDestSurface;
1032 	DWORD			dwInputDataSize;
1033 	LPVOID			lpInputData;
1034 	DWORD			dwOutputDataSize;
1035 	LPVOID			lpOutputData;
1036 	HRESULT			ddRVal;
1037 } DD_BEGINMOCOMPFRAMEDATA, *PDD_BEGINMOCOMPFRAMEDATA;
1038 typedef DWORD (WINAPI *PDD_MOCOMPCB_BEGINFRAME)(PDD_BEGINMOCOMPFRAMEDATA);
1039 
1040 typedef struct _DD_ENDMOCOMPFRAMEDATA
1041 {
1042 	PDD_DIRECTDRAW_LOCAL	lpDD;
1043 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
1044 	LPVOID			lpInputData;
1045 	DWORD			dwInputDataSize;
1046 	HRESULT			ddRVal;
1047 } DD_ENDMOCOMPFRAMEDATA, *PDD_ENDMOCOMPFRAMEDATA;
1048 typedef DWORD (WINAPI *PDD_MOCOMPCB_ENDFRAME)(PDD_ENDMOCOMPFRAMEDATA);
1049 
1050 typedef struct _DDMOCOMPBUFFERINFO
1051 {
1052 	DWORD			dwSize;
1053 	PDD_SURFACE_LOCAL	lpCompSurface;
1054 	DWORD			dwDataOffset;
1055 	DWORD			dwDataSize;
1056 	LPVOID			lpPrivate;
1057 } DDMOCOMPBUFFERINFO, *LPDDMOCOMPBUFFERINFO;
1058 
1059 typedef struct _DD_RENDERMOCOMPDATA
1060 {
1061 	PDD_DIRECTDRAW_LOCAL	lpDD;
1062 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
1063 	DWORD			dwNumBuffers;
1064 	LPDDMOCOMPBUFFERINFO	lpBufferInfo;
1065 	DWORD			dwFunction;
1066 	LPVOID			lpInputData;
1067 	DWORD			dwInputDataSize;
1068 	LPVOID			lpOutputData;
1069 	DWORD			dwOutputDataSize;
1070 	HRESULT			ddRVal;
1071 } DD_RENDERMOCOMPDATA, *PDD_RENDERMOCOMPDATA;
1072 typedef DWORD (WINAPI *PDD_MOCOMPCB_RENDER)(PDD_RENDERMOCOMPDATA);
1073 
1074 #define DDMCQUERY_READ					0x00000001
1075 
1076 typedef struct _DD_QUERYMOCOMPSTATUSDATA
1077 {
1078 	PDD_DIRECTDRAW_LOCAL	lpDD;
1079 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
1080 	PDD_SURFACE_LOCAL	lpSurface;
1081 	DWORD			dwFlags;
1082 	HRESULT			ddRVal;
1083 } DD_QUERYMOCOMPSTATUSDATA, *PDD_QUERYMOCOMPSTATUSDATA;
1084 typedef DWORD (WINAPI *PDD_MOCOMPCB_QUERYSTATUS)(PDD_QUERYMOCOMPSTATUSDATA);
1085 
1086 typedef struct _DD_DESTROYMOCOMPDATA
1087 {
1088 	PDD_DIRECTDRAW_LOCAL	lpDD;
1089 	PDD_MOTIONCOMP_LOCAL	lpMoComp;
1090 	HRESULT			ddRVal;
1091 } DD_DESTROYMOCOMPDATA, *PDD_DESTROYMOCOMPDATA;
1092 typedef DWORD (WINAPI *PDD_MOCOMPCB_DESTROY)(PDD_DESTROYMOCOMPDATA);
1093 
1094 
1095 typedef struct DD_MOTIONCOMPCALLBACKS
1096 {
1097 	DWORD				dwSize;
1098 	DWORD				dwFlags;
1099 	PDD_MOCOMPCB_GETGUIDS		GetMoCompGuids;
1100 	PDD_MOCOMPCB_GETFORMATS		GetMoCompFormats;
1101 	PDD_MOCOMPCB_CREATE		CreateMoComp;
1102 	PDD_MOCOMPCB_GETCOMPBUFFINFO	GetMoCompBuffInfo;
1103 	PDD_MOCOMPCB_GETINTERNALINFO	GetInternalMoCompInfo;
1104 	PDD_MOCOMPCB_BEGINFRAME		BeginMoCompFrame;
1105 	PDD_MOCOMPCB_ENDFRAME		EndMoCompFrame;
1106 	PDD_MOCOMPCB_RENDER		RenderMoComp;
1107 	PDD_MOCOMPCB_QUERYSTATUS	QueryMoCompStatus;
1108 	PDD_MOCOMPCB_DESTROY		DestroyMoComp;
1109 } DD_MOTIONCOMPCALLBACKS, *PDD_MOTIONCOMPCALLBACKS;
1110 
1111 #define DDHAL_MOCOMP32_GETGUIDS				0x00000001
1112 #define DDHAL_MOCOMP32_GETFORMATS			0x00000002
1113 #define DDHAL_MOCOMP32_CREATE				0x00000004
1114 #define DDHAL_MOCOMP32_GETCOMPBUFFINFO			0x00000008
1115 #define DDHAL_MOCOMP32_GETINTERNALINFO			0x00000010
1116 #define DDHAL_MOCOMP32_BEGINFRAME			0x00000020
1117 #define DDHAL_MOCOMP32_ENDFRAME				0x00000040
1118 #define DDHAL_MOCOMP32_RENDER				0x00000080
1119 #define DDHAL_MOCOMP32_QUERYSTATUS			0x00000100
1120 #define DDHAL_MOCOMP32_DESTROY				0x00000200
1121 
1122 /************************************************************************/
1123 /* D3D buffer callbacks                                                 */
1124 /************************************************************************/
1125 
1126 typedef struct _DD_D3DBUFCALLBACKS
1127 {
1128 	DWORD			dwSize;
1129 	DWORD			dwFlags;
1130 	PDD_CANCREATESURFACE	CanCreateD3DBuffer;
1131 	PDD_CREATESURFACE	CreateD3DBuffer;
1132 	PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer;
1133 	PDD_SURFCB_LOCK		LockD3DBuffer;
1134 	PDD_SURFCB_UNLOCK	UnlockD3DBuffer;
1135 } DD_D3DBUFCALLBACKS, *PDD_D3DBUFCALLBACKS;
1136 
1137 /************************************************************************/
1138 /* DdGetDriverInfo callback                                             */
1139 /************************************************************************/
1140 
1141 typedef struct _DD_GETDRIVERINFODATA
1142 {
1143 	// Input:
1144 	PVOID	dhpdev;
1145 	DWORD	dwSize;
1146 	DWORD	dwFlags;
1147 	GUID	guidInfo;
1148 	DWORD	dwExpectedSize;
1149 	PVOID	lpvData;
1150 	// Output:
1151 	DWORD	dwActualSize;
1152 	HRESULT	ddRVal;
1153 } DD_GETDRIVERINFODATA, *PDD_GETDRIVERINFODATA;
1154 typedef DWORD (WINAPI *PDD_GETDRIVERINFO)(PDD_GETDRIVERINFODATA);
1155 
1156 
1157 /************************************************************************/
1158 /* Driver info structures                                               */
1159 /************************************************************************/
1160 
1161 typedef struct _DDNTCORECAPS
1162 {
1163 	DWORD	dwSize;
1164 	DWORD	dwCaps;
1165 	DWORD	dwCaps2;
1166 	DWORD	dwCKeyCaps;
1167 	DWORD	dwFXCaps;
1168 	DWORD	dwFXAlphaCaps;
1169 	DWORD	dwPalCaps;
1170 	DWORD	dwSVCaps;
1171 	DWORD	dwAlphaBltConstBitDepths;
1172 	DWORD	dwAlphaBltPixelBitDepths;
1173 	DWORD	dwAlphaBltSurfaceBitDepths;
1174 	DWORD	dwAlphaOverlayConstBitDepths;
1175 	DWORD	dwAlphaOverlayPixelBitDepths;
1176 	DWORD	dwAlphaOverlaySurfaceBitDepths;
1177 	DWORD	dwZBufferBitDepths;
1178 	DWORD	dwVidMemTotal;
1179 	DWORD	dwVidMemFree;
1180 	DWORD	dwMaxVisibleOverlays;
1181 	DWORD	dwCurrVisibleOverlays;
1182 	DWORD	dwNumFourCCCodes;
1183 	DWORD	dwAlignBoundarySrc;
1184 	DWORD	dwAlignSizeSrc;
1185 	DWORD	dwAlignBoundaryDest;
1186 	DWORD	dwAlignSizeDest;
1187 	DWORD	dwAlignStrideAlign;
1188 	DWORD	dwRops[DD_ROP_SPACE];
1189 	DDSCAPS	ddsCaps;
1190 	DWORD	dwMinOverlayStretch;
1191 	DWORD	dwMaxOverlayStretch;
1192 	DWORD	dwMinLiveVideoStretch;
1193 	DWORD	dwMaxLiveVideoStretch;
1194 	DWORD	dwMinHwCodecStretch;
1195 	DWORD	dwMaxHwCodecStretch;
1196 	DWORD	dwReserved1;
1197 	DWORD	dwReserved2;
1198 	DWORD	dwReserved3;
1199 	DWORD	dwSVBCaps;
1200 	DWORD	dwSVBCKeyCaps;
1201 	DWORD	dwSVBFXCaps;
1202 	DWORD	dwSVBRops[DD_ROP_SPACE];
1203 	DWORD	dwVSBCaps;
1204 	DWORD	dwVSBCKeyCaps;
1205 	DWORD	dwVSBFXCaps;
1206 	DWORD	dwVSBRops[DD_ROP_SPACE];
1207 	DWORD	dwSSBCaps;
1208 	DWORD	dwSSBCKeyCaps;
1209 	DWORD	dwSSBFXCaps;
1210 	DWORD	dwSSBRops[DD_ROP_SPACE];
1211 	DWORD	dwMaxVideoPorts;
1212 	DWORD	dwCurrVideoPorts;
1213 	DWORD	dwSVBCaps2;
1214 } DDNTCORECAPS, *PDDNTCORECAPS;
1215 
1216 
1217 typedef struct _DD_HALINFO_V4
1218 {
1219 	DWORD			dwSize;
1220 	VIDEOMEMORYINFO		vmiData;
1221 	DDNTCORECAPS		ddCaps;
1222 	PDD_GETDRIVERINFO	GetDriverInfo;
1223 	DWORD			dwFlags;
1224 } DD_HALINFO_V4, *PDD_HALINFO_V4;
1225 
1226 typedef struct _DD_HALINFO
1227 {
1228 	DWORD			dwSize;
1229 	VIDEOMEMORYINFO		vmiData;
1230 	DDNTCORECAPS		ddCaps;
1231 	PDD_GETDRIVERINFO	GetDriverInfo;
1232 	DWORD			dwFlags;
1233 	PVOID			lpD3DGlobalDriverData;
1234 	PVOID			lpD3DHALCallbacks;
1235 	PDD_D3DBUFCALLBACKS	lpD3DBufCallbacks;
1236 } DD_HALINFO, *PDD_HALINFO;
1237 
1238 
1239 typedef struct _DD_NONLOCALVIDMEMCAPS
1240 {
1241 	DWORD	dwSize;
1242 	DWORD	dwNLVBCaps;
1243 	DWORD	dwNLVBCaps2;
1244 	DWORD	dwNLVBCKeyCaps;
1245 	DWORD	dwNLVBFXCaps;
1246 	DWORD	dwNLVBRops[DD_ROP_SPACE];
1247 } DD_NONLOCALVIDMEMCAPS, *PDD_NONLOCALVIDMEMCAPS;
1248 
1249 
1250 typedef struct _DD_MORESURFACECAPS
1251 {
1252 	DWORD			dwSize;
1253 	DDSCAPSEX		ddsCapsMore;
1254 	struct tagNTExtendedHeapRestrictions
1255 	{
1256 		DDSCAPSEX	ddsCapsEx;
1257 		DDSCAPSEX	ddsCapsExAlt;
1258 	} ddsExtendedHeapRestrictions[1];
1259 } DD_MORESURFACECAPS, *PDD_MORESURFACECAPS;
1260 
1261 
1262 /*********************************************************/
1263 /* Kernel Callbacks                                      */
1264 /*********************************************************/
1265 typedef struct _DD_SYNCSURFACEDATA
1266 {
1267 	PDD_DIRECTDRAW_LOCAL	lpDD;
1268 	PDD_SURFACE_LOCAL	lpDDSurface;
1269 	DWORD			dwSurfaceOffset;
1270 	ULONG_PTR		fpLockPtr;
1271 	LONG			lPitch;
1272 	DWORD			dwOverlayOffset;
1273 	ULONG			dwDriverReserved1;
1274 	ULONG			dwDriverReserved2;
1275 	ULONG			dwDriverReserved3;
1276 	ULONG			dwDriverReserved4;
1277 	HRESULT			ddRVal;
1278 } DD_SYNCSURFACEDATA, *PDD_SYNCSURFACEDATA;
1279 typedef DWORD (WINAPI *PDD_KERNELCB_SYNCSURFACE)(PDD_SYNCSURFACEDATA);
1280 
1281 typedef struct _DD_SYNCVIDEOPORTDATA
1282 {
1283 	PDD_DIRECTDRAW_LOCAL	lpDD;
1284 	PDD_VIDEOPORT_LOCAL	lpVideoPort;
1285 	DWORD			dwOriginOffset;
1286 	DWORD			dwHeight;
1287 	DWORD			dwVBIHeight;
1288 	ULONG			dwDriverReserved1;
1289 	ULONG			dwDriverReserved2;
1290 	ULONG			dwDriverReserved3;
1291 	HRESULT			ddRVal;
1292 } DD_SYNCVIDEOPORTDATA, *PDD_SYNCVIDEOPORTDATA;
1293 typedef DWORD (WINAPI *PDD_KERNELCB_SYNCVIDEOPORT)(PDD_SYNCVIDEOPORTDATA);
1294 
1295 
1296 typedef struct DD_NTPRIVATEDRIVERCAPS
1297 {
1298 	DWORD			dwSize;
1299 	DWORD			dwPrivateCaps;
1300 } DD_NTPRIVATEDRIVERCAPS;
1301 
1302 typedef struct _DD_UPDATENONLOCALHEAPDATA
1303 {
1304 	PDD_DIRECTDRAW_GLOBAL	lpDD;
1305 	DWORD			dwHeap;
1306 	FLATPTR			fpGARTLin;
1307 	FLATPTR			fpGARTDev;
1308 	ULONG_PTR		ulPolicyMaxBytes;
1309 	HRESULT			ddRVal;
1310 	VOID *			UpdateNonLocalHeap;
1311 } DD_UPDATENONLOCALHEAPDATA, *PDD_UPDATENONLOCALHEAPDATA;
1312 
1313 typedef struct _DD_STEREOMODE
1314 {
1315 	DWORD		dwSize;
1316 	DWORD		dwHeight;
1317 	DWORD		dwWidth;
1318 	DWORD		dwBpp;
1319 	DWORD		dwRefreshRate;
1320 	WINBOOL		bSupported;
1321 } DD_STEREOMODE, *PDD_STEREOMODE;
1322 
1323 typedef struct _DD_MORECAPS
1324 {
1325 	DWORD		dwSize;
1326 	DWORD		dwAlphaCaps;
1327 	DWORD		dwSVBAlphaCaps;
1328 	DWORD		dwVSBAlphaCaps;
1329 	DWORD		dwSSBAlphaCaps;
1330 	DWORD		dwFilterCaps;
1331 	DWORD		dwSVBFilterCaps;
1332 	DWORD		dwVSBFilterCaps;
1333 	DWORD		dwSSBFilterCaps;
1334 } DD_MORECAPS, *PDD_MORECAPS;
1335 
1336 typedef struct _DD_CLIPPER_GLOBAL
1337 {
1338 	ULONG_PTR	dwReserved1;
1339 } DD_CLIPPER_GLOBAL;
1340 
1341 typedef struct _DD_CLIPPER_LOCAL
1342 {
1343 	ULONG_PTR	dwReserved1;
1344 } DD_CLIPPER_LOCAL;
1345 
1346 typedef struct _DD_PALETTE_LOCAL
1347 {
1348 	ULONG		dwReserved0;
1349 	ULONG_PTR	dwReserved1;
1350 } DD_PALETTE_LOCAL;
1351 
1352 
1353 typedef struct DD_KERNELCALLBACKS
1354 {
1355 	DWORD				dwSize;
1356 	DWORD				dwFlags;
1357 	PDD_KERNELCB_SYNCSURFACE	SyncSurfaceData;
1358 	PDD_KERNELCB_SYNCVIDEOPORT	SyncVideoPortData;
1359 } DD_KERNELCALLBACKS, *PDD_KERNELCALLBACKS;
1360 
1361 
1362 #define MAX_AUTOFLIP_BUFFERS				10
1363 #define DDSCAPS_EXECUTEBUFFER				DDSCAPS_RESERVED2
1364 #define DDSCAPS_COMMANDBUFFER				DDSCAPS_RESERVED3
1365 #define DDSCAPS_VERTEXBUFFER				DDSCAPS_RESERVED4
1366 #define DDPF_D3DFORMAT					0x00200000l
1367 #define D3DFORMAT_OP_TEXTURE				0x00000001L
1368 #define D3DFORMAT_OP_VOLUMETEXTURE			0x00000002L
1369 #define D3DFORMAT_OP_CUBETEXTURE			0x00000004L
1370 #define D3DFORMAT_OP_OFFSCREEN_RENDERTARGET		0x00000008L
1371 #define D3DFORMAT_OP_SAME_FORMAT_RENDERTARGET		0x00000010L
1372 #define D3DFORMAT_OP_ZSTENCIL				0x00000040L
1373 #define D3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH  0x00000080L
1374 #define D3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET 0x00000100L
1375 #define D3DFORMAT_OP_DISPLAYMODE			0x00000400L
1376 #define D3DFORMAT_OP_3DACCELERATION			0x00000800L
1377 #define D3DFORMAT_OP_PIXELSIZE				0x00001000L
1378 #define D3DFORMAT_OP_CONVERT_TO_ARGB			0x00002000L
1379 #define D3DFORMAT_OP_OFFSCREENPLAIN			0x00004000L
1380 #define D3DFORMAT_OP_SRGBREAD				0x00008000L
1381 #define D3DFORMAT_OP_BUMPMAP				0x00010000L
1382 #define D3DFORMAT_OP_DMAP				0x00020000L
1383 #define D3DFORMAT_OP_NOFILTER				0x00040000L
1384 #define D3DFORMAT_MEMBEROFGROUP_ARGB			0x00080000L
1385 #define D3DFORMAT_OP_SRGBWRITE				0x00100000L
1386 #define D3DFORMAT_OP_NOALPHABLEND			0x00200000L
1387 #define D3DFORMAT_OP_AUTOGENMIPMAP			0x00400000L
1388 #define D3DFORMAT_OP_VERTEXTEXTURE			0x00800000L
1389 #define D3DFORMAT_OP_NOTEXCOORDWRAPNORMIP		0x01000000L
1390 #define DDHAL_PLEASEALLOC_BLOCKSIZE			0x00000002l
1391 #define DDHAL_PLEASEALLOC_USERMEM			0x00000004l
1392 
1393 #define VIDMEM_ISLINEAR					0x00000001l
1394 #define VIDMEM_ISRECTANGULAR				0x00000002l
1395 #define VIDMEM_ISHEAP					0x00000004l
1396 #define VIDMEM_ISNONLOCAL				0x00000008l
1397 #define VIDMEM_ISWC					0x00000010l
1398 #define VIDMEM_HEAPDISABLED				0x00000020l
1399 
1400 #define DDHAL_CREATESURFACEEX_SWAPHANDLES		0x00000001l
1401 
1402 #define DDHAL_KERNEL_SYNCSURFACEDATA			0x00000001l
1403 #define DDHAL_KERNEL_SYNCVIDEOPORTDATA			0x00000002l
1404 
1405 #define DDHAL_DRIVER_NOTHANDLED				0x00000000l
1406 #define DDHAL_DRIVER_HANDLED				0x00000001l
1407 #define DDHAL_DRIVER_NOCKEYHW				0x00000002l
1408 
1409 #define DDRAWISURF_HASCKEYSRCBLT			0x00000800L
1410 #define DDRAWISURF_HASPIXELFORMAT			0x00002000L
1411 #define DDRAWISURF_HASOVERLAYDATA			0x00004000L
1412 #define DDRAWISURF_FRONTBUFFER				0x04000000L
1413 #define DDRAWISURF_BACKBUFFER				0x08000000L
1414 #define DDRAWISURF_INVALID				0x10000000L
1415 #define DDRAWISURF_DRIVERMANAGED			0x40000000L
1416 
1417 #define ROP_HAS_SOURCE					0x00000001l
1418 #define ROP_HAS_PATTERN					0x00000002l
1419 #define ROP_HAS_SOURCEPATTERN		ROP_HAS_SOURCE | ROP_HAS_PATTERN
1420 
1421 #define DDHAL_EXEBUFCB32_CANCREATEEXEBUF		0x00000001l
1422 #define DDHAL_EXEBUFCB32_CREATEEXEBUF			0x00000002l
1423 #define DDHAL_EXEBUFCB32_DESTROYEXEBUF			0x00000004l
1424 #define DDHAL_EXEBUFCB32_LOCKEXEBUF			0x00000008l
1425 #define DDHAL_EXEBUFCB32_UNLOCKEXEBUF			0x00000010l
1426 
1427 #define DDHAL_D3DBUFCB32_CANCREATED3DBUF		DDHAL_EXEBUFCB32_CANCREATEEXEBUF
1428 #define DDHAL_D3DBUFCB32_CREATED3DBUF			DDHAL_EXEBUFCB32_CREATEEXEBUF
1429 #define DDHAL_D3DBUFCB32_DESTROYD3DBUF			DDHAL_EXEBUFCB32_DESTROYEXEBUF
1430 #define DDHAL_D3DBUFCB32_LOCKD3DBUF			DDHAL_EXEBUFCB32_LOCKEXEBUF
1431 #define DDHAL_D3DBUFCB32_UNLOCKD3DBUF			DDHAL_EXEBUFCB32_UNLOCKEXEBUF
1432 
1433 #define DDHALINFO_ISPRIMARYDISPLAY			0x00000001
1434 #define DDHALINFO_MODEXILLEGAL				0x00000002
1435 #define DDHALINFO_GETDRIVERINFOSET			0x00000004
1436 #define DDHALINFO_GETDRIVERINFO2			0x00000008
1437 
1438 #define DDRAWIVPORT_ON					0x00000001
1439 #define DDRAWIVPORT_SOFTWARE_AUTOFLIP			0x00000002
1440 #define DDRAWIVPORT_COLORKEYANDINTERP			0x00000004
1441 
1442 #define DDHAL_PRIVATECAP_ATOMICSURFACECREATION		0x00000001l
1443 #define DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION		0x00000002l
1444 #define DDHAL_PRIVATECAP_RESERVED1			0x00000004l
1445 
1446 #define DDRAWI_VPORTSTART				0x0001
1447 #define DDRAWI_VPORTSTOP				0x0002
1448 #define DDRAWI_VPORTUPDATE				0x0003
1449 #define DDRAWI_VPORTGETCOLOR				0x0001
1450 #define DDRAWI_VPORTSETCOLOR				0x0002
1451 
1452 #ifdef __cplusplus
1453 } /* extern "C" */
1454 #endif
1455 
1456 #endif /* GUID_DEFS_ONLY */
1457 
1458 #endif /* __DD_INCLUDED__ */
1459 
1460