Embed:
(wiki syntax)
Show/hide line numbers
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 */
Generated on Tue Jul 12 2022 19:59:53 by
1.7.2