2 * DirectDraw NT driver interface
5 #ifndef __DD_INCLUDED__
6 #define __DD_INCLUDED__
8 #ifndef _NO_DDRAWINT_NO_COM
12 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
16 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
20 #include <ddk/ddrawi.h> /* FIXME: We shouldn't include this header. */
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 */
38 /************************************************************************/
39 /* Video memory info structures */
40 /************************************************************************/
58 } VIDEOMEMORY
, *PVIDEOMEMORY
;
65 DWORD dwDisplayHeight
;
67 DDPIXELFORMAT ddpfDisplay
;
68 DWORD dwOffscreenAlign
;
75 typedef VIDEOMEMORYINFO
*LPVIDEOMEMORYINFO
;
77 /************************************************************************/
78 /* DDI representation of the DirectDraw object */
79 /************************************************************************/
84 ULONG_PTR dwReserved1
;
85 ULONG_PTR dwReserved2
;
86 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
87 } DD_DIRECTDRAW_GLOBAL
, *PDD_DIRECTDRAW_GLOBAL
;
91 PDD_DIRECTDRAW_GLOBAL lpGbl
;
92 } DD_DIRECTDRAW_LOCAL
, *PDD_DIRECTDRAW_LOCAL
;
94 /************************************************************************/
95 /* DDI representation of the DirectDrawSurface object */
96 /************************************************************************/
108 PVIDEOMEMORY lpVidMemHeap
;
123 ULONG_PTR dwReserved1
;
124 DDPIXELFORMAT ddpfSurface
;
125 FLATPTR fpHeapOffset
;
126 HANDLE hCreatorProcess
;
127 } DD_SURFACE_GLOBAL
, *PDD_SURFACE_GLOBAL
;
132 PDD_VIDEOPORT_LOCAL lpVideoPort
;
133 DWORD dwOverlayFlags
;
135 DWORD dwSurfaceHandle
;
136 } DD_SURFACE_MORE
, *PDD_SURFACE_MORE
;
138 typedef struct _DD_ATTACHLIST
*PDD_ATTACHLIST
;
142 PDD_SURFACE_GLOBAL lpGbl
;
145 ULONG_PTR dwReserved1
;
148 DDCOLORKEY ddckCKSrcOverlay
;
149 DDCOLORKEY ddckCKSrcBlt
;
153 DDCOLORKEY ddckCKDestOverlay
;
154 DDCOLORKEY ddckCKDestBlt
;
156 PDD_SURFACE_MORE lpSurfMore
;
157 PDD_ATTACHLIST lpAttachList
;
158 PDD_ATTACHLIST lpAttachListFrom
;
160 } DD_SURFACE_LOCAL
, *PDD_SURFACE_LOCAL
;
162 typedef struct _DD_ATTACHLIST
164 PDD_ATTACHLIST lpLink
;
165 PDD_SURFACE_LOCAL lpAttached
;
170 PDD_SURFACE_LOCAL lpLcl
;
171 } DD_SURFACE_INT
, *PDD_SURFACE_INT
;
173 /************************************************************************/
174 /* DDI representation of the DirectDrawPalette object */
175 /************************************************************************/
180 } DD_PALETTE_GLOBAL
, *PDD_PALETTE_GLOBAL
;
182 /************************************************************************/
183 /* DDI representation of the DirectDrawVideo object */
184 /************************************************************************/
188 PDD_DIRECTDRAW_LOCAL lpDD
;
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
;
201 /************************************************************************/
202 /* IDirectDrawSurface callbacks */
203 /************************************************************************/
207 PDD_DIRECTDRAW_GLOBAL lpDD
;
208 PDD_SURFACE_LOCAL lpDDSurface
;
216 } DD_LOCKDATA
, *PDD_LOCKDATA
;
217 typedef DWORD (STDCALL
*PDD_SURFCB_LOCK
)(PDD_LOCKDATA
);
221 PDD_DIRECTDRAW_GLOBAL lpDD
;
222 PDD_SURFACE_LOCAL lpDDSurface
;
225 } DD_UNLOCKDATA
, *PDD_UNLOCKDATA
;
226 typedef DWORD (STDCALL
*PDD_SURFCB_UNLOCK
)(PDD_UNLOCKDATA
);
228 #define DDABLT_SRCOVERDEST 0x00000001
229 #define DDBLT_AFLAGS 0x80000000
233 BYTE blue
, green
, red
, alpha
;
238 PDD_DIRECTDRAW_GLOBAL lpDD
;
239 PDD_SURFACE_LOCAL lpDDDestSurface
;
241 PDD_SURFACE_LOCAL lpDDSrcSurface
;
254 DDARGB ddargbScaleFactors
;
255 } DD_BLTDATA
, *PDD_BLTDATA
;
256 typedef DWORD (STDCALL
*PDD_SURFCB_BLT
)(PDD_BLTDATA
);
260 PDD_DIRECTDRAW_GLOBAL lpDD
;
261 PDD_SURFACE_LOCAL lpDDDestSurface
;
263 PDD_SURFACE_LOCAL lpDDSrcSurface
;
266 DDOVERLAYFX overlayFX
;
269 } DD_UPDATEOVERLAYDATA
, *PDD_UPDATEOVERLAYDATA
;
270 typedef DWORD (STDCALL
*PDD_SURFCB_UPDATEOVERLAY
)(PDD_UPDATEOVERLAYDATA
);
274 PDD_DIRECTDRAW_GLOBAL lpDD
;
275 PDD_SURFACE_LOCAL lpDDSrcSurface
;
276 PDD_SURFACE_LOCAL lpDDDestSurface
;
280 PVOID SetOverlayPosition
;
281 } DD_SETOVERLAYPOSITIONDATA
, *PDD_SETOVERLAYPOSITIONDATA
;
282 typedef DWORD (STDCALL
*PDD_SURFCB_SETOVERLAYPOSITION
)(PDD_SETOVERLAYPOSITIONDATA
);
286 PDD_DIRECTDRAW_GLOBAL lpDD
;
287 PDD_SURFACE_LOCAL lpDDSurface
;
288 PDD_PALETTE_GLOBAL lpDDPalette
;
292 } DD_SETPALETTEDATA
, *PDD_SETPALETTEDATA
;
293 typedef DWORD (STDCALL
*PDD_SURFCB_SETPALETTE
)(PDD_SETPALETTEDATA
);
297 PDD_DIRECTDRAW_GLOBAL lpDD
;
298 PDD_SURFACE_LOCAL lpSurfCurr
;
299 PDD_SURFACE_LOCAL lpSurfTarg
;
303 PDD_SURFACE_LOCAL lpSurfCurrLeft
;
304 PDD_SURFACE_LOCAL lpSurfTargLeft
;
305 } DD_FLIPDATA
, *PDD_FLIPDATA
;
306 typedef DWORD (STDCALL
*PDD_SURFCB_FLIP
)(PDD_FLIPDATA
);
310 PDD_DIRECTDRAW_GLOBAL lpDD
;
311 PDD_SURFACE_LOCAL lpDDSurface
;
313 PVOID DestroySurface
;
314 } DD_DESTROYSURFACEDATA
, *PDD_DESTROYSURFACEDATA
;
315 typedef DWORD (STDCALL
*PDD_SURFCB_DESTROYSURFACE
)(PDD_DESTROYSURFACEDATA
);
319 PDD_DIRECTDRAW_GLOBAL lpDD
;
320 PDD_SURFACE_LOCAL lpDDSurface
;
323 } DD_SETCLIPLISTDATA
, *PDD_SETCLIPLISTDATA
;
324 typedef DWORD (STDCALL
*PDD_SURFCB_SETCLIPLIST
)(PDD_SETCLIPLISTDATA
);
328 PDD_DIRECTDRAW_GLOBAL lpDD
;
329 PDD_SURFACE_LOCAL lpDDSurface
;
330 PDD_SURFACE_LOCAL lpSurfAttached
;
332 PVOID AddAttachedSurface
;
333 } DD_ADDATTACHEDSURFACEDATA
, *PDD_ADDATTACHEDSURFACEDATA
;
334 typedef DWORD (STDCALL
*PDD_SURFCB_ADDATTACHEDSURFACE
)(PDD_ADDATTACHEDSURFACEDATA
);
338 PDD_DIRECTDRAW_GLOBAL lpDD
;
339 PDD_SURFACE_LOCAL lpDDSurface
;
344 } DD_SETCOLORKEYDATA
, *PDD_SETCOLORKEYDATA
;
345 typedef DWORD (STDCALL
*PDD_SURFCB_SETCOLORKEY
)(PDD_SETCOLORKEYDATA
);
349 PDD_DIRECTDRAW_GLOBAL lpDD
;
350 PDD_SURFACE_LOCAL lpDDSurface
;
354 } DD_GETBLTSTATUSDATA
, *PDD_GETBLTSTATUSDATA
;
355 typedef DWORD (STDCALL
*PDD_SURFCB_GETBLTSTATUS
)(PDD_GETBLTSTATUSDATA
);
359 PDD_DIRECTDRAW_GLOBAL lpDD
;
360 PDD_SURFACE_LOCAL lpDDSurface
;
364 } DD_GETFLIPSTATUSDATA
, *PDD_GETFLIPSTATUSDATA
;
365 typedef DWORD (STDCALL
*PDD_SURFCB_GETFLIPSTATUS
)(PDD_GETFLIPSTATUSDATA
);
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
;
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
;
384 PDD_SURFCB_SETPALETTE SetPalette
;
385 } DD_SURFACECALLBACKS
, *PDD_SURFACECALLBACKS
;
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,
404 /************************************************************************/
405 /* IDirectDraw callbacks */
406 /************************************************************************/
410 PDD_DIRECTDRAW_GLOBAL lpDD
;
411 DDSURFACEDESC
*lpDDSurfaceDesc
;
412 PDD_SURFACE_LOCAL
*lplpSList
;
416 } DD_CREATESURFACEDATA
, *PDD_CREATESURFACEDATA
;
417 typedef DWORD (STDCALL
*PDD_CREATESURFACE
)(PDD_CREATESURFACEDATA
);
421 PDD_SURFACE_LOCAL lpDDSurface
;
426 } DD_DRVSETCOLORKEYDATA
, *PDD_DRVSETCOLORKEYDATA
;
427 typedef DWORD (STDCALL
*PDD_SETCOLORKEY
)(PDD_DRVSETCOLORKEYDATA
);
429 #define DDWAITVB_I_TESTVB 0x80000006
433 PDD_DIRECTDRAW_GLOBAL lpDD
;
438 PVOID WaitForVerticalBlank
;
439 } DD_WAITFORVERTICALBLANKDATA
, *PDD_WAITFORVERTICALBLANKDATA
;
440 typedef DWORD (STDCALL
*PDD_WAITFORVERTICALBLANK
)(PDD_WAITFORVERTICALBLANKDATA
);
444 PDD_DIRECTDRAW_GLOBAL lpDD
;
445 DDSURFACEDESC
*lpDDSurfaceDesc
;
446 DWORD bIsDifferentPixelFormat
;
448 PVOID CanCreateSurface
;
449 } DD_CANCREATESURFACEDATA
, *PDD_CANCREATESURFACEDATA
;
450 typedef DWORD (STDCALL
*PDD_CANCREATESURFACE
)(PDD_CANCREATESURFACEDATA
);
454 PDD_DIRECTDRAW_GLOBAL lpDD
;
455 PDD_PALETTE_GLOBAL lpDDPalette
;
456 LPPALETTEENTRY lpColorTable
;
460 } DD_CREATEPALETTEDATA
, *PDD_CREATEPALETTEDATA
;
461 typedef DWORD (STDCALL
*PDD_CREATEPALETTE
)(PDD_CREATEPALETTEDATA
);
465 PDD_DIRECTDRAW_GLOBAL lpDD
;
469 } DD_GETSCANLINEDATA
, *PDD_GETSCANLINEDATA
;
470 typedef DWORD (STDCALL
*PDD_GETSCANLINE
)(PDD_GETSCANLINEDATA
);
474 PDD_DIRECTDRAW_GLOBAL lpDD
;
479 } DD_MAPMEMORYDATA
, *PDD_MAPMEMORYDATA
;
480 typedef DWORD (STDCALL
*PDD_MAPMEMORY
)(PDD_MAPMEMORYDATA
);
484 typedef DWORD (APIENTRY
*PDD_DESTROYDRIVER
)(PDD_DESTROYDRIVERDATA
);
485 typedef DWORD (APIENTRY
*PDD_SETMODE
)(PDD_SETMODEDATA
);
487 typedef struct DD_CALLBACKS
491 PDD_DESTROYDRIVER DestroyDriver
;
492 PDD_CREATESURFACE CreateSurface
;
493 PDD_SETCOLORKEY SetColorKey
;
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
;
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
516 PDD_DIRECTDRAW_GLOBAL lpDD
;
521 PVOID GetAvailDriverMemory
;
522 } DD_GETAVAILDRIVERMEMORYDATA
, *PDD_GETAVAILDRIVERMEMORYDATA
;
523 typedef DWORD (STDCALL
*PDD_GETAVAILDRIVERMEMORY
)(PDD_GETAVAILDRIVERMEMORYDATA
);
525 DEFINE_GUID(GUID_MiscellaneousCallbacks
, 0xEFD60CC0, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
531 PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
532 } DD_MISCELLANEOUSCALLBACKS
, *PDD_MISCELLANEOUSCALLBACKS
;
536 DDHAL_MISCCB32_GETAVAILDRIVERMEMORY
= 1<<0,
539 typedef DWORD (STDCALL
*PDD_ALPHABLT
)(PDD_BLTDATA
);
544 PDD_DIRECTDRAW_LOCAL lpDDLcl
;
545 PDD_SURFACE_LOCAL lpDDSLcl
;
547 } DD_CREATESURFACEEXDATA
, *PDD_CREATESURFACEEXDATA
;
548 typedef DWORD (STDCALL
*PDD_CREATESURFACEEX
)(PDD_CREATESURFACEEXDATA
);
555 PDD_DIRECTDRAW_GLOBAL lpDD
;
556 DWORD_PTR dwhContext
;
561 } DD_GETDRIVERSTATEDATA
, *PDD_GETDRIVERSTATEDATA
;
562 typedef DWORD (STDCALL
*PDD_GETDRIVERSTATE
)(PDD_GETDRIVERSTATEDATA
);
567 PDD_DIRECTDRAW_LOCAL pDDLcl
;
569 } DD_DESTROYDDLOCALDATA
, *PDD_DESTROYDDLOCALDATA
;
570 typedef DWORD (STDCALL
*PDD_DESTROYDDLOCAL
)(PDD_DESTROYDDLOCALDATA
);
572 DEFINE_GUID(GUID_Miscellaneous2Callbacks
, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
578 PDD_ALPHABLT AlphaBlt
;
579 PDD_CREATESURFACEEX CreateSurfaceEx
;
580 PDD_GETDRIVERSTATE GetDriverState
;
581 PDD_DESTROYDDLOCAL DestroyDDLocal
;
582 } DD_MISCELLANEOUS2CALLBACKS
, *PDD_MISCELLANEOUS2CALLBACKS
;
586 DDHAL_MISC2CB32_ALPHABLT
= 1<<0,
587 DDHAL_MISC2CB32_CREATESURFACEEX
= 1<<1,
588 DDHAL_MISC2CB32_GETDRIVERSTATE
= 1<<2,
589 DDHAL_MISC2CB32_DESTROYDDLOCAL
= 1<<3,
594 PDD_DIRECTDRAW_GLOBAL lpDD
;
595 PDD_SURFACE_LOCAL lpDDSurface
;
597 PVOID FreeDriverMemory
;
598 } DD_FREEDRIVERMEMORYDATA
, *PDD_FREEDRIVERMEMORYDATA
;
599 typedef DWORD (STDCALL
*PDD_FREEDRIVERMEMORY
)(PDD_FREEDRIVERMEMORYDATA
);
603 PDD_DIRECTDRAW_GLOBAL lpDD
;
607 PVOID SetExclusiveMode
;
608 } DD_SETEXCLUSIVEMODEDATA
, *PDD_SETEXCLUSIVEMODEDATA
;
609 typedef DWORD (STDCALL
*PDD_SETEXCLUSIVEMODE
)(PDD_SETEXCLUSIVEMODEDATA
);
613 PDD_DIRECTDRAW_GLOBAL lpDD
;
617 PVOID FlipToGDISurface
;
618 } DD_FLIPTOGDISURFACEDATA
, *PDD_FLIPTOGDISURFACEDATA
;
619 typedef DWORD (STDCALL
*PDD_FLIPTOGDISURFACE
)(PDD_FLIPTOGDISURFACEDATA
);
621 DEFINE_GUID(GUID_NTCallbacks
, 0x6FE9ECDE, 0xDF89, 0x11D1, 0x9D, 0xB0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xBA);
627 PDD_FREEDRIVERMEMORY FreeDriverMemory
;
628 PDD_SETEXCLUSIVEMODE SetExclusiveMode
;
629 PDD_FLIPTOGDISURFACE FlipToGDISurface
;
630 } DD_NTCALLBACKS
, *PDD_NTCALLBACKS
;
634 DDHAL_NTCB32_FREEDRIVERMEMORY
= 1<<0,
635 DDHAL_NTCB32_SETEXCLUSIVEMODE
= 1<<1,
636 DDHAL_NTCB32_FLIPTOGDISURFACE
= 1<<2,
639 /************************************************************************/
640 /* IDirectDrawPalette callbacks */
641 /************************************************************************/
645 PDD_DIRECTDRAW_GLOBAL lpDD
;
646 PDD_PALETTE_GLOBAL lpDDPalette
;
648 PVOID DestroyPalette
;
649 } DD_DESTROYPALETTEDATA
, *PDD_DESTROYPALETTEDATA
;
650 typedef DWORD (STDCALL
*PDD_PALCB_DESTROYPALETTE
)(PDD_DESTROYPALETTEDATA
);
654 PDD_DIRECTDRAW_GLOBAL lpDD
;
655 PDD_PALETTE_GLOBAL lpDDPalette
;
658 LPPALETTEENTRY lpEntries
;
661 } DD_SETENTRIESDATA
, *PDD_SETENTRIESDATA
;
662 typedef DWORD (STDCALL
*PDD_PALCB_SETENTRIES
)(PDD_SETENTRIESDATA
);
668 PDD_PALCB_DESTROYPALETTE DestroyPalette
;
669 PDD_PALCB_SETENTRIES SetEntries
;
670 } DD_PALETTECALLBACKS
, *PDD_PALETTECALLBACKS
;
674 DDHAL_PALCB32_DESTROYPALETTE
= 1<<0,
675 DDHAL_PALCB32_SETENTRIES
= 1<<1,
678 /************************************************************************/
679 /* IDirectDrawVideoport callbacks */
680 /************************************************************************/
684 PDD_DIRECTDRAW_LOCAL lpDD
;
685 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
687 PVOID CanCreateVideoPort
;
688 } DD_CANCREATEVPORTDATA
, *PDD_CANCREATEVPORTDATA
;
689 typedef DWORD (STDCALL
*PDD_VPORTCB_CANCREATEVIDEOPORT
)(PDD_CANCREATEVPORTDATA
);
693 PDD_DIRECTDRAW_LOCAL lpDD
;
694 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
695 PDD_VIDEOPORT_LOCAL lpVideoPort
;
697 PVOID CreateVideoPort
;
698 } DD_CREATEVPORTDATA
, *PDD_CREATEVPORTDATA
;
699 typedef DWORD (STDCALL
*PDD_VPORTCB_CREATEVIDEOPORT
)(PDD_CREATEVPORTDATA
);
703 PDD_DIRECTDRAW_LOCAL lpDD
;
704 PDD_VIDEOPORT_LOCAL lpVideoPort
;
705 PDD_SURFACE_LOCAL lpSurfCurr
;
706 PDD_SURFACE_LOCAL lpSurfTarg
;
709 } DD_FLIPVPORTDATA
, *PDD_FLIPVPORTDATA
;
710 typedef DWORD (STDCALL
*PDD_VPORTCB_FLIP
)(PDD_FLIPVPORTDATA
);
714 PDD_DIRECTDRAW_LOCAL lpDD
;
715 PDD_VIDEOPORT_LOCAL lpVideoPort
;
716 LPDDPIXELFORMAT lpddpfFormat
;
720 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
722 PVOID GetVideoPortBandwidth
;
723 } DD_GETVPORTBANDWIDTHDATA
, *PDD_GETVPORTBANDWIDTHDATA
;
724 typedef DWORD (STDCALL
*PDD_VPORTCB_GETBANDWIDTH
)(PDD_GETVPORTBANDWIDTHDATA
);
728 PDD_DIRECTDRAW_LOCAL lpDD
;
729 PDD_VIDEOPORT_LOCAL lpVideoPort
;
731 LPDDPIXELFORMAT lpddpfFormat
;
734 PVOID GetVideoPortInputFormats
;
735 } DD_GETVPORTINPUTFORMATDATA
, *PDD_GETVPORTINPUTFORMATDATA
;
736 typedef DWORD (STDCALL
*PDD_VPORTCB_GETINPUTFORMATS
)(PDD_GETVPORTINPUTFORMATDATA
);
740 PDD_DIRECTDRAW_LOCAL lpDD
;
741 PDD_VIDEOPORT_LOCAL lpVideoPort
;
743 LPDDPIXELFORMAT lpddpfInputFormat
;
744 LPDDPIXELFORMAT lpddpfOutputFormats
;
747 PVOID GetVideoPortInputFormats
;
748 } DD_GETVPORTOUTPUTFORMATDATA
, *PDD_GETVPORTOUTPUTFORMATDATA
;
749 typedef DWORD (STDCALL
*PDD_VPORTCB_GETOUTPUTFORMATS
)(PDD_GETVPORTOUTPUTFORMATDATA
);
753 PDD_DIRECTDRAW_LOCAL lpDD
;
754 PDD_VIDEOPORT_LOCAL lpVideoPort
;
757 PVOID GetVideoPortField
;
758 } DD_GETVPORTFIELDDATA
, *PDD_GETVPORTFIELDDATA
;
759 typedef DWORD (STDCALL
*PDD_VPORTCB_GETFIELD
)(PDD_GETVPORTFIELDDATA
);
763 PDD_DIRECTDRAW_LOCAL lpDD
;
764 PDD_VIDEOPORT_LOCAL lpVideoPort
;
767 PVOID GetVideoPortLine
;
768 } DD_GETVPORTLINEDATA
, *PDD_GETVPORTLINEDATA
;
769 typedef DWORD (STDCALL
*PDD_VPORTCB_GETLINE
)(PDD_GETVPORTLINEDATA
);
773 PDD_DIRECTDRAW_LOCAL lpDD
;
775 LPDDVIDEOPORTCONNECT lpConnect
;
778 PVOID GetVideoPortConnectInfo
;
779 } DD_GETVPORTCONNECTDATA
, *PDD_GETVPORTCONNECTDATA
;
780 typedef DWORD (STDCALL
*PDD_VPORTCB_GETVPORTCONNECT
)(PDD_GETVPORTCONNECTDATA
);
784 PDD_DIRECTDRAW_LOCAL lpDD
;
785 PDD_VIDEOPORT_LOCAL lpVideoPort
;
787 PVOID DestroyVideoPort
;
788 } DD_DESTROYVPORTDATA
, *PDD_DESTROYVPORTDATA
;
789 typedef DWORD (STDCALL
*PDD_VPORTCB_DESTROYVPORT
)(PDD_DESTROYVPORTDATA
);
793 PDD_DIRECTDRAW_LOCAL lpDD
;
796 PVOID GetVideoPortFlipStatus
;
797 } DD_GETVPORTFLIPSTATUSDATA
, *PDD_GETVPORTFLIPSTATUSDATA
;
798 typedef DWORD (STDCALL
*PDD_VPORTCB_GETFLIPSTATUS
)(PDD_GETVPORTFLIPSTATUSDATA
);
800 #define DDRAWI_VPORTSTART 1
801 #define DDRAWI_VPORTSTOP 2
802 #define DDRAWI_VPORTUPDATE 3
806 PDD_DIRECTDRAW_LOCAL lpDD
;
807 PDD_VIDEOPORT_LOCAL lpVideoPort
;
808 PDD_SURFACE_INT
*lplpDDSurface
;
809 PDD_SURFACE_INT
*lplpDDVBISurface
;
810 LPDDVIDEOPORTINFO lpVideoInfo
;
813 DWORD dwNumVBIAutoflip
;
815 PVOID UpdateVideoPort
;
816 } DD_UPDATEVPORTDATA
, *PDD_UPDATEVPORTDATA
;
817 typedef DWORD (STDCALL
*PDD_VPORTCB_UPDATE
)(PDD_UPDATEVPORTDATA
);
821 PDD_DIRECTDRAW_LOCAL lpDD
;
822 PDD_VIDEOPORT_LOCAL lpVideoPort
;
827 PVOID UpdateVideoPort
;
828 } DD_WAITFORVPORTSYNCDATA
, *PDD_WAITFORVPORTSYNCDATA
;
829 typedef DWORD (STDCALL
*PDD_VPORTCB_WAITFORSYNC
)(PDD_WAITFORVPORTSYNCDATA
);
833 PDD_DIRECTDRAW_LOCAL lpDD
;
834 PDD_VIDEOPORT_LOCAL lpVideoPort
;
837 PVOID GetVideoSignalStatus
;
838 } DD_GETVPORTSIGNALDATA
, *PDD_GETVPORTSIGNALDATA
;
839 typedef DWORD (STDCALL
*PDD_VPORTCB_GETSIGNALSTATUS
)(PDD_GETVPORTSIGNALDATA
);
841 #define DDRAWI_VPORTGETCOLOR 1
842 #define DDRAWI_VPORTSETCOLOR 2
846 PDD_DIRECTDRAW_LOCAL lpDD
;
847 PDD_VIDEOPORT_LOCAL lpVideoPort
;
849 LPDDCOLORCONTROL lpColorData
;
852 } DD_VPORTCOLORDATA
, *PDD_VPORTCOLORDATA
;
853 typedef DWORD (STDCALL
*PDD_VPORTCB_COLORCONTROL
)(PDD_VPORTCOLORDATA
);
855 DEFINE_GUID(GUID_VideoPortCallbacks
, 0xEFD60CC1, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
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
;
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
;
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,
898 /************************************************************************/
899 /* IDirectDrawColorControl callbacks */
900 /************************************************************************/
902 #define DDRAWI_GETCOLOR 1
903 #define DDRAWI_SETCOLOR 2
907 PDD_DIRECTDRAW_GLOBAL lpDD
;
908 PDD_SURFACE_LOCAL lpDDSurface
;
909 LPDDCOLORCONTROL lpColorData
;
913 } DD_COLORCONTROLDATA
, *PDD_COLORCONTROLDATA
;
914 typedef DWORD (STDCALL
*PDD_COLORCB_COLORCONTROL
)(PDD_COLORCONTROLDATA
);
916 DEFINE_GUID(GUID_ColorControlCallbacks
, 0xEFD60CC2, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
922 PDD_COLORCB_COLORCONTROL ColorControl
;
923 } DD_COLORCONTROLCALLBACKS
, *PDD_COLORCONTROLCALLBACKS
;
927 DDHAL_COLOR_COLORCONTROL
= 1<<0,
930 /************************************************************************/
931 /* IDirectDrawVideo callbacks */
932 /************************************************************************/
936 PDD_DIRECTDRAW_LOCAL lpDD
;
940 } DD_GETMOCOMPGUIDSDATA
, *PDD_GETMOCOMPGUIDSDATA
;
941 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETGUIDS
)(PDD_GETMOCOMPGUIDSDATA
);
945 PDD_DIRECTDRAW_LOCAL lpDD
;
948 LPDDPIXELFORMAT lpFormats
;
950 } DD_GETMOCOMPFORMATSDATA
, *PDD_GETMOCOMPFORMATSDATA
;
951 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETFORMATS
)(PDD_GETMOCOMPFORMATSDATA
);
955 PDD_DIRECTDRAW_LOCAL lpDD
;
956 PDD_MOTIONCOMP_LOCAL lpMoComp
;
959 DWORD dwUncompHeight
;
960 DDPIXELFORMAT ddUncompPixelFormat
;
964 } DD_CREATEMOCOMPDATA
, *PDD_CREATEMOCOMPDATA
;
965 typedef DWORD (STDCALL
*PDD_MOCOMPCB_CREATE
)(PDD_CREATEMOCOMPDATA
);
970 DWORD dwNumCompBuffers
;
971 DWORD dwWidthToCreate
;
972 DWORD dwHeightToCreate
;
973 DWORD dwBytesToAllocate
;
975 DDPIXELFORMAT ddPixelFormat
;
976 } DDCOMPBUFFERINFO
, *PDDCOMPBUFFERINFO
;
980 PDD_DIRECTDRAW_LOCAL lpDD
;
984 DDPIXELFORMAT ddPixelFormat
;
985 DWORD dwNumTypesCompBuffs
;
986 PDDCOMPBUFFERINFO lpCompBuffInfo
;
988 } DD_GETMOCOMPCOMPBUFFDATA
, *PDD_GETMOCOMPCOMPBUFFDATA
;
989 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETCOMPBUFFINFO
)(PDD_GETMOCOMPCOMPBUFFDATA
);
993 PDD_DIRECTDRAW_LOCAL lpDD
;
997 DDPIXELFORMAT ddPixelFormat
;
998 DWORD dwScratchMemAlloc
;
1000 } DD_GETINTERNALMOCOMPDATA
, *PDD_GETINTERNALMOCOMPDATA
;
1001 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETINTERNALINFO
)(PDD_GETINTERNALMOCOMPDATA
);
1005 PDD_DIRECTDRAW_LOCAL lpDD
;
1006 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1007 PDD_SURFACE_LOCAL lpDestSurface
;
1008 DWORD dwInputDataSize
;
1010 DWORD dwOutputDataSize
;
1011 LPVOID lpOutputData
;
1013 } DD_BEGINMOCOMPFRAMEDATA
, *PDD_BEGINMOCOMPFRAMEDATA
;
1014 typedef DWORD (STDCALL
*PDD_MOCOMPCB_BEGINFRAME
)(PDD_BEGINMOCOMPFRAMEDATA
);
1018 PDD_DIRECTDRAW_LOCAL lpDD
;
1019 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1021 DWORD dwInputDataSize
;
1023 } DD_ENDMOCOMPFRAMEDATA
, *PDD_ENDMOCOMPFRAMEDATA
;
1024 typedef DWORD (STDCALL
*PDD_MOCOMPCB_ENDFRAME
)(PDD_ENDMOCOMPFRAMEDATA
);
1029 PDD_SURFACE_LOCAL lpCompSurface
;
1033 } DDMOCOMPBUFFERINFO
, *PDDMOCOMPBUFFERINFO
;
1037 PDD_DIRECTDRAW_LOCAL lpDD
;
1038 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1040 PDDMOCOMPBUFFERINFO lpBufferInfo
;
1043 DWORD dwInputDataSize
;
1044 LPVOID lpOutputData
;
1045 DWORD dwOutputDataSize
;
1047 } DD_RENDERMOCOMPDATA
, *PDD_RENDERMOCOMPDATA
;
1048 typedef DWORD (STDCALL
*PDD_MOCOMPCB_RENDER
)(PDD_RENDERMOCOMPDATA
);
1050 #define DDMCQUERY_READ 1
1054 PDD_DIRECTDRAW_LOCAL lpDD
;
1055 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1056 PDD_SURFACE_LOCAL lpSurface
;
1059 } DD_QUERYMOCOMPSTATUSDATA
, *PDD_QUERYMOCOMPSTATUSDATA
;
1060 typedef DWORD (STDCALL
*PDD_MOCOMPCB_QUERYSTATUS
)(PDD_QUERYMOCOMPSTATUSDATA
);
1064 PDD_DIRECTDRAW_LOCAL lpDD
;
1065 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1067 } DD_DESTROYMOCOMPDATA
, *PDD_DESTROYMOCOMPDATA
;
1068 typedef DWORD (STDCALL
*PDD_MOCOMPCB_DESTROY
)(PDD_DESTROYMOCOMPDATA
);
1070 DEFINE_GUID(GUID_MotionCompCallbacks
, 0xB1122B40, 0x5DA5, 0x11D1, 0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E);
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
;
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,
1103 /************************************************************************/
1104 /* D3D buffer callbacks */
1105 /************************************************************************/
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
;
1118 /************************************************************************/
1119 /* DdGetDriverInfo callback */
1120 /************************************************************************/
1129 DWORD dwExpectedSize
;
1134 ULONG_PTR dwContext
;
1135 } DD_GETDRIVERINFODATA
, *PDD_GETDRIVERINFODATA
;
1136 typedef DWORD (STDCALL
*PDD_GETDRIVERINFO
)(PDD_GETDRIVERINFODATA
);
1141 /************************************************************************/
1142 /* Driver info structures */
1143 /************************************************************************/
1152 DWORD dwFXAlphaCaps
;
1155 DWORD dwAlphaBltConstBitDepths
;
1156 DWORD dwAlphaBltPixelBitDepths
;
1157 DWORD dwAlphaBltSurfaceBitDepths
;
1158 DWORD dwAlphaOverlayConstBitDepths
;
1159 DWORD dwAlphaOverlayPixelBitDepths
;
1160 DWORD dwAlphaOverlaySurfaceBitDepths
;
1161 DWORD dwZBufferBitDepths
;
1162 DWORD dwVidMemTotal
;
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
];
1174 DWORD dwMinOverlayStretch
;
1175 DWORD dwMaxOverlayStretch
;
1176 DWORD dwMinLiveVideoStretch
;
1177 DWORD dwMaxLiveVideoStretch
;
1178 DWORD dwMinHwCodecStretch
;
1179 DWORD dwMaxHwCodecStretch
;
1184 DWORD dwSVBCKeyCaps
;
1186 DWORD dwSVBRops
[DD_ROP_SPACE
];
1188 DWORD dwVSBCKeyCaps
;
1190 DWORD dwVSBRops
[DD_ROP_SPACE
];
1192 DWORD dwSSBCKeyCaps
;
1194 DWORD dwSSBRops
[DD_ROP_SPACE
];
1195 DWORD dwMaxVideoPorts
;
1196 DWORD dwCurrVideoPorts
;
1198 } DDNTCORECAPS
, *PDDNTCORECAPS
;
1203 VIDEOMEMORYINFO vmiData
;
1204 DDNTCORECAPS ddCaps
;
1205 PDD_GETDRIVERINFO GetDriverInfo
;
1207 PVOID lpD3DGlobalDriverData
;
1208 PVOID lpD3DHALCallbacks
;
1209 PDD_D3DBUFCALLBACKS lpD3DBufCallbacks
;
1210 } DD_HALINFO
, *PDD_HALINFO
;
1213 DEFINE_GUID(GUID_NonLocalVidMemCaps
, 0x86C4FA80, 0x8D84, 0x11D0, 0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37);
1220 DWORD dwNLVBCKeyCaps
;
1222 DWORD dwNLVBRops
[DD_ROP_SPACE
];
1223 } DD_NONLOCALVIDMEMCAPS
, *PDD_NONLOCALVIDMEMCAPS
;
1225 DEFINE_GUID(GUID_DDMoreSurfaceCaps
, 0x3B8A0466, 0xF269, 0x11D1, 0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5);
1230 DDSCAPSEX ddsCapsMore
;
1233 DDSCAPSEX ddsCapsEx
;
1234 DDSCAPSEX ddsCapsExAlt
;
1235 } ddsExtendedHeapRestrictions
[1];
1236 } DD_MORESURFACECAPS
, *PDD_MORESURFACECAPS
;
1239 /*********************************************************/
1240 /* Kernel Callbacks */
1241 /*********************************************************/
1242 typedef struct _DD_SYNCSURFACEDATA
1244 PDD_DIRECTDRAW_LOCAL lpDD
;
1245 PDD_SURFACE_LOCAL lpDDSurface
;
1246 DWORD dwSurfaceOffset
;
1247 ULONG_PTR fpLockPtr
;
1249 DWORD dwOverlayOffset
;
1250 ULONG dwDriverReserved1
;
1251 ULONG dwDriverReserved2
;
1252 ULONG dwDriverReserved3
;
1253 ULONG dwDriverReserved4
;
1255 } DD_SYNCSURFACEDATA
, *PDD_SYNCSURFACEDATA
;
1256 typedef DWORD (STDCALL
*PDD_KERNELCB_SYNCSURFACE
)(PDD_SYNCSURFACEDATA
);
1258 typedef struct _DD_SYNCVIDEOPORTDATA
1260 PDD_DIRECTDRAW_LOCAL lpDD
;
1261 PDD_VIDEOPORT_LOCAL lpVideoPort
;
1262 DWORD dwOriginOffset
;
1265 ULONG dwDriverReserved1
;
1266 ULONG dwDriverReserved2
;
1267 ULONG dwDriverReserved3
;
1269 } DD_SYNCVIDEOPORTDATA
, *PDD_SYNCVIDEOPORTDATA
;
1270 typedef DWORD (STDCALL
*PDD_KERNELCB_SYNCVIDEOPORT
)(PDD_SYNCVIDEOPORTDATA
);
1279 #endif /* __DD_INCLUDED__ */