Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ddkmapi.h Source File

ddkmapi.h

00001 /*
00002  * ddkmapi.h
00003  *
00004  * DirectDraw support for DxApi function
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef __DDKMAPI_H
00024 #define __DDKMAPI_H
00025 
00026 #if __GNUC__ >=3
00027 #pragma GCC system_header
00028 #endif
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 #include "ntddk.h"
00035 
00036 #if defined(_DXAPI_)
00037   #define DXAPI DECLSPEC_EXPORT
00038 #else
00039   #define DXAPI DECLSPEC_IMPORT
00040 #endif
00041 
00042 DXAPI
00043 DWORD
00044 FAR PASCAL
00045 DxApi(
00046   /*IN*/ DWORD  dwFunctionNum,
00047   /*IN*/ LPVOID  lpvInBuffer,
00048   /*IN*/ DWORD  cbInBuffer,
00049   /*OUT*/ LPVOID  lpvOutBuffer,
00050   /*OUT*/ DWORD  cbOutBuffer);
00051 
00052 typedef DWORD (FAR PASCAL *LPDXAPI)(
00053   DWORD  dwFunctionNum,
00054   LPVOID  lpvInBuffer,
00055   DWORD  cbInBuffer,
00056   LPVOID  lpvOutBuffer,
00057   DWORD  cbOutBuffer);
00058 
00059 
00060 #define DXAPI_MAJORVERSION                1
00061 #define DXAPI_MINORVERSION                0
00062 
00063 #define DD_FIRST_DXAPI                    0x500
00064 
00065 #define DD_DXAPI_GETVERSIONNUMBER                 (DD_FIRST_DXAPI)
00066 #define DD_DXAPI_CLOSEHANDLE                      (DD_FIRST_DXAPI+1)
00067 #define DD_DXAPI_OPENDIRECTDRAW                   (DD_FIRST_DXAPI+2)
00068 #define DD_DXAPI_OPENSURFACE                      (DD_FIRST_DXAPI+3)
00069 #define DD_DXAPI_OPENVIDEOPORT                    (DD_FIRST_DXAPI+4)
00070 #define DD_DXAPI_GETKERNELCAPS                    (DD_FIRST_DXAPI+5)
00071 #define DD_DXAPI_GET_VP_FIELD_NUMBER              (DD_FIRST_DXAPI+6)
00072 #define DD_DXAPI_SET_VP_FIELD_NUMBER              (DD_FIRST_DXAPI+7)
00073 #define DD_DXAPI_SET_VP_SKIP_FIELD                (DD_FIRST_DXAPI+8)
00074 #define DD_DXAPI_GET_SURFACE_STATE                (DD_FIRST_DXAPI+9)
00075 #define DD_DXAPI_SET_SURFACE_STATE                (DD_FIRST_DXAPI+10)
00076 #define DD_DXAPI_LOCK                             (DD_FIRST_DXAPI+11)
00077 #define DD_DXAPI_FLIP_OVERLAY                     (DD_FIRST_DXAPI+12)
00078 #define DD_DXAPI_FLIP_VP                          (DD_FIRST_DXAPI+13)
00079 #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE  (DD_FIRST_DXAPI+14)
00080 #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE     (DD_FIRST_DXAPI+15)
00081 #define DD_DXAPI_REGISTER_CALLBACK                (DD_FIRST_DXAPI+16)
00082 #define DD_DXAPI_UNREGISTER_CALLBACK              (DD_FIRST_DXAPI+17)
00083 #define DD_DXAPI_GET_POLARITY                     (DD_FIRST_DXAPI+18)
00084 #define DD_DXAPI_OPENVPCAPTUREDEVICE              (DD_FIRST_DXAPI+19)
00085 #define DD_DXAPI_ADDVPCAPTUREBUFFER               (DD_FIRST_DXAPI+20)
00086 #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS            (DD_FIRST_DXAPI+21)
00087 
00088 
00089 typedef struct _DDCAPBUFFINFO {
00090   DWORD  dwFieldNumber;
00091   DWORD  bPolarity;
00092   LARGE_INTEGER  liTimeStamp;
00093   DWORD  ddRVal;
00094 } DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
00095 
00096 /* DDADDVPCAPTUREBUFF.dwFlags constants */
00097 #define DDADDBUFF_SYSTEMMEMORY            0x0001
00098 #define DDADDBUFF_NONLOCALVIDMEM          0x0002
00099 #define DDADDBUFF_INVERT                  0x0004
00100 
00101 typedef struct _DDADDVPCAPTUREBUFF {
00102   HANDLE  hCapture;
00103   DWORD  dwFlags;
00104   PMDL  pMDL;
00105   PKEVENT  pKEvent;
00106   LPDDCAPBUFFINFO  lpBuffInfo;
00107 } DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
00108 
00109 typedef struct _DDCLOSEHANDLE {
00110   HANDLE  hHandle;
00111 } DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
00112 
00113 typedef struct _DDFLIPOVERLAY {
00114   HANDLE  hDirectDraw;
00115   HANDLE  hCurrentSurface;
00116   HANDLE  hTargetSurface;
00117   DWORD  dwFlags;
00118 } DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
00119 
00120 typedef struct _DDFLIPVIDEOPORT {
00121   HANDLE  hDirectDraw;
00122   HANDLE  hVideoPort;
00123   HANDLE  hCurrentSurface;
00124   HANDLE  hTargetSurface;
00125   DWORD  dwFlags;
00126 } DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
00127 
00128 typedef struct _DDGETAUTOFLIPIN {
00129   HANDLE  hDirectDraw;
00130   HANDLE  hVideoPort;
00131 } DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
00132 
00133 typedef struct _DDGETAUTOFLIPOUT {
00134   DWORD  ddRVal;
00135   HANDLE  hVideoSurface;
00136   HANDLE  hVBISurface;
00137   BOOL  bPolarity;
00138 } DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
00139 
00140 typedef struct _DDGETPOLARITYIN {
00141   HANDLE  hDirectDraw;
00142   HANDLE  hVideoPort;
00143 } DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
00144 
00145 typedef struct _DDGETPOLARITYOUT {
00146   DWORD  ddRVal;
00147   BOOL  bPolarity;
00148 } DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
00149 
00150 typedef struct _DDGETSURFACESTATEIN {
00151   HANDLE  hDirectDraw;
00152   HANDLE  hSurface;
00153 } DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
00154 
00155 /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
00156 #define DDSTATE_BOB                       0x0001
00157 #define DDSTATE_WEAVE                     0x0002
00158 #define DDSTATE_EXPLICITLY_SET            0x0004
00159 #define DDSTATE_SOFTWARE_AUTOFLIP         0x0008
00160 #define DDSTATE_SKIPEVENFIELDS            0x0010
00161 
00162 typedef struct _DDGETSURFACESTATEOUT {
00163   DWORD  ddRVal;
00164   DWORD  dwStateCaps;
00165   DWORD  dwStateStatus;
00166 } DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
00167 
00168 typedef struct _DDGETFIELDNUMIN {
00169   HANDLE  hDirectDraw;
00170   HANDLE  hVideoPort;
00171 } DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
00172 
00173 typedef struct _DDGETFIELDNUMOUT {
00174   DWORD  ddRVal;
00175   DWORD  dwFieldNum;
00176 } DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
00177 
00178 typedef struct _DDGETKERNELCAPSOUT {
00179   DWORD  ddRVal;
00180   DWORD  dwCaps;
00181   DWORD  dwIRQCaps;
00182 } DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
00183 
00184 typedef struct _DDGETVERSIONNUMBER {
00185   DWORD  ddRVal;
00186   DWORD  dwMajorVersion;
00187   DWORD  dwMinorVersion;
00188 } DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
00189 
00190 typedef struct _DDLOCKIN {
00191   HANDLE  hDirectDraw;
00192   HANDLE  hSurface;
00193 } DDLOCKIN, FAR *LPDDLOCKIN;
00194 
00195 typedef struct _DDLOCKOUT {
00196   DWORD  ddRVal;
00197   DWORD  dwSurfHeight;
00198   DWORD  dwSurfWidth;
00199   LONG  lSurfPitch;
00200   PVOID  lpSurface;
00201   DWORD  SurfaceCaps;
00202   DWORD  dwFormatFlags;
00203   DWORD  dwFormatFourCC;
00204   DWORD  dwFormatBitCount;
00205   _ANONYMOUS_UNION union {
00206     DWORD  dwRBitMask;
00207     DWORD  dwYBitMask;
00208   } DUMMYUNIONNAME;
00209   _ANONYMOUS_UNION union {
00210     DWORD  dwGBitMask;
00211     DWORD  dwUBitMask;
00212   } DUMMYUNIONNAME2;
00213   _ANONYMOUS_UNION union {
00214     DWORD  dwBBitMask;
00215     DWORD  dwVBitMask;
00216   } DUMMYUNIONNAME3;
00217 } DDLOCKOUT, FAR *LPDDLOCKOUT;
00218 
00219 /* LPDD_NOTIFYCALLBACK.dwFlags constants */
00220 #define DDNOTIFY_DISPLAY_VSYNC            0x0001
00221 #define DDNOTIFY_VP_VSYNC                 0x0002
00222 #define DDNOTIFY_VP_LINE                  0x0004
00223 #define DDNOTIFY_PRERESCHANGE             0x0008
00224 #define DDNOTIFY_POSTRESCHANGE            0x0010
00225 #define DDNOTIFY_PREDOSBOX                0x0020
00226 #define DDNOTIFY_POSTDOSBOX               0x0040
00227 #define DDNOTIFY_CLOSEDIRECTDRAW          0x0080
00228 #define DDNOTIFY_CLOSESURFACE             0x0100
00229 #define DDNOTIFY_CLOSEVIDEOPORT           0x0200
00230 #define DDNOTIFY_CLOSECAPTURE             0x0400
00231 
00232 typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
00233   DWORD dwFlags,
00234   PVOID pContext,
00235   DWORD dwParam1,
00236   DWORD dwParam2);
00237 
00238 typedef struct _DDOPENDIRECTDRAWIN {
00239   ULONG_PTR  dwDirectDrawHandle;
00240   LPDD_NOTIFYCALLBACK  pfnDirectDrawClose;
00241   PVOID  pContext;
00242 } DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
00243 
00244 typedef struct _DDOPENDIRECTDRAWOUT {
00245   DWORD  ddRVal;
00246   HANDLE  hDirectDraw;
00247 } DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
00248 
00249 typedef struct _DDOPENSURFACEIN {
00250   HANDLE  hDirectDraw;
00251   ULONG_PTR  dwSurfaceHandle;
00252   LPDD_NOTIFYCALLBACK  pfnSurfaceClose;
00253   PVOID  pContext;
00254 } DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
00255 
00256 typedef struct _DDOPENSURFACEOUT {
00257   DWORD  ddRVal;
00258   HANDLE  hSurface;
00259 } DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
00260 
00261 typedef struct _DDOPENVIDEOPORTIN {
00262   HANDLE  hDirectDraw;
00263   ULONG  dwVideoPortHandle;
00264   LPDD_NOTIFYCALLBACK  pfnVideoPortClose;
00265   PVOID  pContext;
00266 } DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
00267 
00268 typedef struct _DDOPENVIDEOPORTOUT {
00269   DWORD  ddRVal;
00270   HANDLE  hVideoPort;
00271 } DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
00272 
00273 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
00274 #define DDOPENCAPTURE_VIDEO               0x0001
00275 #define DDOPENCAPTURE_VBI                 0x0002
00276 
00277 typedef struct _DDOPENVPCAPTUREDEVICEIN {
00278   HANDLE  hDirectDraw;
00279   HANDLE  hVideoPort;
00280   DWORD  dwStartLine;
00281   DWORD  dwEndLine;
00282   DWORD  dwCaptureEveryNFields;
00283   LPDD_NOTIFYCALLBACK  pfnCaptureClose;
00284   PVOID  pContext;
00285   DWORD  dwFlags;
00286 } DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
00287 
00288 typedef struct _DDOPENVPCAPTUREDEVICEOUT {
00289   DWORD  ddRVal;
00290   HANDLE  hCapture;
00291 } DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
00292 
00293 /* DDREGISTERCALLBACK.dwEvents constants */
00294 #define DDEVENT_DISPLAY_VSYNC             0x0001
00295 #define DDEVENT_VP_VSYNC                  0x0002
00296 #define DDEVENT_VP_LINE                   0x0004
00297 #define DDEVENT_PRERESCHANGE              0x0008
00298 #define DDEVENT_POSTRESCHANGE             0x0010
00299 #define DDEVENT_PREDOSBOX                 0x0020
00300 #define DDEVENT_POSTDOSBOX                0x0040
00301 
00302 typedef struct _DDREGISTERCALLBACK {
00303   HANDLE  hDirectDraw;
00304   ULONG  dwEvents;
00305   LPDD_NOTIFYCALLBACK  pfnCallback;
00306   ULONG_PTR  dwParam1;
00307   ULONG_PTR  dwParam2;
00308   PVOID  pContext;
00309 } DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
00310 
00311 typedef struct _DDSETSURFACETATE {
00312   HANDLE  hDirectDraw;
00313   HANDLE  hSurface;
00314   DWORD  dwState;
00315   DWORD  dwStartField;
00316 } DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
00317 
00318 typedef struct _DDSETFIELDNUM {
00319   HANDLE  hDirectDraw;
00320   HANDLE  hVideoPort;
00321   DWORD  dwFieldNum;
00322 } DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
00323 
00324 typedef struct _DDSETSKIPFIELD {
00325   HANDLE  hDirectDraw;
00326   HANDLE  hVideoPort;
00327   DWORD  dwStartField;
00328 } DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
00329 
00330 #ifdef __cplusplus
00331 }
00332 #endif
00333 
00334 #endif /* __DDKMAPI_H */