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