OSDN Git Service

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