Copy w32api 2.5 to trunk
[reactos.git] / reactos / w32api / include / ddk / ddkmapi.h
1 /*
2 * ddkmapi.h
3 *
4 * DirectDraw support for DxApi function
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __DDKMAPI_H
24 #define __DDKMAPI_H
25
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #pragma pack(push,4)
35
36 #include "ntddk.h"
37
38 #if defined(_DXAPI_)
39 #define DXAPI DECLSPEC_EXPORT
40 #else
41 #define DXAPI DECLSPEC_IMPORT
42 #endif
43
44 DXAPI
45 DWORD
46 FAR PASCAL
47 DxApi(
48 IN DWORD dwFunctionNum,
49 IN LPVOID lpvInBuffer,
50 IN DWORD cbInBuffer,
51 OUT LPVOID lpvOutBuffer,
52 OUT DWORD cbOutBuffer);
53
54 typedef DWORD (FAR PASCAL *LPDXAPI)(
55 DWORD dwFunctionNum,
56 LPVOID lpvInBuffer,
57 DWORD cbInBuffer,
58 LPVOID lpvOutBuffer,
59 DWORD cbOutBuffer);
60
61
62 #define DXAPI_MAJORVERSION 1
63 #define DXAPI_MINORVERSION 0
64
65 #define DD_FIRST_DXAPI 0x500
66
67 #define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI)
68 #define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1)
69 #define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2)
70 #define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3)
71 #define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4)
72 #define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5)
73 #define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6)
74 #define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7)
75 #define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8)
76 #define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9)
77 #define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10)
78 #define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11)
79 #define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12)
80 #define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13)
81 #define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14)
82 #define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15)
83 #define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16)
84 #define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17)
85 #define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18)
86 #define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19)
87 #define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20)
88 #define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21)
89
90
91 typedef struct _DDCAPBUFFINFO {
92 DWORD dwFieldNumber;
93 DWORD bPolarity;
94 LARGE_INTEGER liTimeStamp;
95 DWORD ddRVal;
96 } DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
97
98 /* DDADDVPCAPTUREBUFF.dwFlags constants */
99 #define DDADDBUFF_SYSTEMMEMORY 0x0001
100 #define DDADDBUFF_NONLOCALVIDMEM 0x0002
101 #define DDADDBUFF_INVERT 0x0004
102
103 typedef struct _DDADDVPCAPTUREBUFF {
104 HANDLE hCapture;
105 DWORD dwFlags;
106 PMDL pMDL;
107 PKEVENT pKEvent;
108 LPDDCAPBUFFINFO lpBuffInfo;
109 } DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
110
111 typedef struct _DDCLOSEHANDLE {
112 HANDLE hHandle;
113 } DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
114
115 typedef struct _DDFLIPOVERLAY {
116 HANDLE hDirectDraw;
117 HANDLE hCurrentSurface;
118 HANDLE hTargetSurface;
119 DWORD dwFlags;
120 } DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
121
122 typedef struct _DDFLIPVIDEOPORT {
123 HANDLE hDirectDraw;
124 HANDLE hVideoPort;
125 HANDLE hCurrentSurface;
126 HANDLE hTargetSurface;
127 DWORD dwFlags;
128 } DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
129
130 typedef struct _DDGETAUTOFLIPIN {
131 HANDLE hDirectDraw;
132 HANDLE hVideoPort;
133 } DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
134
135 typedef struct _DDGETAUTOFLIPOUT {
136 DWORD ddRVal;
137 HANDLE hVideoSurface;
138 HANDLE hVBISurface;
139 BOOL bPolarity;
140 } DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
141
142 typedef struct _DDGETPOLARITYIN {
143 HANDLE hDirectDraw;
144 HANDLE hVideoPort;
145 } DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
146
147 typedef struct _DDGETPOLARITYOUT {
148 DWORD ddRVal;
149 BOOL bPolarity;
150 } DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
151
152 typedef struct _DDGETSURFACESTATEIN {
153 HANDLE hDirectDraw;
154 HANDLE hSurface;
155 } DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
156
157 /* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
158 #define DDSTATE_BOB 0x0001
159 #define DDSTATE_WEAVE 0x0002
160 #define DDSTATE_EXPLICITLY_SET 0x0004
161 #define DDSTATE_SOFTWARE_AUTOFLIP 0x0008
162 #define DDSTATE_SKIPEVENFIELDS 0x0010
163
164 typedef struct _DDGETSURFACESTATEOUT {
165 DWORD ddRVal;
166 DWORD dwStateCaps;
167 DWORD dwStateStatus;
168 } DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
169
170 typedef struct _DDGETFIELDNUMIN {
171 HANDLE hDirectDraw;
172 HANDLE hVideoPort;
173 } DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
174
175 typedef struct _DDGETFIELDNUMOUT {
176 DWORD ddRVal;
177 DWORD dwFieldNum;
178 } DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
179
180 typedef struct _DDGETKERNELCAPSOUT {
181 DWORD ddRVal;
182 DWORD dwCaps;
183 DWORD dwIRQCaps;
184 } DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
185
186 typedef struct _DDGETVERSIONNUMBER {
187 DWORD ddRVal;
188 DWORD dwMajorVersion;
189 DWORD dwMinorVersion;
190 } DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
191
192 typedef struct _DDLOCKIN {
193 HANDLE hDirectDraw;
194 HANDLE hSurface;
195 } DDLOCKIN, FAR *LPDDLOCKIN;
196
197 typedef struct _DDLOCKOUT {
198 DWORD ddRVal;
199 DWORD dwSurfHeight;
200 DWORD dwSurfWidth;
201 LONG lSurfPitch;
202 PVOID lpSurface;
203 DWORD SurfaceCaps;
204 DWORD dwFormatFlags;
205 DWORD dwFormatFourCC;
206 DWORD dwFormatBitCount;
207 _ANONYMOUS_UNION union {
208 DWORD dwRBitMask;
209 DWORD dwYBitMask;
210 } DUMMYUNIONNAME;
211 _ANONYMOUS_UNION union {
212 DWORD dwGBitMask;
213 DWORD dwUBitMask;
214 } DUMMYUNIONNAME2;
215 _ANONYMOUS_UNION union {
216 DWORD dwBBitMask;
217 DWORD dwVBitMask;
218 } DUMMYUNIONNAME3;
219 } DDLOCKOUT, FAR *LPDDLOCKOUT;
220
221 /* LPDD_NOTIFYCALLBACK.dwFlags constants */
222 #define DDNOTIFY_DISPLAY_VSYNC 0x0001
223 #define DDNOTIFY_VP_VSYNC 0x0002
224 #define DDNOTIFY_VP_LINE 0x0004
225 #define DDNOTIFY_PRERESCHANGE 0x0008
226 #define DDNOTIFY_POSTRESCHANGE 0x0010
227 #define DDNOTIFY_PREDOSBOX 0x0020
228 #define DDNOTIFY_POSTDOSBOX 0x0040
229 #define DDNOTIFY_CLOSEDIRECTDRAW 0x0080
230 #define DDNOTIFY_CLOSESURFACE 0x0100
231 #define DDNOTIFY_CLOSEVIDEOPORT 0x0200
232 #define DDNOTIFY_CLOSECAPTURE 0x0400
233
234 typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
235 DWORD dwFlags,
236 PVOID pContext,
237 DWORD dwParam1,
238 DWORD dwParam2);
239
240 typedef struct _DDOPENDIRECTDRAWIN {
241 ULONG_PTR dwDirectDrawHandle;
242 LPDD_NOTIFYCALLBACK pfnDirectDrawClose;
243 PVOID pContext;
244 } DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
245
246 typedef struct _DDOPENDIRECTDRAWOUT {
247 DWORD ddRVal;
248 HANDLE hDirectDraw;
249 } DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
250
251 typedef struct _DDOPENSURFACEIN {
252 HANDLE hDirectDraw;
253 ULONG_PTR dwSurfaceHandle;
254 LPDD_NOTIFYCALLBACK pfnSurfaceClose;
255 PVOID pContext;
256 } DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
257
258 typedef struct _DDOPENSURFACEOUT {
259 DWORD ddRVal;
260 HANDLE hSurface;
261 } DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
262
263 typedef struct _DDOPENVIDEOPORTIN {
264 HANDLE hDirectDraw;
265 ULONG dwVideoPortHandle;
266 LPDD_NOTIFYCALLBACK pfnVideoPortClose;
267 PVOID pContext;
268 } DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
269
270 typedef struct _DDOPENVIDEOPORTOUT {
271 DWORD ddRVal;
272 HANDLE hVideoPort;
273 } DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
274
275 /* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
276 #define DDOPENCAPTURE_VIDEO 0x0001
277 #define DDOPENCAPTURE_VBI 0x0002
278
279 typedef struct _DDOPENVPCAPTUREDEVICEIN {
280 HANDLE hDirectDraw;
281 HANDLE hVideoPort;
282 DWORD dwStartLine;
283 DWORD dwEndLine;
284 DWORD dwCaptureEveryNFields;
285 LPDD_NOTIFYCALLBACK pfnCaptureClose;
286 PVOID pContext;
287 DWORD dwFlags;
288 } DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
289
290 typedef struct _DDOPENVPCAPTUREDEVICEOUT {
291 DWORD ddRVal;
292 HANDLE hCapture;
293 } DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
294
295 /* DDREGISTERCALLBACK.dwEvents constants */
296 #define DDEVENT_DISPLAY_VSYNC 0x0001
297 #define DDEVENT_VP_VSYNC 0x0002
298 #define DDEVENT_VP_LINE 0x0004
299 #define DDEVENT_PRERESCHANGE 0x0008
300 #define DDEVENT_POSTRESCHANGE 0x0010
301 #define DDEVENT_PREDOSBOX 0x0020
302 #define DDEVENT_POSTDOSBOX 0x0040
303
304 typedef struct _DDREGISTERCALLBACK {
305 HANDLE hDirectDraw;
306 ULONG dwEvents;
307 LPDD_NOTIFYCALLBACK pfnCallback;
308 ULONG_PTR dwParam1;
309 ULONG_PTR dwParam2;
310 PVOID pContext;
311 } DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
312
313 typedef struct _DDSETSURFACETATE {
314 HANDLE hDirectDraw;
315 HANDLE hSurface;
316 DWORD dwState;
317 DWORD dwStartField;
318 } DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
319
320 typedef struct _DDSETFIELDNUM {
321 HANDLE hDirectDraw;
322 HANDLE hVideoPort;
323 DWORD dwFieldNum;
324 } DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
325
326 typedef struct _DDSETSKIPFIELD {
327 HANDLE hDirectDraw;
328 HANDLE hVideoPort;
329 DWORD dwStartField;
330 } DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
331
332 #pragma pack(pop)
333
334 #ifdef __cplusplus
335 }
336 #endif
337
338 #endif /* __DDKMAPI_H */