66f3667a6d298b704ffe766f314f24044774a5aa
[reactos.git] / reactos / w32api / include / ddk / ddrawint.h
1 /*
2 * DirectDraw NT driver interface
3 */
4
5 #ifndef __DD_INCLUDED__
6 #define __DD_INCLUDED__
7
8 #ifndef _NO_DDRAWINT_NO_COM
9 #ifndef _NO_COM
10 #define _NO_COM
11 #include <ddraw.h>
12 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
13 #undef _NO_COM
14 #else
15 #include <ddraw.h>
16 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
17 #endif
18 #else
19 #include <ddraw.h>
20 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
21 #endif
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 // FIXME: These should have been defined in other header files!
28 typedef struct _DDVIDEOPORTDESC *LPDDVIDEOPORTDESC; /* should be in dvp.h */
29 typedef struct _DDVIDEOPORTBANDWIDTH *LPDDVIDEOPORTBANDWIDTH; /* should be in dvp.h */
30 typedef struct _DDVIDEOPORTCONNECT *LPDDVIDEOPORTCONNECT; /* should be in dvp.h */
31 typedef struct _DDVIDEOPORTINFO *LPDDVIDEOPORTINFO; /* should be in dvp.h */
32 typedef struct _DD_VIDEOPORT_LOCAL *PDD_VIDEOPORT_LOCAL; /* should be defined here once we have dvp.h */
33
34
35
36
37
38 /************************************************************************/
39 /* Video memory info structures */
40 /************************************************************************/
41
42 typedef struct
43 {
44 DWORD dwFlags;
45 FLATPTR fpStart;
46 union
47 {
48 FLATPTR fpEnd;
49 DWORD dwWidth;
50 };
51 DDSCAPS ddsCaps;
52 DDSCAPS ddsCapsAlt;
53 union
54 {
55 LPVMEMHEAP lpHeap;
56 DWORD dwHeight;
57 };
58 } VIDEOMEMORY, *PVIDEOMEMORY;
59
60 typedef struct
61 {
62 FLATPTR fpPrimary;
63 DWORD dwFlags;
64 DWORD dwDisplayWidth;
65 DWORD dwDisplayHeight;
66 LONG lDisplayPitch;
67 DDPIXELFORMAT ddpfDisplay;
68 DWORD dwOffscreenAlign;
69 DWORD dwOverlayAlign;
70 DWORD dwTextureAlign;
71 DWORD dwZBufferAlign;
72 DWORD dwAlphaAlign;
73 PVOID pvPrimary;
74 } VIDEOMEMORYINFO;
75 typedef VIDEOMEMORYINFO *LPVIDEOMEMORYINFO;
76
77 /************************************************************************/
78 /* DDI representation of the DirectDraw object */
79 /************************************************************************/
80
81 typedef struct
82 {
83 PVOID dhpdev;
84 ULONG_PTR dwReserved1;
85 ULONG_PTR dwReserved2;
86 LPDDVIDEOPORTCAPS lpDDVideoPortCaps;
87 } DD_DIRECTDRAW_GLOBAL, *PDD_DIRECTDRAW_GLOBAL;
88
89 typedef struct
90 {
91 PDD_DIRECTDRAW_GLOBAL lpGbl;
92 } DD_DIRECTDRAW_LOCAL, *PDD_DIRECTDRAW_LOCAL;
93
94 /************************************************************************/
95 /* DDI representation of the DirectDrawSurface object */
96 /************************************************************************/
97
98 typedef struct
99 {
100 union
101 {
102 DWORD dwBlockSizeY;
103 LONG lSlicePitch;
104 };
105
106 union
107 {
108 PVIDEOMEMORY lpVidMemHeap;
109 DWORD dwBlockSizeX;
110 DWORD dwUserMemSize;
111 };
112
113 FLATPTR fpVidMem;
114 union
115 {
116 LONG lPitch;
117 DWORD dwLinearSize;
118 };
119 LONG yHint;
120 LONG xHint;
121 DWORD wHeight;
122 DWORD wWidth;
123 ULONG_PTR dwReserved1;
124 DDPIXELFORMAT ddpfSurface;
125 FLATPTR fpHeapOffset;
126 HANDLE hCreatorProcess;
127 } DD_SURFACE_GLOBAL, *PDD_SURFACE_GLOBAL;
128
129 typedef struct
130 {
131 DWORD dwMipMapCount;
132 PDD_VIDEOPORT_LOCAL lpVideoPort;
133 DWORD dwOverlayFlags;
134 DDSCAPSEX ddsCapsEx;
135 DWORD dwSurfaceHandle;
136 } DD_SURFACE_MORE, *PDD_SURFACE_MORE;
137
138 typedef struct _DD_ATTACHLIST *PDD_ATTACHLIST;
139
140 typedef struct
141 {
142 PDD_SURFACE_GLOBAL lpGbl;
143 DWORD dwFlags;
144 DDSCAPS ddsCaps;
145 ULONG_PTR dwReserved1;
146 union
147 {
148 DDCOLORKEY ddckCKSrcOverlay;
149 DDCOLORKEY ddckCKSrcBlt;
150 };
151 union
152 {
153 DDCOLORKEY ddckCKDestOverlay;
154 DDCOLORKEY ddckCKDestBlt;
155 };
156 PDD_SURFACE_MORE lpSurfMore;
157 PDD_ATTACHLIST lpAttachList;
158 PDD_ATTACHLIST lpAttachListFrom;
159 RECT rcOverlaySrc;
160 } DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL;
161
162 typedef struct _DD_ATTACHLIST
163 {
164 PDD_ATTACHLIST lpLink;
165 PDD_SURFACE_LOCAL lpAttached;
166 } DD_ATTACHLIST;
167
168 typedef struct
169 {
170 PDD_SURFACE_LOCAL lpLcl;
171 } DD_SURFACE_INT, *PDD_SURFACE_INT;
172
173 /************************************************************************/
174 /* DDI representation of the DirectDrawPalette object */
175 /************************************************************************/
176
177 typedef struct
178 {
179 ULONG_PTR Reserved1;
180 } DD_PALETTE_GLOBAL, *PDD_PALETTE_GLOBAL;
181
182 /************************************************************************/
183 /* DDI representation of the DirectDrawVideo object */
184 /************************************************************************/
185
186 typedef struct
187 {
188 PDD_DIRECTDRAW_LOCAL lpDD;
189 GUID guid;
190 DWORD dwUncompWidth;
191 DWORD dwUncompHeight;
192 DDPIXELFORMAT ddUncompPixelFormat;
193 DWORD dwDriverReserved1;
194 DWORD dwDriverReserved2;
195 DWORD dwDriverReserved3;
196 LPVOID lpDriverReserved1;
197 LPVOID lpDriverReserved2;
198 LPVOID lpDriverReserved3;
199 } DD_MOTIONCOMP_LOCAL, *PDD_MOTIONCOMP_LOCAL;
200
201 /************************************************************************/
202 /* IDirectDrawSurface callbacks */
203 /************************************************************************/
204
205 typedef struct
206 {
207 PDD_DIRECTDRAW_GLOBAL lpDD;
208 PDD_SURFACE_LOCAL lpDDSurface;
209 DWORD bHasRect;
210 RECTL rArea;
211 LPVOID lpSurfData;
212 HRESULT ddRVal;
213 PVOID Lock;
214 DWORD dwFlags;
215 FLATPTR fpProcess;
216 } DD_LOCKDATA, *PDD_LOCKDATA;
217 typedef DWORD (STDCALL *PDD_SURFCB_LOCK)(PDD_LOCKDATA);
218
219 typedef struct
220 {
221 PDD_DIRECTDRAW_GLOBAL lpDD;
222 PDD_SURFACE_LOCAL lpDDSurface;
223 HRESULT ddRVal;
224 PVOID Unlock;
225 } DD_UNLOCKDATA, *PDD_UNLOCKDATA;
226 typedef DWORD (STDCALL *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA);
227
228 #define DDABLT_SRCOVERDEST 0x00000001
229 #define DDBLT_AFLAGS 0x80000000
230
231 typedef struct
232 {
233 BYTE blue, green, red, alpha;
234 } DDARGB, *PDDARGB;
235
236 typedef struct
237 {
238 PDD_DIRECTDRAW_GLOBAL lpDD;
239 PDD_SURFACE_LOCAL lpDDDestSurface;
240 RECTL rDest;
241 PDD_SURFACE_LOCAL lpDDSrcSurface;
242 RECTL rSrc;
243 DWORD dwFlags;
244 DWORD dwROPFlags;
245 DDBLTFX bltFX;
246 HRESULT ddRVal;
247 PVOID Blt;
248 BOOL IsClipped;
249 RECTL rOrigDest;
250 RECTL rOrigSrc;
251 DWORD dwRectCnt;
252 LPRECT prDestRects;
253 DWORD dwAFlags;
254 DDARGB ddargbScaleFactors;
255 } DD_BLTDATA, *PDD_BLTDATA;
256 typedef DWORD (STDCALL *PDD_SURFCB_BLT)(PDD_BLTDATA);
257
258 typedef struct
259 {
260 PDD_DIRECTDRAW_GLOBAL lpDD;
261 PDD_SURFACE_LOCAL lpDDDestSurface;
262 RECTL rDest;
263 PDD_SURFACE_LOCAL lpDDSrcSurface;
264 RECTL rSrc;
265 DWORD dwFlags;
266 DDOVERLAYFX overlayFX;
267 HRESULT ddRVal;
268 PVOID UpdateOverlay;
269 } DD_UPDATEOVERLAYDATA, *PDD_UPDATEOVERLAYDATA;
270 typedef DWORD (STDCALL *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA);
271
272 typedef struct
273 {
274 PDD_DIRECTDRAW_GLOBAL lpDD;
275 PDD_SURFACE_LOCAL lpDDSrcSurface;
276 PDD_SURFACE_LOCAL lpDDDestSurface;
277 LONG lXPos;
278 LONG lYPos;
279 HRESULT ddRVal;
280 PVOID SetOverlayPosition;
281 } DD_SETOVERLAYPOSITIONDATA, *PDD_SETOVERLAYPOSITIONDATA;
282 typedef DWORD (STDCALL *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA);
283
284 typedef struct
285 {
286 PDD_DIRECTDRAW_GLOBAL lpDD;
287 PDD_SURFACE_LOCAL lpDDSurface;
288 PDD_PALETTE_GLOBAL lpDDPalette;
289 HRESULT ddRVal;
290 PVOID SetPalette;
291 BOOL Attach;
292 } DD_SETPALETTEDATA, *PDD_SETPALETTEDATA;
293 typedef DWORD (STDCALL *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA);
294
295 typedef struct
296 {
297 PDD_DIRECTDRAW_GLOBAL lpDD;
298 PDD_SURFACE_LOCAL lpSurfCurr;
299 PDD_SURFACE_LOCAL lpSurfTarg;
300 DWORD dwFlags;
301 HRESULT ddRVal;
302 PVOID Flip;
303 PDD_SURFACE_LOCAL lpSurfCurrLeft;
304 PDD_SURFACE_LOCAL lpSurfTargLeft;
305 } DD_FLIPDATA, *PDD_FLIPDATA;
306 typedef DWORD (STDCALL *PDD_SURFCB_FLIP)(PDD_FLIPDATA);
307
308 typedef struct
309 {
310 PDD_DIRECTDRAW_GLOBAL lpDD;
311 PDD_SURFACE_LOCAL lpDDSurface;
312 HRESULT ddRVal;
313 PVOID DestroySurface;
314 } DD_DESTROYSURFACEDATA, *PDD_DESTROYSURFACEDATA;
315 typedef DWORD (STDCALL *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA);
316
317 typedef struct
318 {
319 PDD_DIRECTDRAW_GLOBAL lpDD;
320 PDD_SURFACE_LOCAL lpDDSurface;
321 HRESULT ddRVal;
322 PVOID SetClipList;
323 } DD_SETCLIPLISTDATA, *PDD_SETCLIPLISTDATA;
324 typedef DWORD (STDCALL *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA);
325
326 typedef struct
327 {
328 PDD_DIRECTDRAW_GLOBAL lpDD;
329 PDD_SURFACE_LOCAL lpDDSurface;
330 PDD_SURFACE_LOCAL lpSurfAttached;
331 HRESULT ddRVal;
332 PVOID AddAttachedSurface;
333 } DD_ADDATTACHEDSURFACEDATA, *PDD_ADDATTACHEDSURFACEDATA;
334 typedef DWORD (STDCALL *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA);
335
336 typedef struct
337 {
338 PDD_DIRECTDRAW_GLOBAL lpDD;
339 PDD_SURFACE_LOCAL lpDDSurface;
340 DWORD dwFlags;
341 DDCOLORKEY ckNew;
342 HRESULT ddRVal;
343 PVOID SetColorKey;
344 } DD_SETCOLORKEYDATA, *PDD_SETCOLORKEYDATA;
345 typedef DWORD (STDCALL *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA);
346
347 typedef struct
348 {
349 PDD_DIRECTDRAW_GLOBAL lpDD;
350 PDD_SURFACE_LOCAL lpDDSurface;
351 DWORD dwFlags;
352 HRESULT ddRVal;
353 PVOID GetBltStatus;
354 } DD_GETBLTSTATUSDATA, *PDD_GETBLTSTATUSDATA;
355 typedef DWORD (STDCALL *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA);
356
357 typedef struct
358 {
359 PDD_DIRECTDRAW_GLOBAL lpDD;
360 PDD_SURFACE_LOCAL lpDDSurface;
361 DWORD dwFlags;
362 HRESULT ddRVal;
363 PVOID GetFlipStatus;
364 } DD_GETFLIPSTATUSDATA, *PDD_GETFLIPSTATUSDATA;
365 typedef DWORD (STDCALL *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA);
366
367 typedef struct
368 {
369 DWORD dwSize;
370 DWORD dwFlags;
371 PDD_SURFCB_DESTROYSURFACE DestroySurface;
372 PDD_SURFCB_FLIP Flip;
373 PDD_SURFCB_SETCLIPLIST SetClipList;
374 PDD_SURFCB_LOCK Lock;
375 PDD_SURFCB_UNLOCK Unlock;
376 PDD_SURFCB_BLT Blt;
377 PDD_SURFCB_SETCOLORKEY SetColorKey;
378 PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
379 PDD_SURFCB_GETBLTSTATUS GetBltStatus;
380 PDD_SURFCB_GETFLIPSTATUS GetFlipStatus;
381 PDD_SURFCB_UPDATEOVERLAY UpdateOverlay;
382 PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition;
383 PVOID Reserved;
384 PDD_SURFCB_SETPALETTE SetPalette;
385 } DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
386
387 enum
388 {
389 DDHAL_SURFCB32_DESTROYSURFACE = 1<<0,
390 DDHAL_SURFCB32_FLIP = 1<<1,
391 DDHAL_SURFCB32_SETCLIPLIST = 1<<2,
392 DDHAL_SURFCB32_LOCK = 1<<3,
393 DDHAL_SURFCB32_UNLOCK = 1<<4,
394 DDHAL_SURFCB32_BLT = 1<<5,
395 DDHAL_SURFCB32_SETCOLORKEY = 1<<6,
396 DDHAL_SURFCB32_ADDATTACHEDSURFACE = 1<<7,
397 DDHAL_SURFCB32_GETBLTSTATUS = 1<<8,
398 DDHAL_SURFCB32_GETFLIPSTATUS = 1<<9,
399 DDHAL_SURFCB32_UPDATEOVERLAY = 1<<10,
400 DDHAL_SURFCB32_SETOVERLAYPOSITION = 1<<11,
401 DDHAL_SURFCB32_SETPALETTE = 1<<13,
402 };
403
404 /************************************************************************/
405 /* IDirectDraw callbacks */
406 /************************************************************************/
407
408 typedef struct
409 {
410 PDD_DIRECTDRAW_GLOBAL lpDD;
411 DDSURFACEDESC *lpDDSurfaceDesc;
412 PDD_SURFACE_LOCAL *lplpSList;
413 DWORD dwSCnt;
414 HRESULT ddRVal;
415 PVOID CreateSurface;
416 } DD_CREATESURFACEDATA, *PDD_CREATESURFACEDATA;
417 typedef DWORD (STDCALL *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA);
418
419 typedef struct
420 {
421 PDD_SURFACE_LOCAL lpDDSurface;
422 DWORD dwFlags;
423 DDCOLORKEY ckNew;
424 HRESULT ddRVal;
425 PVOID SetColorKey;
426 } DD_DRVSETCOLORKEYDATA, *PDD_DRVSETCOLORKEYDATA;
427 typedef DWORD (STDCALL *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA);
428
429 #define DDWAITVB_I_TESTVB 0x80000006
430
431 typedef struct
432 {
433 PDD_DIRECTDRAW_GLOBAL lpDD;
434 DWORD dwFlags;
435 DWORD bIsInVB;
436 DWORD hEvent;
437 HRESULT ddRVal;
438 PVOID WaitForVerticalBlank;
439 } DD_WAITFORVERTICALBLANKDATA, *PDD_WAITFORVERTICALBLANKDATA;
440 typedef DWORD (STDCALL *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA);
441
442 typedef struct
443 {
444 PDD_DIRECTDRAW_GLOBAL lpDD;
445 DDSURFACEDESC *lpDDSurfaceDesc;
446 DWORD bIsDifferentPixelFormat;
447 HRESULT ddRVal;
448 PVOID CanCreateSurface;
449 } DD_CANCREATESURFACEDATA, *PDD_CANCREATESURFACEDATA;
450 typedef DWORD (STDCALL *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA);
451
452 typedef struct
453 {
454 PDD_DIRECTDRAW_GLOBAL lpDD;
455 PDD_PALETTE_GLOBAL lpDDPalette;
456 LPPALETTEENTRY lpColorTable;
457 HRESULT ddRVal;
458 PVOID CreatePalette;
459 BOOL is_excl;
460 } DD_CREATEPALETTEDATA, *PDD_CREATEPALETTEDATA;
461 typedef DWORD (STDCALL *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA);
462
463 typedef struct
464 {
465 PDD_DIRECTDRAW_GLOBAL lpDD;
466 DWORD dwScanLine;
467 HRESULT ddRVal;
468 PVOID GetScanLine;
469 } DD_GETSCANLINEDATA, *PDD_GETSCANLINEDATA;
470 typedef DWORD (STDCALL *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA);
471
472 typedef struct
473 {
474 PDD_DIRECTDRAW_GLOBAL lpDD;
475 BOOL bMap;
476 HANDLE hProcess;
477 FLATPTR fpProcess;
478 HRESULT ddRVal;
479 } DD_MAPMEMORYDATA, *PDD_MAPMEMORYDATA;
480 typedef DWORD (STDCALL *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA);
481
482
483
484 typedef DWORD (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA);
485 typedef DWORD (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA);
486
487 typedef struct DD_CALLBACKS
488 {
489 DWORD dwSize;
490 DWORD dwFlags;
491 PDD_DESTROYDRIVER DestroyDriver;
492 PDD_CREATESURFACE CreateSurface;
493 PDD_SETCOLORKEY SetColorKey;
494 PDD_SETMODE SetMode;
495 PDD_WAITFORVERTICALBLANK WaitForVerticalBlank;
496 PDD_CANCREATESURFACE CanCreateSurface;
497 PDD_CREATEPALETTE CreatePalette;
498 PDD_GETSCANLINE GetScanLine;
499 PDD_MAPMEMORY MapMemory;
500 } DD_CALLBACKS, *PDD_CALLBACKS;
501
502
503
504 #define DDHAL_CB32_DESTROYDRIVER 0x00000001l
505 #define DDHAL_CB32_CREATESURFACE 0x00000002l
506 #define DDHAL_CB32_SETCOLORKEY 0x00000004l
507 #define DDHAL_CB32_SETMODE 0x00000008l
508 #define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
509 #define DDHAL_CB32_CANCREATESURFACE 0x00000020l
510 #define DDHAL_CB32_CREATEPALETTE 0x00000040l
511 #define DDHAL_CB32_GETSCANLINE 0x00000080l
512 #define DDHAL_CB32_MAPMEMORY 0x80000000l
513
514 typedef struct
515 {
516 PDD_DIRECTDRAW_GLOBAL lpDD;
517 DDSCAPS DDSCaps;
518 DWORD dwTotal;
519 DWORD dwFree;
520 HRESULT ddRVal;
521 PVOID GetAvailDriverMemory;
522 } DD_GETAVAILDRIVERMEMORYDATA, *PDD_GETAVAILDRIVERMEMORYDATA;
523 typedef DWORD (STDCALL *PDD_GETAVAILDRIVERMEMORY)(PDD_GETAVAILDRIVERMEMORYDATA);
524
525 DEFINE_GUID(GUID_MiscellaneousCallbacks, 0xEFD60CC0, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
526
527 typedef struct
528 {
529 DWORD dwSize;
530 DWORD dwFlags;
531 PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory;
532 } DD_MISCELLANEOUSCALLBACKS, *PDD_MISCELLANEOUSCALLBACKS;
533
534 enum
535 {
536 DDHAL_MISCCB32_GETAVAILDRIVERMEMORY = 1<<0,
537 };
538
539 typedef DWORD (STDCALL *PDD_ALPHABLT)(PDD_BLTDATA);
540
541 typedef struct
542 {
543 DWORD dwFlags;
544 PDD_DIRECTDRAW_LOCAL lpDDLcl;
545 PDD_SURFACE_LOCAL lpDDSLcl;
546 HRESULT ddRVal;
547 } DD_CREATESURFACEEXDATA, *PDD_CREATESURFACEEXDATA;
548 typedef DWORD (STDCALL *PDD_CREATESURFACEEX)(PDD_CREATESURFACEEXDATA);
549
550 typedef struct
551 {
552 DWORD dwFlags;
553 union
554 {
555 PDD_DIRECTDRAW_GLOBAL lpDD;
556 DWORD_PTR dwhContext;
557 };
558 LPDWORD lpdwStates;
559 DWORD dwLength;
560 HRESULT ddRVal;
561 } DD_GETDRIVERSTATEDATA, *PDD_GETDRIVERSTATEDATA;
562 typedef DWORD (STDCALL *PDD_GETDRIVERSTATE)(PDD_GETDRIVERSTATEDATA);
563
564 typedef struct
565 {
566 DWORD dwFlags;
567 PDD_DIRECTDRAW_LOCAL pDDLcl;
568 HRESULT ddRVal;
569 } DD_DESTROYDDLOCALDATA, *PDD_DESTROYDDLOCALDATA;
570 typedef DWORD (STDCALL *PDD_DESTROYDDLOCAL)(PDD_DESTROYDDLOCALDATA);
571
572 DEFINE_GUID(GUID_Miscellaneous2Callbacks, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
573
574 typedef struct
575 {
576 DWORD dwSize;
577 DWORD dwFlags;
578 PDD_ALPHABLT AlphaBlt;
579 PDD_CREATESURFACEEX CreateSurfaceEx;
580 PDD_GETDRIVERSTATE GetDriverState;
581 PDD_DESTROYDDLOCAL DestroyDDLocal;
582 } DD_MISCELLANEOUS2CALLBACKS, *PDD_MISCELLANEOUS2CALLBACKS;
583
584 enum
585 {
586 DDHAL_MISC2CB32_ALPHABLT = 1<<0,
587 DDHAL_MISC2CB32_CREATESURFACEEX = 1<<1,
588 DDHAL_MISC2CB32_GETDRIVERSTATE = 1<<2,
589 DDHAL_MISC2CB32_DESTROYDDLOCAL = 1<<3,
590 };
591
592 typedef struct
593 {
594 PDD_DIRECTDRAW_GLOBAL lpDD;
595 PDD_SURFACE_LOCAL lpDDSurface;
596 HRESULT ddRVal;
597 PVOID FreeDriverMemory;
598 } DD_FREEDRIVERMEMORYDATA, *PDD_FREEDRIVERMEMORYDATA;
599 typedef DWORD (STDCALL *PDD_FREEDRIVERMEMORY)(PDD_FREEDRIVERMEMORYDATA);
600
601 typedef struct
602 {
603 PDD_DIRECTDRAW_GLOBAL lpDD;
604 DWORD dwEnterExcl;
605 DWORD dwReserved;
606 HRESULT ddRVal;
607 PVOID SetExclusiveMode;
608 } DD_SETEXCLUSIVEMODEDATA, *PDD_SETEXCLUSIVEMODEDATA;
609 typedef DWORD (STDCALL *PDD_SETEXCLUSIVEMODE)(PDD_SETEXCLUSIVEMODEDATA);
610
611 typedef struct
612 {
613 PDD_DIRECTDRAW_GLOBAL lpDD;
614 DWORD dwToGDI;
615 DWORD dwReserved;
616 HRESULT ddRVal;
617 PVOID FlipToGDISurface;
618 } DD_FLIPTOGDISURFACEDATA, *PDD_FLIPTOGDISURFACEDATA;
619 typedef DWORD (STDCALL *PDD_FLIPTOGDISURFACE)(PDD_FLIPTOGDISURFACEDATA);
620
621 DEFINE_GUID(GUID_NTCallbacks, 0x6FE9ECDE, 0xDF89, 0x11D1, 0x9D, 0xB0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xBA);
622
623 typedef struct
624 {
625 DWORD dwSize;
626 DWORD dwFlags;
627 PDD_FREEDRIVERMEMORY FreeDriverMemory;
628 PDD_SETEXCLUSIVEMODE SetExclusiveMode;
629 PDD_FLIPTOGDISURFACE FlipToGDISurface;
630 } DD_NTCALLBACKS, *PDD_NTCALLBACKS;
631
632 enum
633 {
634 DDHAL_NTCB32_FREEDRIVERMEMORY = 1<<0,
635 DDHAL_NTCB32_SETEXCLUSIVEMODE = 1<<1,
636 DDHAL_NTCB32_FLIPTOGDISURFACE = 1<<2,
637 };
638
639 /************************************************************************/
640 /* IDirectDrawPalette callbacks */
641 /************************************************************************/
642
643 typedef struct
644 {
645 PDD_DIRECTDRAW_GLOBAL lpDD;
646 PDD_PALETTE_GLOBAL lpDDPalette;
647 HRESULT ddRVal;
648 PVOID DestroyPalette;
649 } DD_DESTROYPALETTEDATA, *PDD_DESTROYPALETTEDATA;
650 typedef DWORD (STDCALL *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA);
651
652 typedef struct
653 {
654 PDD_DIRECTDRAW_GLOBAL lpDD;
655 PDD_PALETTE_GLOBAL lpDDPalette;
656 DWORD dwBase;
657 DWORD dwNumEntries;
658 LPPALETTEENTRY lpEntries;
659 HRESULT ddRVal;
660 PVOID SetEntries;
661 } DD_SETENTRIESDATA, *PDD_SETENTRIESDATA;
662 typedef DWORD (STDCALL *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA);
663
664 typedef struct
665 {
666 DWORD dwSize;
667 DWORD dwFlags;
668 PDD_PALCB_DESTROYPALETTE DestroyPalette;
669 PDD_PALCB_SETENTRIES SetEntries;
670 } DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
671
672 enum
673 {
674 DDHAL_PALCB32_DESTROYPALETTE = 1<<0,
675 DDHAL_PALCB32_SETENTRIES = 1<<1,
676 };
677
678 /************************************************************************/
679 /* IDirectDrawVideoport callbacks */
680 /************************************************************************/
681
682 typedef struct
683 {
684 PDD_DIRECTDRAW_LOCAL lpDD;
685 LPDDVIDEOPORTDESC lpDDVideoPortDesc;
686 HRESULT ddRVal;
687 PVOID CanCreateVideoPort;
688 } DD_CANCREATEVPORTDATA, *PDD_CANCREATEVPORTDATA;
689 typedef DWORD (STDCALL *PDD_VPORTCB_CANCREATEVIDEOPORT)(PDD_CANCREATEVPORTDATA);
690
691 typedef struct
692 {
693 PDD_DIRECTDRAW_LOCAL lpDD;
694 LPDDVIDEOPORTDESC lpDDVideoPortDesc;
695 PDD_VIDEOPORT_LOCAL lpVideoPort;
696 HRESULT ddRVal;
697 PVOID CreateVideoPort;
698 } DD_CREATEVPORTDATA, *PDD_CREATEVPORTDATA;
699 typedef DWORD (STDCALL *PDD_VPORTCB_CREATEVIDEOPORT)(PDD_CREATEVPORTDATA);
700
701 typedef struct
702 {
703 PDD_DIRECTDRAW_LOCAL lpDD;
704 PDD_VIDEOPORT_LOCAL lpVideoPort;
705 PDD_SURFACE_LOCAL lpSurfCurr;
706 PDD_SURFACE_LOCAL lpSurfTarg;
707 HRESULT ddRVal;
708 PVOID FlipVideoPort;
709 } DD_FLIPVPORTDATA, *PDD_FLIPVPORTDATA;
710 typedef DWORD (STDCALL *PDD_VPORTCB_FLIP)(PDD_FLIPVPORTDATA);
711
712 typedef struct
713 {
714 PDD_DIRECTDRAW_LOCAL lpDD;
715 PDD_VIDEOPORT_LOCAL lpVideoPort;
716 LPDDPIXELFORMAT lpddpfFormat;
717 DWORD dwWidth;
718 DWORD dwHeight;
719 DWORD dwFlags;
720 LPDDVIDEOPORTBANDWIDTH lpBandwidth;
721 HRESULT ddRVal;
722 PVOID GetVideoPortBandwidth;
723 } DD_GETVPORTBANDWIDTHDATA, *PDD_GETVPORTBANDWIDTHDATA;
724 typedef DWORD (STDCALL *PDD_VPORTCB_GETBANDWIDTH)(PDD_GETVPORTBANDWIDTHDATA);
725
726 typedef struct
727 {
728 PDD_DIRECTDRAW_LOCAL lpDD;
729 PDD_VIDEOPORT_LOCAL lpVideoPort;
730 DWORD dwFlags;
731 LPDDPIXELFORMAT lpddpfFormat;
732 DWORD dwNumFormats;
733 HRESULT ddRVal;
734 PVOID GetVideoPortInputFormats;
735 } DD_GETVPORTINPUTFORMATDATA, *PDD_GETVPORTINPUTFORMATDATA;
736 typedef DWORD (STDCALL *PDD_VPORTCB_GETINPUTFORMATS)(PDD_GETVPORTINPUTFORMATDATA);
737
738 typedef struct
739 {
740 PDD_DIRECTDRAW_LOCAL lpDD;
741 PDD_VIDEOPORT_LOCAL lpVideoPort;
742 DWORD dwFlags;
743 LPDDPIXELFORMAT lpddpfInputFormat;
744 LPDDPIXELFORMAT lpddpfOutputFormats;
745 DWORD dwNumFormats;
746 HRESULT ddRVal;
747 PVOID GetVideoPortInputFormats;
748 } DD_GETVPORTOUTPUTFORMATDATA, *PDD_GETVPORTOUTPUTFORMATDATA;
749 typedef DWORD (STDCALL *PDD_VPORTCB_GETOUTPUTFORMATS)(PDD_GETVPORTOUTPUTFORMATDATA);
750
751 typedef struct
752 {
753 PDD_DIRECTDRAW_LOCAL lpDD;
754 PDD_VIDEOPORT_LOCAL lpVideoPort;
755 BOOL bField;
756 HRESULT ddRVal;
757 PVOID GetVideoPortField;
758 } DD_GETVPORTFIELDDATA, *PDD_GETVPORTFIELDDATA;
759 typedef DWORD (STDCALL *PDD_VPORTCB_GETFIELD)(PDD_GETVPORTFIELDDATA);
760
761 typedef struct
762 {
763 PDD_DIRECTDRAW_LOCAL lpDD;
764 PDD_VIDEOPORT_LOCAL lpVideoPort;
765 DWORD dwLine;
766 HRESULT ddRVal;
767 PVOID GetVideoPortLine;
768 } DD_GETVPORTLINEDATA, *PDD_GETVPORTLINEDATA;
769 typedef DWORD (STDCALL *PDD_VPORTCB_GETLINE)(PDD_GETVPORTLINEDATA);
770
771 typedef struct
772 {
773 PDD_DIRECTDRAW_LOCAL lpDD;
774 DWORD dwPortId;
775 LPDDVIDEOPORTCONNECT lpConnect;
776 DWORD dwNumEntries;
777 HRESULT ddRVal;
778 PVOID GetVideoPortConnectInfo;
779 } DD_GETVPORTCONNECTDATA, *PDD_GETVPORTCONNECTDATA;
780 typedef DWORD (STDCALL *PDD_VPORTCB_GETVPORTCONNECT)(PDD_GETVPORTCONNECTDATA);
781
782 typedef struct
783 {
784 PDD_DIRECTDRAW_LOCAL lpDD;
785 PDD_VIDEOPORT_LOCAL lpVideoPort;
786 HRESULT ddRVal;
787 PVOID DestroyVideoPort;
788 } DD_DESTROYVPORTDATA, *PDD_DESTROYVPORTDATA;
789 typedef DWORD (STDCALL *PDD_VPORTCB_DESTROYVPORT)(PDD_DESTROYVPORTDATA);
790
791 typedef struct
792 {
793 PDD_DIRECTDRAW_LOCAL lpDD;
794 FLATPTR fpSurface;
795 HRESULT ddRVal;
796 PVOID GetVideoPortFlipStatus;
797 } DD_GETVPORTFLIPSTATUSDATA, *PDD_GETVPORTFLIPSTATUSDATA;
798 typedef DWORD (STDCALL *PDD_VPORTCB_GETFLIPSTATUS)(PDD_GETVPORTFLIPSTATUSDATA);
799
800 #define DDRAWI_VPORTSTART 1
801 #define DDRAWI_VPORTSTOP 2
802 #define DDRAWI_VPORTUPDATE 3
803
804 typedef struct
805 {
806 PDD_DIRECTDRAW_LOCAL lpDD;
807 PDD_VIDEOPORT_LOCAL lpVideoPort;
808 PDD_SURFACE_INT *lplpDDSurface;
809 PDD_SURFACE_INT *lplpDDVBISurface;
810 LPDDVIDEOPORTINFO lpVideoInfo;
811 DWORD dwFlags;
812 DWORD dwNumAutoflip;
813 DWORD dwNumVBIAutoflip;
814 HRESULT ddRVal;
815 PVOID UpdateVideoPort;
816 } DD_UPDATEVPORTDATA, *PDD_UPDATEVPORTDATA;
817 typedef DWORD (STDCALL *PDD_VPORTCB_UPDATE)(PDD_UPDATEVPORTDATA);
818
819 typedef struct
820 {
821 PDD_DIRECTDRAW_LOCAL lpDD;
822 PDD_VIDEOPORT_LOCAL lpVideoPort;
823 DWORD dwFlags;
824 DWORD dwLine;
825 DWORD dwTimeOut;
826 HRESULT ddRVal;
827 PVOID UpdateVideoPort;
828 } DD_WAITFORVPORTSYNCDATA, *PDD_WAITFORVPORTSYNCDATA;
829 typedef DWORD (STDCALL *PDD_VPORTCB_WAITFORSYNC)(PDD_WAITFORVPORTSYNCDATA);
830
831 typedef struct
832 {
833 PDD_DIRECTDRAW_LOCAL lpDD;
834 PDD_VIDEOPORT_LOCAL lpVideoPort;
835 DWORD dwStatus;
836 HRESULT ddRVal;
837 PVOID GetVideoSignalStatus;
838 } DD_GETVPORTSIGNALDATA, *PDD_GETVPORTSIGNALDATA;
839 typedef DWORD (STDCALL *PDD_VPORTCB_GETSIGNALSTATUS)(PDD_GETVPORTSIGNALDATA);
840
841 #define DDRAWI_VPORTGETCOLOR 1
842 #define DDRAWI_VPORTSETCOLOR 2
843
844 typedef struct
845 {
846 PDD_DIRECTDRAW_LOCAL lpDD;
847 PDD_VIDEOPORT_LOCAL lpVideoPort;
848 DWORD dwFlags;
849 LPDDCOLORCONTROL lpColorData;
850 HRESULT ddRVal;
851 PVOID ColorControl;
852 } DD_VPORTCOLORDATA, *PDD_VPORTCOLORDATA;
853 typedef DWORD (STDCALL *PDD_VPORTCB_COLORCONTROL)(PDD_VPORTCOLORDATA);
854
855 DEFINE_GUID(GUID_VideoPortCallbacks, 0xEFD60CC1, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
856
857 typedef struct
858 {
859 DWORD dwSize;
860 DWORD dwFlags;
861 PDD_VPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort;
862 PDD_VPORTCB_CREATEVIDEOPORT CreateVideoPort;
863 PDD_VPORTCB_FLIP FlipVideoPort;
864 PDD_VPORTCB_GETBANDWIDTH GetVideoPortBandwidth;
865 PDD_VPORTCB_GETINPUTFORMATS GetVideoPortInputFormats;
866 PDD_VPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats;
867 PVOID Reserved;
868 PDD_VPORTCB_GETFIELD GetVideoPortField;
869 PDD_VPORTCB_GETLINE GetVideoPortLine;
870 PDD_VPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo;
871 PDD_VPORTCB_DESTROYVPORT DestroyVideoPort;
872 PDD_VPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus;
873 PDD_VPORTCB_UPDATE UpdateVideoPort;
874 PDD_VPORTCB_WAITFORSYNC WaitForVideoPortSync;
875 PDD_VPORTCB_GETSIGNALSTATUS GetVideoSignalStatus;
876 PDD_VPORTCB_COLORCONTROL ColorControl;
877 } DD_VIDEOPORTCALLBACKS, *PDD_VIDEOPORTCALLBACKS;
878
879 enum
880 {
881 DDHAL_VPORT32_CANCREATEVIDEOPORT = 1<<0,
882 DDHAL_VPORT32_CREATEVIDEOPORT = 1<<1,
883 DDHAL_VPORT32_FLIP = 1<<2,
884 DDHAL_VPORT32_GETBANDWIDTH = 1<<3,
885 DDHAL_VPORT32_GETINPUTFORMATS = 1<<4,
886 DDHAL_VPORT32_GETOUTPUTFORMATS = 1<<5,
887 DDHAL_VPORT32_GETFIELD = 1<<7,
888 DDHAL_VPORT32_GETLINE = 1<<8,
889 DDHAL_VPORT32_GETCONNECT = 1<<9,
890 DDHAL_VPORT32_DESTROY = 1<<10,
891 DDHAL_VPORT32_GETFLIPSTATUS = 1<<11,
892 DDHAL_VPORT32_UPDATE = 1<<12,
893 DDHAL_VPORT32_WAITFORSYNC = 1<<13,
894 DDHAL_VPORT32_GETSIGNALSTATUS = 1<<14,
895 DDHAL_VPORT32_COLORCONTROL = 1<<15,
896 };
897
898 /************************************************************************/
899 /* IDirectDrawColorControl callbacks */
900 /************************************************************************/
901
902 #define DDRAWI_GETCOLOR 1
903 #define DDRAWI_SETCOLOR 2
904
905 typedef struct
906 {
907 PDD_DIRECTDRAW_GLOBAL lpDD;
908 PDD_SURFACE_LOCAL lpDDSurface;
909 LPDDCOLORCONTROL lpColorData;
910 DWORD dwFlags;
911 HRESULT ddRVal;
912 PVOID ColorControl;
913 } DD_COLORCONTROLDATA, *PDD_COLORCONTROLDATA;
914 typedef DWORD (STDCALL *PDD_COLORCB_COLORCONTROL)(PDD_COLORCONTROLDATA);
915
916 DEFINE_GUID(GUID_ColorControlCallbacks, 0xEFD60CC2, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
917
918 typedef struct
919 {
920 DWORD dwSize;
921 DWORD dwFlags;
922 PDD_COLORCB_COLORCONTROL ColorControl;
923 } DD_COLORCONTROLCALLBACKS, *PDD_COLORCONTROLCALLBACKS;
924
925 enum
926 {
927 DDHAL_COLOR_COLORCONTROL = 1<<0,
928 };
929
930 /************************************************************************/
931 /* IDirectDrawVideo callbacks */
932 /************************************************************************/
933
934 typedef struct
935 {
936 PDD_DIRECTDRAW_LOCAL lpDD;
937 DWORD dwNumGuids;
938 GUID *lpGuids;
939 HRESULT ddRVal;
940 } DD_GETMOCOMPGUIDSDATA, *PDD_GETMOCOMPGUIDSDATA;
941 typedef DWORD (STDCALL *PDD_MOCOMPCB_GETGUIDS)(PDD_GETMOCOMPGUIDSDATA);
942
943 typedef struct
944 {
945 PDD_DIRECTDRAW_LOCAL lpDD;
946 GUID *lpGuid;
947 DWORD dwNumFormats;
948 LPDDPIXELFORMAT lpFormats;
949 HRESULT ddRVal;
950 } DD_GETMOCOMPFORMATSDATA, *PDD_GETMOCOMPFORMATSDATA;
951 typedef DWORD (STDCALL *PDD_MOCOMPCB_GETFORMATS)(PDD_GETMOCOMPFORMATSDATA);
952
953 typedef struct
954 {
955 PDD_DIRECTDRAW_LOCAL lpDD;
956 PDD_MOTIONCOMP_LOCAL lpMoComp;
957 GUID *lpGuid;
958 DWORD dwUncompWidth;
959 DWORD dwUncompHeight;
960 DDPIXELFORMAT ddUncompPixelFormat;
961 LPVOID lpData;
962 DWORD dwDataSize;
963 HRESULT ddRVal;
964 } DD_CREATEMOCOMPDATA, *PDD_CREATEMOCOMPDATA;
965 typedef DWORD (STDCALL *PDD_MOCOMPCB_CREATE)(PDD_CREATEMOCOMPDATA);
966
967 typedef struct
968 {
969 DWORD dwSize;
970 DWORD dwNumCompBuffers;
971 DWORD dwWidthToCreate;
972 DWORD dwHeightToCreate;
973 DWORD dwBytesToAllocate;
974 DDSCAPS2 ddCompCaps;
975 DDPIXELFORMAT ddPixelFormat;
976 } DDCOMPBUFFERINFO, *PDDCOMPBUFFERINFO;
977
978 typedef struct
979 {
980 PDD_DIRECTDRAW_LOCAL lpDD;
981 GUID *lpGuid;
982 DWORD dwWidth;
983 DWORD dwHeight;
984 DDPIXELFORMAT ddPixelFormat;
985 DWORD dwNumTypesCompBuffs;
986 PDDCOMPBUFFERINFO lpCompBuffInfo;
987 HRESULT ddRVal;
988 } DD_GETMOCOMPCOMPBUFFDATA, *PDD_GETMOCOMPCOMPBUFFDATA;
989 typedef DWORD (STDCALL *PDD_MOCOMPCB_GETCOMPBUFFINFO)(PDD_GETMOCOMPCOMPBUFFDATA);
990
991 typedef struct
992 {
993 PDD_DIRECTDRAW_LOCAL lpDD;
994 GUID *lpGuid;
995 DWORD dwWidth;
996 DWORD dwHeight;
997 DDPIXELFORMAT ddPixelFormat;
998 DWORD dwScratchMemAlloc;
999 HRESULT ddRVal;
1000 } DD_GETINTERNALMOCOMPDATA, *PDD_GETINTERNALMOCOMPDATA;
1001 typedef DWORD (STDCALL *PDD_MOCOMPCB_GETINTERNALINFO)(PDD_GETINTERNALMOCOMPDATA);
1002
1003 typedef struct
1004 {
1005 PDD_DIRECTDRAW_LOCAL lpDD;
1006 PDD_MOTIONCOMP_LOCAL lpMoComp;
1007 PDD_SURFACE_LOCAL lpDestSurface;
1008 DWORD dwInputDataSize;
1009 LPVOID lpInputData;
1010 DWORD dwOutputDataSize;
1011 LPVOID lpOutputData;
1012 HRESULT ddRVal;
1013 } DD_BEGINMOCOMPFRAMEDATA, *PDD_BEGINMOCOMPFRAMEDATA;
1014 typedef DWORD (STDCALL *PDD_MOCOMPCB_BEGINFRAME)(PDD_BEGINMOCOMPFRAMEDATA);
1015
1016 typedef struct
1017 {
1018 PDD_DIRECTDRAW_LOCAL lpDD;
1019 PDD_MOTIONCOMP_LOCAL lpMoComp;
1020 LPVOID lpInputData;
1021 DWORD dwInputDataSize;
1022 HRESULT ddRVal;
1023 } DD_ENDMOCOMPFRAMEDATA, *PDD_ENDMOCOMPFRAMEDATA;
1024 typedef DWORD (STDCALL *PDD_MOCOMPCB_ENDFRAME)(PDD_ENDMOCOMPFRAMEDATA);
1025
1026 typedef struct
1027 {
1028 DWORD dwSize;
1029 PDD_SURFACE_LOCAL lpCompSurface;
1030 DWORD dwDataOffset;
1031 DWORD dwDataSize;
1032 LPVOID lpPrivate;
1033 } DDMOCOMPBUFFERINFO, *PDDMOCOMPBUFFERINFO;
1034
1035 typedef struct
1036 {
1037 PDD_DIRECTDRAW_LOCAL lpDD;
1038 PDD_MOTIONCOMP_LOCAL lpMoComp;
1039 DWORD dwNumBuffers;
1040 PDDMOCOMPBUFFERINFO lpBufferInfo;
1041 DWORD dwFunction;
1042 LPVOID lpInputData;
1043 DWORD dwInputDataSize;
1044 LPVOID lpOutputData;
1045 DWORD dwOutputDataSize;
1046 HRESULT ddRVal;
1047 } DD_RENDERMOCOMPDATA, *PDD_RENDERMOCOMPDATA;
1048 typedef DWORD (STDCALL *PDD_MOCOMPCB_RENDER)(PDD_RENDERMOCOMPDATA);
1049
1050 #define DDMCQUERY_READ 1
1051
1052 typedef struct
1053 {
1054 PDD_DIRECTDRAW_LOCAL lpDD;
1055 PDD_MOTIONCOMP_LOCAL lpMoComp;
1056 PDD_SURFACE_LOCAL lpSurface;
1057 DWORD dwFlags;
1058 HRESULT ddRVal;
1059 } DD_QUERYMOCOMPSTATUSDATA, *PDD_QUERYMOCOMPSTATUSDATA;
1060 typedef DWORD (STDCALL *PDD_MOCOMPCB_QUERYSTATUS)(PDD_QUERYMOCOMPSTATUSDATA);
1061
1062 typedef struct
1063 {
1064 PDD_DIRECTDRAW_LOCAL lpDD;
1065 PDD_MOTIONCOMP_LOCAL lpMoComp;
1066 HRESULT ddRVal;
1067 } DD_DESTROYMOCOMPDATA, *PDD_DESTROYMOCOMPDATA;
1068 typedef DWORD (STDCALL *PDD_MOCOMPCB_DESTROY)(PDD_DESTROYMOCOMPDATA);
1069
1070 DEFINE_GUID(GUID_MotionCompCallbacks, 0xB1122B40, 0x5DA5, 0x11D1, 0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E);
1071
1072 typedef struct
1073 {
1074 DWORD dwSize;
1075 DWORD dwFlags;
1076 PDD_MOCOMPCB_GETGUIDS GetMoCompGuids;
1077 PDD_MOCOMPCB_GETFORMATS GetMoCompFormats;
1078 PDD_MOCOMPCB_CREATE CreateMoComp;
1079 PDD_MOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo;
1080 PDD_MOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo;
1081 PDD_MOCOMPCB_BEGINFRAME BeginMoCompFrame;
1082 PDD_MOCOMPCB_ENDFRAME EndMoCompFrame;
1083 PDD_MOCOMPCB_RENDER RenderMoComp;
1084 PDD_MOCOMPCB_QUERYSTATUS QueryMoCompStatus;
1085 PDD_MOCOMPCB_DESTROY DestroyMoComp;
1086 } DD_MOTIONCOMPCALLBACKS;
1087 typedef DD_MOTIONCOMPCALLBACKS *PDD_MOTIONCOMPCALLBACKS;
1088
1089 enum
1090 {
1091 DDHAL_MOCOMP32_GETGUIDS = 1<<0,
1092 DDHAL_MOCOMP32_GETFORMATS = 1<<1,
1093 DDHAL_MOCOMP32_CREATE = 1<<2,
1094 DDHAL_MOCOMP32_GETCOMPBUFFINFO = 1<<3,
1095 DDHAL_MOCOMP32_GETINTERNALINFO = 1<<4,
1096 DDHAL_MOCOMP32_BEGINFRAME = 1<<5,
1097 DDHAL_MOCOMP32_ENDFRAME = 1<<6,
1098 DDHAL_MOCOMP32_RENDER = 1<<7,
1099 DDHAL_MOCOMP32_QUERYSTATUS = 1<<8,
1100 DDHAL_MOCOMP32_DESTROY = 1<<9,
1101 };
1102
1103 /************************************************************************/
1104 /* D3D buffer callbacks */
1105 /************************************************************************/
1106
1107 typedef struct
1108 {
1109 DWORD dwSize;
1110 DWORD dwFlags;
1111 PDD_CANCREATESURFACE CanCreateD3DBuffer;
1112 PDD_CREATESURFACE CreateD3DBuffer;
1113 PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer;
1114 PDD_SURFCB_LOCK LockD3DBuffer;
1115 PDD_SURFCB_UNLOCK UnlockD3DBuffer;
1116 } DD_D3DBUFCALLBACKS, *PDD_D3DBUFCALLBACKS;
1117
1118 /************************************************************************/
1119 /* DdGetDriverInfo callback */
1120 /************************************************************************/
1121
1122 typedef struct
1123 {
1124 // Input:
1125 PVOID dhpdev;
1126 DWORD dwSize;
1127 DWORD dwFlags;
1128 GUID guidInfo;
1129 DWORD dwExpectedSize;
1130 PVOID lpvData;
1131 // Output:
1132 DWORD dwActualSize;
1133 HRESULT ddRVal;
1134 ULONG_PTR dwContext;
1135 } DD_GETDRIVERINFODATA, *PDD_GETDRIVERINFODATA;
1136 typedef DWORD (STDCALL *PDD_GETDRIVERINFO)(PDD_GETDRIVERINFODATA);
1137
1138
1139
1140
1141 /************************************************************************/
1142 /* Driver info structures */
1143 /************************************************************************/
1144
1145 typedef struct
1146 {
1147 DWORD dwSize;
1148 DWORD dwCaps;
1149 DWORD dwCaps2;
1150 DWORD dwCKeyCaps;
1151 DWORD dwFXCaps;
1152 DWORD dwFXAlphaCaps;
1153 DWORD dwPalCaps;
1154 DWORD dwSVCaps;
1155 DWORD dwAlphaBltConstBitDepths;
1156 DWORD dwAlphaBltPixelBitDepths;
1157 DWORD dwAlphaBltSurfaceBitDepths;
1158 DWORD dwAlphaOverlayConstBitDepths;
1159 DWORD dwAlphaOverlayPixelBitDepths;
1160 DWORD dwAlphaOverlaySurfaceBitDepths;
1161 DWORD dwZBufferBitDepths;
1162 DWORD dwVidMemTotal;
1163 DWORD dwVidMemFree;
1164 DWORD dwMaxVisibleOverlays;
1165 DWORD dwCurrVisibleOverlays;
1166 DWORD dwNumFourCCCodes;
1167 DWORD dwAlignBoundarySrc;
1168 DWORD dwAlignSizeSrc;
1169 DWORD dwAlignBoundaryDest;
1170 DWORD dwAlignSizeDest;
1171 DWORD dwAlignStrideAlign;
1172 DWORD dwRops[DD_ROP_SPACE];
1173 DDSCAPS ddsCaps;
1174 DWORD dwMinOverlayStretch;
1175 DWORD dwMaxOverlayStretch;
1176 DWORD dwMinLiveVideoStretch;
1177 DWORD dwMaxLiveVideoStretch;
1178 DWORD dwMinHwCodecStretch;
1179 DWORD dwMaxHwCodecStretch;
1180 DWORD dwReserved1;
1181 DWORD dwReserved2;
1182 DWORD dwReserved3;
1183 DWORD dwSVBCaps;
1184 DWORD dwSVBCKeyCaps;
1185 DWORD dwSVBFXCaps;
1186 DWORD dwSVBRops[DD_ROP_SPACE];
1187 DWORD dwVSBCaps;
1188 DWORD dwVSBCKeyCaps;
1189 DWORD dwVSBFXCaps;
1190 DWORD dwVSBRops[DD_ROP_SPACE];
1191 DWORD dwSSBCaps;
1192 DWORD dwSSBCKeyCaps;
1193 DWORD dwSSBFXCaps;
1194 DWORD dwSSBRops[DD_ROP_SPACE];
1195 DWORD dwMaxVideoPorts;
1196 DWORD dwCurrVideoPorts;
1197 DWORD dwSVBCaps2;
1198 } DDNTCORECAPS, *PDDNTCORECAPS;
1199
1200 typedef struct
1201 {
1202 DWORD dwSize;
1203 VIDEOMEMORYINFO vmiData;
1204 DDNTCORECAPS ddCaps;
1205 PDD_GETDRIVERINFO GetDriverInfo;
1206 DWORD dwFlags;
1207 PVOID lpD3DGlobalDriverData;
1208 PVOID lpD3DHALCallbacks;
1209 PDD_D3DBUFCALLBACKS lpD3DBufCallbacks;
1210 } DD_HALINFO, *PDD_HALINFO;
1211
1212
1213 DEFINE_GUID(GUID_NonLocalVidMemCaps, 0x86C4FA80, 0x8D84, 0x11D0, 0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37);
1214
1215 typedef struct
1216 {
1217 DWORD dwSize;
1218 DWORD dwNLVBCaps;
1219 DWORD dwNLVBCaps2;
1220 DWORD dwNLVBCKeyCaps;
1221 DWORD dwNLVBFXCaps;
1222 DWORD dwNLVBRops[DD_ROP_SPACE];
1223 } DD_NONLOCALVIDMEMCAPS, *PDD_NONLOCALVIDMEMCAPS;
1224
1225 DEFINE_GUID(GUID_DDMoreSurfaceCaps, 0x3B8A0466, 0xF269, 0x11D1, 0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5);
1226
1227 typedef struct
1228 {
1229 DWORD dwSize;
1230 DDSCAPSEX ddsCapsMore;
1231 struct
1232 {
1233 DDSCAPSEX ddsCapsEx;
1234 DDSCAPSEX ddsCapsExAlt;
1235 } ddsExtendedHeapRestrictions[1];
1236 } DD_MORESURFACECAPS, *PDD_MORESURFACECAPS;
1237
1238
1239 /*********************************************************/
1240 /* Kernel Callbacks */
1241 /*********************************************************/
1242 typedef struct _DD_SYNCSURFACEDATA
1243 {
1244 PDD_DIRECTDRAW_LOCAL lpDD;
1245 PDD_SURFACE_LOCAL lpDDSurface;
1246 DWORD dwSurfaceOffset;
1247 ULONG_PTR fpLockPtr;
1248 LONG lPitch;
1249 DWORD dwOverlayOffset;
1250 ULONG dwDriverReserved1;
1251 ULONG dwDriverReserved2;
1252 ULONG dwDriverReserved3;
1253 ULONG dwDriverReserved4;
1254 HRESULT ddRVal;
1255 } DD_SYNCSURFACEDATA, *PDD_SYNCSURFACEDATA;
1256 typedef DWORD (STDCALL *PDD_KERNELCB_SYNCSURFACE)(PDD_SYNCSURFACEDATA);
1257
1258 typedef struct _DD_SYNCVIDEOPORTDATA
1259 {
1260 PDD_DIRECTDRAW_LOCAL lpDD;
1261 PDD_VIDEOPORT_LOCAL lpVideoPort;
1262 DWORD dwOriginOffset;
1263 DWORD dwHeight;
1264 DWORD dwVBIHeight;
1265 ULONG dwDriverReserved1;
1266 ULONG dwDriverReserved2;
1267 ULONG dwDriverReserved3;
1268 HRESULT ddRVal;
1269 } DD_SYNCVIDEOPORTDATA, *PDD_SYNCVIDEOPORTDATA;
1270 typedef DWORD (STDCALL *PDD_KERNELCB_SYNCVIDEOPORT)(PDD_SYNCVIDEOPORTDATA);
1271
1272
1273
1274
1275 #ifdef __cplusplus
1276 } /* extern "C" */
1277 #endif
1278
1279 #endif /* __DD_INCLUDED__ */