OSDN Git Service

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