| /* |
| * ddkmapi.h |
| * |
| * DirectDraw support for DxApi function |
| * |
| * Contributors: |
| * Created by Magnus Olsen |
| * |
| * THIS SOFTWARE IS NOT COPYRIGHTED |
| * |
| * This source code is offered for use in the public domain. You may |
| * use, modify or distribute it freely. |
| * |
| * This code is distributed in the hope that it will be useful but |
| * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| * DISCLAIMED. This includes but is not limited to warranties of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * |
| */ |
| |
| #ifndef __DDKMAPI_INCLUDED__ |
| #define __DDKMAPI_INCLUDED__ |
| |
| #if defined(_DXAPI_) |
| #define DXAPI |
| #else |
| #define DXAPI DECLSPEC_IMPORT |
| #endif |
| |
| #define DXAPI_MAJORVERSION 1 |
| #define DXAPI_MINORVERSION 0 |
| |
| #define DD_FIRST_DXAPI 0x500 |
| #define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI) |
| #define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1) |
| #define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2) |
| #define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3) |
| #define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4) |
| #define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5) |
| #define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6) |
| #define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7) |
| #define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8) |
| #define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9) |
| #define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10) |
| #define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11) |
| #define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12) |
| #define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13) |
| #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14) |
| #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15) |
| #define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16) |
| #define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17) |
| #define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18) |
| #define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19) |
| #define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20) |
| #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21) |
| |
| /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */ |
| #define DDOPENCAPTURE_VIDEO 0x0001 |
| #define DDOPENCAPTURE_VBI 0x0002 |
| |
| /* DDADDVPCAPTUREBUFF.dwFlags constants */ |
| #define DDADDBUFF_SYSTEMMEMORY 0x0001 |
| #define DDADDBUFF_NONLOCALVIDMEM 0x0002 |
| #define DDADDBUFF_INVERT 0x0004 |
| |
| /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */ |
| #define DDSTATE_BOB 0x0001 |
| #define DDSTATE_WEAVE 0x0002 |
| #define DDSTATE_EXPLICITLY_SET 0x0004 |
| #define DDSTATE_SOFTWARE_AUTOFLIP 0x0008 |
| #define DDSTATE_SKIPEVENFIELDS 0x0010 |
| |
| /* DDREGISTERCALLBACK.dwEvents constants */ |
| #define DDEVENT_DISPLAY_VSYNC 0x0001 |
| #define DDEVENT_VP_VSYNC 0x0002 |
| #define DDEVENT_VP_LINE 0x0004 |
| #define DDEVENT_PRERESCHANGE 0x0008 |
| #define DDEVENT_POSTRESCHANGE 0x0010 |
| #define DDEVENT_PREDOSBOX 0x0020 |
| #define DDEVENT_POSTDOSBOX 0x0040 |
| |
| /* LPDD_NOTIFYCALLBACK.dwFlags constants */ |
| #define DDNOTIFY_DISPLAY_VSYNC 0x0001 |
| #define DDNOTIFY_VP_VSYNC 0x0002 |
| #define DDNOTIFY_VP_LINE 0x0004 |
| #define DDNOTIFY_PRERESCHANGE 0x0008 |
| #define DDNOTIFY_POSTRESCHANGE 0x0010 |
| #define DDNOTIFY_PREDOSBOX 0x0020 |
| #define DDNOTIFY_POSTDOSBOX 0x0040 |
| #define DDNOTIFY_CLOSEDIRECTDRAW 0x0080 |
| #define DDNOTIFY_CLOSESURFACE 0x0100 |
| #define DDNOTIFY_CLOSEVIDEOPORT 0x0200 |
| #define DDNOTIFY_CLOSECAPTURE 0x0400 |
| |
| typedef DWORD (PASCAL *LPDXAPI)(DWORD dwFunctionNum, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer); |
| typedef ULONG (PASCAL *LPDD_NOTIFYCALLBACK) (DWORD dwFlags, PVOID pContext, DWORD dwParam1, DWORD dwParam2); |
| |
| typedef struct _DDCAPBUFFINFO { |
| DWORD dwFieldNumber; |
| DWORD bPolarity; |
| LARGE_INTEGER liTimeStamp; |
| DWORD ddRVal; |
| } DDCAPBUFFINFO, * LPDDCAPBUFFINFO; |
| |
| typedef struct _DDADDVPCAPTUREBUFF { |
| HANDLE hCapture; |
| DWORD dwFlags; |
| PMDL pMDL; |
| PKEVENT pKEvent; |
| LPDDCAPBUFFINFO lpBuffInfo; |
| } DDADDVPCAPTUREBUFF, * LPDDADDVPCAPTUREBUFF; |
| |
| typedef struct _DDCLOSEHANDLE { |
| HANDLE hHandle; |
| } DDCLOSEHANDLE, *LPDDCLOSEHANDLE; |
| |
| typedef struct _DDFLIPOVERLAY { |
| HANDLE hDirectDraw; |
| HANDLE hCurrentSurface; |
| HANDLE hTargetSurface; |
| DWORD dwFlags; |
| } DDFLIPOVERLAY, *LPDDFLIPOVERLAY; |
| |
| typedef struct _DDFLIPVIDEOPORT { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| HANDLE hCurrentSurface; |
| HANDLE hTargetSurface; |
| DWORD dwFlags; |
| } DDFLIPVIDEOPORT, *LPDDFLIPVIDEOPORT; |
| |
| typedef struct _DDGETAUTOFLIPIN { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| } DDGETAUTOFLIPIN, *LPDDGETAUTOFLIPIN; |
| |
| typedef struct _DDGETAUTOFLIPOUT { |
| DWORD ddRVal; |
| HANDLE hVideoSurface; |
| HANDLE hVBISurface; |
| WINBOOL bPolarity; |
| } DDGETAUTOFLIPOUT, *LPDDGETAUTOFLIPOUT; |
| |
| typedef struct _DDGETPOLARITYIN { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| } DDGETPOLARITYIN, *LPDDGETPOLARITYIN; |
| |
| typedef struct _DDGETPOLARITYOUT { |
| DWORD ddRVal; |
| WINBOOL bPolarity; |
| } DDGETPOLARITYOUT, *LPDDGETPOLARITYOUT; |
| |
| typedef struct _DDGETSURFACESTATEIN { |
| HANDLE hDirectDraw; |
| HANDLE hSurface; |
| } DDGETSURFACESTATEIN, *LPDDGETSURFACESTATEIN; |
| |
| typedef struct _DDGETSURFACESTATEOUT { |
| DWORD ddRVal; |
| DWORD dwStateCaps; |
| DWORD dwStateStatus; |
| } DDGETSURFACESTATEOUT, *LPDDGETSURFACESTATEOUT; |
| |
| typedef struct _DDGETFIELDNUMIN { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| } DDGETFIELDNUMIN, *LPDDGETFIELDNUMIN; |
| |
| typedef struct _DDGETFIELDNUMOUT { |
| DWORD ddRVal; |
| DWORD dwFieldNum; |
| } DDGETFIELDNUMOUT, *LPDDGETFIELDNUMOUT; |
| |
| typedef struct _DDGETKERNELCAPSOUT { |
| DWORD ddRVal; |
| DWORD dwCaps; |
| DWORD dwIRQCaps; |
| } DDGETKERNELCAPSOUT, *LPDDGETKERNELCAPSOUT; |
| |
| typedef struct _DDGETVERSIONNUMBER { |
| DWORD ddRVal; |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| } DDGETVERSIONNUMBER, *LPDDGETVERSIONNUMBER; |
| |
| typedef struct _DDLOCKIN { |
| HANDLE hDirectDraw; |
| HANDLE hSurface; |
| } DDLOCKIN, *LPDDLOCKIN; |
| |
| typedef struct _DDLOCKOUT { |
| DWORD ddRVal; |
| DWORD dwSurfHeight; |
| DWORD dwSurfWidth; |
| LONG lSurfPitch; |
| PVOID lpSurface; |
| DWORD SurfaceCaps; |
| DWORD dwFormatFlags; |
| DWORD dwFormatFourCC; |
| DWORD dwFormatBitCount; |
| __GNU_EXTENSION union { |
| DWORD dwRBitMask; |
| DWORD dwYBitMask; |
| }; |
| __GNU_EXTENSION union { |
| DWORD dwGBitMask; |
| DWORD dwUBitMask; |
| }; |
| __GNU_EXTENSION union { |
| DWORD dwBBitMask; |
| DWORD dwVBitMask; |
| }; |
| } DDLOCKOUT, *LPDDLOCKOUT; |
| |
| |
| typedef struct _DDOPENDIRECTDRAWIN { |
| ULONG_PTR dwDirectDrawHandle; |
| LPDD_NOTIFYCALLBACK pfnDirectDrawClose; |
| PVOID pContext; |
| } DDOPENDIRECTDRAWIN, *LPDDOPENDIRECTDRAWIN; |
| |
| typedef struct _DDOPENDIRECTDRAWOUT { |
| DWORD ddRVal; |
| HANDLE hDirectDraw; |
| } DDOPENDIRECTDRAWOUT, *LPDDOPENDIRECTDRAWOUT; |
| |
| typedef struct _DDOPENSURFACEIN { |
| HANDLE hDirectDraw; |
| ULONG_PTR dwSurfaceHandle; |
| LPDD_NOTIFYCALLBACK pfnSurfaceClose; |
| PVOID pContext; |
| } DDOPENSURFACEIN, *LPDDOPENSURFACEIN; |
| |
| typedef struct _DDOPENSURFACEOUT { |
| DWORD ddRVal; |
| HANDLE hSurface; |
| } DDOPENSURFACEOUT, *LPDDOPENSURFACEOUT; |
| |
| typedef struct _DDOPENVIDEOPORTIN { |
| HANDLE hDirectDraw; |
| ULONG dwVideoPortHandle; |
| LPDD_NOTIFYCALLBACK pfnVideoPortClose; |
| PVOID pContext; |
| } DDOPENVIDEOPORTIN, *LPDDOPENVIDEOPORTIN; |
| |
| typedef struct _DDOPENVIDEOPORTOUT { |
| DWORD ddRVal; |
| HANDLE hVideoPort; |
| } DDOPENVIDEOPORTOUT, *LPDDOPENVIDEOPORTOUT; |
| |
| typedef struct _DDOPENVPCAPTUREDEVICEIN { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| DWORD dwStartLine; |
| DWORD dwEndLine; |
| DWORD dwCaptureEveryNFields; |
| LPDD_NOTIFYCALLBACK pfnCaptureClose; |
| PVOID pContext; |
| DWORD dwFlags; |
| } DDOPENVPCAPTUREDEVICEIN, *LPDDOPENVPCAPTUREDEVICEIN; |
| |
| typedef struct _DDOPENVPCAPTUREDEVICEOUT { |
| DWORD ddRVal; |
| HANDLE hCapture; |
| } DDOPENVPCAPTUREDEVICEOUT, *LPDDOPENVPCAPTUREDEVICEOUT; |
| |
| typedef struct _DDREGISTERCALLBACK { |
| HANDLE hDirectDraw; |
| ULONG dwEvents; |
| LPDD_NOTIFYCALLBACK pfnCallback; |
| ULONG_PTR dwParam1; |
| ULONG_PTR dwParam2; |
| PVOID pContext; |
| } DDREGISTERCALLBACK, *LPDDREGISTERCALLBACK; |
| |
| typedef struct _DDSETSURFACETATE { |
| HANDLE hDirectDraw; |
| HANDLE hSurface; |
| DWORD dwState; |
| DWORD dwStartField; |
| } DDSETSURFACESTATE, *LPDDSETSURFACESTATE; |
| |
| typedef struct _DDSETFIELDNUM { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| DWORD dwFieldNum; |
| } DDSETFIELDNUM, *LPDDSETFIELDNUM; |
| |
| typedef struct _DDSETSKIPFIELD { |
| HANDLE hDirectDraw; |
| HANDLE hVideoPort; |
| DWORD dwStartField; |
| } DDSETSKIPFIELD, *LPDDSETSKIPFIELD; |
| |
| |
| DXAPI |
| DWORD PASCAL |
| DxApi(IN DWORD dwFunctionNum, |
| IN LPVOID lpvInBuffer, |
| IN DWORD cbInBuffer, |
| OUT LPVOID lpvOutBuffer, |
| OUT DWORD cbOutBuffer); |
| |
| |
| #endif /* __DDKMAPI_INCLUDED__ */ |
| |