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