]> git.cworth.org Git - apitrace/blob - ddraw.py
Get DDraw/D3D7 building.
[apitrace] / ddraw.py
1 ##########################################################################
2 #
3 # Copyright 2008-2009 VMware, Inc.
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the 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 FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26 """ddraw.h"""
27
28 from winapi import *
29 from trace import DllTracer
30
31 IDirectDraw = Interface("IDirectDraw", IUnknown)
32 IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
33 IDirectDraw4 = Interface("IDirectDraw4", IUnknown)
34 IDirectDraw7 = Interface("IDirectDraw7", IUnknown)
35 IDirectDrawPalette = Interface("IDirectDrawPalette", IUnknown)
36 IDirectDrawClipper = Interface("IDirectDrawClipper", IUnknown)
37 IDirectDrawSurface = Interface("IDirectDrawSurface", IUnknown)
38 IDirectDrawSurface2 = Interface("IDirectDrawSurface2", IUnknown)
39 IDirectDrawSurface3 = Interface("IDirectDrawSurface3", IUnknown)
40 IDirectDrawSurface4 = Interface("IDirectDrawSurface4", IUnknown)
41 IDirectDrawSurface7 = Interface("IDirectDrawSurface7", IUnknown)
42 IDirectDrawColorControl = Interface("IDirectDrawColorControl", IUnknown)
43 IDirectDrawGammaControl = Interface("IDirectDrawGammaControl", IUnknown)
44
45 LPDIRECTDRAW = Pointer(IDirectDraw)
46 LPDIRECTDRAW2 = Pointer(IDirectDraw2)
47 LPDIRECTDRAW4 = Pointer(IDirectDraw4)
48 LPDIRECTDRAW7 = Pointer(IDirectDraw7)
49 LPDIRECTDRAWSURFACE = Pointer(IDirectDrawSurface)
50 LPDIRECTDRAWSURFACE2 = Pointer(IDirectDrawSurface2)
51 LPDIRECTDRAWSURFACE3 = Pointer(IDirectDrawSurface3)
52 LPDIRECTDRAWSURFACE4 = Pointer(IDirectDrawSurface4)
53 LPDIRECTDRAWSURFACE7 = Pointer(IDirectDrawSurface7)
54 LPDIRECTDRAWPALETTE = Pointer(IDirectDrawPalette)
55 LPDIRECTDRAWCLIPPER = Pointer(IDirectDrawClipper)
56 LPDIRECTDRAWCOLORCONTROL = Pointer(IDirectDrawColorControl)
57 LPDIRECTDRAWGAMMACONTROL = Pointer(IDirectDrawGammaControl)
58
59 DDARGB = Struct("DDARGB", [
60     (BYTE, "blue"),
61     (BYTE, "green"),
62     (BYTE, "red"),
63     (BYTE, "alpha"),
64 ])
65
66 LPDDARGB = Pointer(DDARGB)
67
68 DDRGBA = Struct("DDRGBA", [
69     (BYTE, "red"),
70     (BYTE, "green"),
71     (BYTE, "blue"),
72     (BYTE, "alpha"),
73 ])
74 LPDDRGBA = Pointer(DDRGBA)
75
76 DDCOLORKEY = Struct("DDCOLORKEY", [
77     (DWORD, "dwColorSpaceLowValue"),
78     (DWORD, "dwColorSpaceHighValue"),
79 ])
80 LPDDCOLORKEY = Pointer(DDCOLORKEY)
81
82 DDBLTFX = Struct("DDBLTFX", [
83     (DWORD, "dwSize"),
84     (DWORD, "dwDDFX"),
85     (DWORD, "dwROP"),
86     (DWORD, "dwDDROP"),
87     (DWORD, "dwRotationAngle"),
88     (DWORD, "dwZBufferOpCode"),
89     (DWORD, "dwZBufferLow"),
90     (DWORD, "dwZBufferHigh"),
91     (DWORD, "dwZBufferBaseDest"),
92     (DWORD, "dwZDestConstBitDepth"),
93     (DWORD, "dwZDestConst"),
94     (LPDIRECTDRAWSURFACE, "lpDDSZBufferDest"),
95     (DWORD, "dwZSrcConstBitDepth"),
96     (DWORD, "dwZSrcConst"),
97     (LPDIRECTDRAWSURFACE, "lpDDSZBufferSrc"),
98     (DWORD, "dwAlphaEdgeBlendBitDepth"),
99     (DWORD, "dwAlphaEdgeBlend"),
100     (DWORD, "dwReserved"),
101     (DWORD, "dwAlphaDestConstBitDepth"),
102     (DWORD, "dwAlphaDestConst"),
103     (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
104     (DWORD, "dwAlphaSrcConstBitDepth"),
105     (DWORD, "dwAlphaSrcConst"),
106     (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
107     (DWORD, "dwFillColor"),
108     (DWORD, "dwFillDepth"),
109     (DWORD, "dwFillPixel"),
110     (LPDIRECTDRAWSURFACE, "lpDDSPattern"),
111     (DDCOLORKEY, "ddckDestColorkey"),
112     (DDCOLORKEY, "ddckSrcColorkey"),
113 ])
114 LPDDBLTFX = Pointer(DDBLTFX)
115
116 DDSCAPS = Struct("DDSCAPS", [
117     (DWORD, "dwCaps"),
118 ])
119 LPDDSCAPS = Pointer(DDSCAPS)
120
121 DDOSCAPS = Struct("DDOSCAPS", [
122     (DWORD, "dwCaps"),
123 ])
124 LPDDOSCAPS = Pointer(DDOSCAPS)
125
126 DDSCAPSEX = Struct("DDSCAPSEX", [
127     (DWORD, "dwCaps2"),
128     (DWORD, "dwCaps3"),
129     (DWORD, "dwCaps4"),
130 ])
131
132 DDSCAPS2 = Struct("DDSCAPS2", [
133     (DWORD, "dwCaps"),
134     (DWORD, "dwCaps2"),
135     (DWORD, "dwCaps3"),
136     (DWORD, "dwCaps4"),
137 ])
138 LPDDSCAPS2 = Pointer(DDSCAPS2)
139
140 DDCAPS_DX1 = Struct("DDCAPS_DX1", [
141     (DWORD, "dwSize"),
142     (DWORD, "dwCaps"),
143     (DWORD, "dwCaps2"),
144     (DWORD, "dwCKeyCaps"),
145     (DWORD, "dwFXCaps"),
146     (DWORD, "dwFXAlphaCaps"),
147     (DWORD, "dwPalCaps"),
148     (DWORD, "dwSVCaps"),
149     (DWORD, "dwAlphaBltConstBitDepths"),
150     (DWORD, "dwAlphaBltPixelBitDepths"),
151     (DWORD, "dwAlphaBltSurfaceBitDepths"),
152     (DWORD, "dwAlphaOverlayConstBitDepths"),
153     (DWORD, "dwAlphaOverlayPixelBitDepths"),
154     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
155     (DWORD, "dwZBufferBitDepths"),
156     (DWORD, "dwVidMemTotal"),
157     (DWORD, "dwVidMemFree"),
158     (DWORD, "dwMaxVisibleOverlays"),
159     (DWORD, "dwCurrVisibleOverlays"),
160     (DWORD, "dwNumFourCCCodes"),
161     (DWORD, "dwAlignBoundarySrc"),
162     (DWORD, "dwAlignSizeSrc"),
163     (DWORD, "dwAlignBoundaryDest"),
164     (DWORD, "dwAlignSizeDest"),
165     (DWORD, "dwAlignStrideAlign"),
166     (DWORD, "dwRops[DD_ROP_SPACE]"),
167     (DDSCAPS, "ddsCaps"),
168     (DWORD, "dwMinOverlayStretch"),
169     (DWORD, "dwMaxOverlayStretch"),
170     (DWORD, "dwMinLiveVideoStretch"),
171     (DWORD, "dwMaxLiveVideoStretch"),
172     (DWORD, "dwMinHwCodecStretch"),
173     (DWORD, "dwMaxHwCodecStretch"),
174     (DWORD, "dwReserved1"),
175     (DWORD, "dwReserved2"),
176     (DWORD, "dwReserved3"),
177 ])
178 LPDDCAPS_DX1 = Pointer(DDCAPS_DX1)
179
180 DDCAPS_DX3 = Struct("DDCAPS_DX3", [
181     (DWORD, "dwSize"),
182     (DWORD, "dwCaps"),
183     (DWORD, "dwCaps2"),
184     (DWORD, "dwCKeyCaps"),
185     (DWORD, "dwFXCaps"),
186     (DWORD, "dwFXAlphaCaps"),
187     (DWORD, "dwPalCaps"),
188     (DWORD, "dwSVCaps"),
189     (DWORD, "dwAlphaBltConstBitDepths"),
190     (DWORD, "dwAlphaBltPixelBitDepths"),
191     (DWORD, "dwAlphaBltSurfaceBitDepths"),
192     (DWORD, "dwAlphaOverlayConstBitDepths"),
193     (DWORD, "dwAlphaOverlayPixelBitDepths"),
194     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
195     (DWORD, "dwZBufferBitDepths"),
196     (DWORD, "dwVidMemTotal"),
197     (DWORD, "dwVidMemFree"),
198     (DWORD, "dwMaxVisibleOverlays"),
199     (DWORD, "dwCurrVisibleOverlays"),
200     (DWORD, "dwNumFourCCCodes"),
201     (DWORD, "dwAlignBoundarySrc"),
202     (DWORD, "dwAlignSizeSrc"),
203     (DWORD, "dwAlignBoundaryDest"),
204     (DWORD, "dwAlignSizeDest"),
205     (DWORD, "dwAlignStrideAlign"),
206     (DWORD, "dwRops[DD_ROP_SPACE]"),
207     (DDSCAPS, "ddsCaps"),
208     (DWORD, "dwMinOverlayStretch"),
209     (DWORD, "dwMaxOverlayStretch"),
210     (DWORD, "dwMinLiveVideoStretch"),
211     (DWORD, "dwMaxLiveVideoStretch"),
212     (DWORD, "dwMinHwCodecStretch"),
213     (DWORD, "dwMaxHwCodecStretch"),
214     (DWORD, "dwReserved1"),
215     (DWORD, "dwReserved2"),
216     (DWORD, "dwReserved3"),
217     (DWORD, "dwSVBCaps"),
218     (DWORD, "dwSVBCKeyCaps"),
219     (DWORD, "dwSVBFXCaps"),
220     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
221     (DWORD, "dwVSBCaps"),
222     (DWORD, "dwVSBCKeyCaps"),
223     (DWORD, "dwVSBFXCaps"),
224     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
225     (DWORD, "dwSSBCaps"),
226     (DWORD, "dwSSBCKeyCaps"),
227     (DWORD, "dwSSBFXCaps"),
228     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
229     (DWORD, "dwReserved4"),
230     (DWORD, "dwReserved5"),
231     (DWORD, "dwReserved6"),
232 ])
233 LPDDCAPS_DX3 = Pointer(DDCAPS_DX3)
234
235 DDCAPS_DX5 = Struct("DDCAPS_DX5", [
236     (DWORD, "dwSize"),
237     (DWORD, "dwCaps"),
238     (DWORD, "dwCaps2"),
239     (DWORD, "dwCKeyCaps"),
240     (DWORD, "dwFXCaps"),
241     (DWORD, "dwFXAlphaCaps"),
242     (DWORD, "dwPalCaps"),
243     (DWORD, "dwSVCaps"),
244     (DWORD, "dwAlphaBltConstBitDepths"),
245     (DWORD, "dwAlphaBltPixelBitDepths"),
246     (DWORD, "dwAlphaBltSurfaceBitDepths"),
247     (DWORD, "dwAlphaOverlayConstBitDepths"),
248     (DWORD, "dwAlphaOverlayPixelBitDepths"),
249     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
250     (DWORD, "dwZBufferBitDepths"),
251     (DWORD, "dwVidMemTotal"),
252     (DWORD, "dwVidMemFree"),
253     (DWORD, "dwMaxVisibleOverlays"),
254     (DWORD, "dwCurrVisibleOverlays"),
255     (DWORD, "dwNumFourCCCodes"),
256     (DWORD, "dwAlignBoundarySrc"),
257     (DWORD, "dwAlignSizeSrc"),
258     (DWORD, "dwAlignBoundaryDest"),
259     (DWORD, "dwAlignSizeDest"),
260     (DWORD, "dwAlignStrideAlign"),
261     (DWORD, "dwRops[DD_ROP_SPACE]"),
262     (DDSCAPS, "ddsCaps"),
263     (DWORD, "dwMinOverlayStretch"),
264     (DWORD, "dwMaxOverlayStretch"),
265     (DWORD, "dwMinLiveVideoStretch"),
266     (DWORD, "dwMaxLiveVideoStretch"),
267     (DWORD, "dwMinHwCodecStretch"),
268     (DWORD, "dwMaxHwCodecStretch"),
269     (DWORD, "dwReserved1"),
270     (DWORD, "dwReserved2"),
271     (DWORD, "dwReserved3"),
272     (DWORD, "dwSVBCaps"),
273     (DWORD, "dwSVBCKeyCaps"),
274     (DWORD, "dwSVBFXCaps"),
275     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
276     (DWORD, "dwVSBCaps"),
277     (DWORD, "dwVSBCKeyCaps"),
278     (DWORD, "dwVSBFXCaps"),
279     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
280     (DWORD, "dwSSBCaps"),
281     (DWORD, "dwSSBCKeyCaps"),
282     (DWORD, "dwSSBFXCaps"),
283     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
284     (DWORD, "dwMaxVideoPorts"),
285     (DWORD, "dwCurrVideoPorts"),
286     (DWORD, "dwSVBCaps2"),
287     (DWORD, "dwNLVBCaps"),
288     (DWORD, "dwNLVBCaps2"),
289     (DWORD, "dwNLVBCKeyCaps"),
290     (DWORD, "dwNLVBFXCaps"),
291     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
292 ])
293 LPDDCAPS_DX5 = Pointer(DDCAPS_DX5)
294
295 DDCAPS_DX6 = Struct("DDCAPS_DX6", [
296     (DWORD, "dwSize"),
297     (DWORD, "dwCaps"),
298     (DWORD, "dwCaps2"),
299     (DWORD, "dwCKeyCaps"),
300     (DWORD, "dwFXCaps"),
301     (DWORD, "dwFXAlphaCaps"),
302     (DWORD, "dwPalCaps"),
303     (DWORD, "dwSVCaps"),
304     (DWORD, "dwAlphaBltConstBitDepths"),
305     (DWORD, "dwAlphaBltPixelBitDepths"),
306     (DWORD, "dwAlphaBltSurfaceBitDepths"),
307     (DWORD, "dwAlphaOverlayConstBitDepths"),
308     (DWORD, "dwAlphaOverlayPixelBitDepths"),
309     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
310     (DWORD, "dwZBufferBitDepths"),
311     (DWORD, "dwVidMemTotal"),
312     (DWORD, "dwVidMemFree"),
313     (DWORD, "dwMaxVisibleOverlays"),
314     (DWORD, "dwCurrVisibleOverlays"),
315     (DWORD, "dwNumFourCCCodes"),
316     (DWORD, "dwAlignBoundarySrc"),
317     (DWORD, "dwAlignSizeSrc"),
318     (DWORD, "dwAlignBoundaryDest"),
319     (DWORD, "dwAlignSizeDest"),
320     (DWORD, "dwAlignStrideAlign"),
321     (DWORD, "dwRops[DD_ROP_SPACE]"),
322     (DDSCAPS, "ddsOldCaps"),
323     (DWORD, "dwMinOverlayStretch"),
324     (DWORD, "dwMaxOverlayStretch"),
325     (DWORD, "dwMinLiveVideoStretch"),
326     (DWORD, "dwMaxLiveVideoStretch"),
327     (DWORD, "dwMinHwCodecStretch"),
328     (DWORD, "dwMaxHwCodecStretch"),
329     (DWORD, "dwReserved1"),
330     (DWORD, "dwReserved2"),
331     (DWORD, "dwReserved3"),
332     (DWORD, "dwSVBCaps"),
333     (DWORD, "dwSVBCKeyCaps"),
334     (DWORD, "dwSVBFXCaps"),
335     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
336     (DWORD, "dwVSBCaps"),
337     (DWORD, "dwVSBCKeyCaps"),
338     (DWORD, "dwVSBFXCaps"),
339     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
340     (DWORD, "dwSSBCaps"),
341     (DWORD, "dwSSBCKeyCaps"),
342     (DWORD, "dwSSBFXCaps"),
343     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
344     (DWORD, "dwMaxVideoPorts"),
345     (DWORD, "dwCurrVideoPorts"),
346     (DWORD, "dwSVBCaps2"),
347     (DWORD, "dwNLVBCaps"),
348     (DWORD, "dwNLVBCaps2"),
349     (DWORD, "dwNLVBCKeyCaps"),
350     (DWORD, "dwNLVBFXCaps"),
351     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
352     (DDSCAPS2, "ddsCaps"),
353 ])
354 LPDDCAPS_DX6 = Pointer(DDCAPS_DX6)
355
356 DDCAPS_DX7 = Struct("DDCAPS_DX7", [
357     (DWORD, "dwSize"),
358     (DWORD, "dwCaps"),
359     (DWORD, "dwCaps2"),
360     (DWORD, "dwCKeyCaps"),
361     (DWORD, "dwFXCaps"),
362     (DWORD, "dwFXAlphaCaps"),
363     (DWORD, "dwPalCaps"),
364     (DWORD, "dwSVCaps"),
365     (DWORD, "dwAlphaBltConstBitDepths"),
366     (DWORD, "dwAlphaBltPixelBitDepths"),
367     (DWORD, "dwAlphaBltSurfaceBitDepths"),
368     (DWORD, "dwAlphaOverlayConstBitDepths"),
369     (DWORD, "dwAlphaOverlayPixelBitDepths"),
370     (DWORD, "dwAlphaOverlaySurfaceBitDepths"),
371     (DWORD, "dwZBufferBitDepths"),
372     (DWORD, "dwVidMemTotal"),
373     (DWORD, "dwVidMemFree"),
374     (DWORD, "dwMaxVisibleOverlays"),
375     (DWORD, "dwCurrVisibleOverlays"),
376     (DWORD, "dwNumFourCCCodes"),
377     (DWORD, "dwAlignBoundarySrc"),
378     (DWORD, "dwAlignSizeSrc"),
379     (DWORD, "dwAlignBoundaryDest"),
380     (DWORD, "dwAlignSizeDest"),
381     (DWORD, "dwAlignStrideAlign"),
382     (DWORD, "dwRops[DD_ROP_SPACE]"),
383     (DDSCAPS, "ddsOldCaps"),
384     (DWORD, "dwMinOverlayStretch"),
385     (DWORD, "dwMaxOverlayStretch"),
386     (DWORD, "dwMinLiveVideoStretch"),
387     (DWORD, "dwMaxLiveVideoStretch"),
388     (DWORD, "dwMinHwCodecStretch"),
389     (DWORD, "dwMaxHwCodecStretch"),
390     (DWORD, "dwReserved1"),
391     (DWORD, "dwReserved2"),
392     (DWORD, "dwReserved3"),
393     (DWORD, "dwSVBCaps"),
394     (DWORD, "dwSVBCKeyCaps"),
395     (DWORD, "dwSVBFXCaps"),
396     (DWORD, "dwSVBRops[DD_ROP_SPACE]"),
397     (DWORD, "dwVSBCaps"),
398     (DWORD, "dwVSBCKeyCaps"),
399     (DWORD, "dwVSBFXCaps"),
400     (DWORD, "dwVSBRops[DD_ROP_SPACE]"),
401     (DWORD, "dwSSBCaps"),
402     (DWORD, "dwSSBCKeyCaps"),
403     (DWORD, "dwSSBFXCaps"),
404     (DWORD, "dwSSBRops[DD_ROP_SPACE]"),
405     (DWORD, "dwMaxVideoPorts"),
406     (DWORD, "dwCurrVideoPorts"),
407     (DWORD, "dwSVBCaps2"),
408     (DWORD, "dwNLVBCaps"),
409     (DWORD, "dwNLVBCaps2"),
410     (DWORD, "dwNLVBCKeyCaps"),
411     (DWORD, "dwNLVBFXCaps"),
412     (DWORD, "dwNLVBRops[DD_ROP_SPACE]"),
413     (DDSCAPS2, "ddsCaps"),
414 ])
415 LPDDCAPS_DX7 = Pointer(DDCAPS_DX7)
416 DDCAPS = DDCAPS_DX7
417 LPDDCAPS = Pointer(DDCAPS)
418
419 DDPIXELFORMAT = Struct("DDPIXELFORMAT", [
420     (DWORD, "dwSize"),
421     (DWORD, "dwFlags"),
422     (DWORD, "dwFourCC"),
423     (DWORD, "dwRGBBitCount"),
424     (DWORD, "dwYUVBitCount"),
425     (DWORD, "dwZBufferBitDepth"),
426     (DWORD, "dwAlphaBitDepth"),
427     (DWORD, "dwLuminanceBitCount"),
428     (DWORD, "dwBumpBitCount"),
429     (DWORD, "dwPrivateFormatBitCount"),
430     (DWORD, "dwRBitMask"),
431     (DWORD, "dwYBitMask"),
432     (DWORD, "dwStencilBitDepth"),
433     (DWORD, "dwLuminanceBitMask"),
434     (DWORD, "dwBumpDuBitMask"),
435     (DWORD, "dwOperations"),
436     (DWORD, "dwGBitMask"),
437     (DWORD, "dwUBitMask"),
438     (DWORD, "dwZBitMask"),
439     (DWORD, "dwBumpDvBitMask"),
440     (WORD, "MultiSampleCaps.wFlipMSTypes"),
441     (WORD, "MultiSampleCaps.wBltMSTypes"),
442     (DWORD, "dwBBitMask"),
443     (DWORD, "dwVBitMask"),
444     (DWORD, "dwStencilBitMask"),
445     (DWORD, "dwBumpLuminanceBitMask"),
446     (DWORD, "dwRGBAlphaBitMask"),
447     (DWORD, "dwYUVAlphaBitMask"),
448     (DWORD, "dwLuminanceAlphaBitMask"),
449     (DWORD, "dwRGBZBitMask"),
450     (DWORD, "dwYUVZBitMask"),
451 ])
452 LPDDPIXELFORMAT = Pointer(DDPIXELFORMAT)
453
454 DDOVERLAYFX = Struct("DDOVERLAYFX", [
455     (DWORD, "dwSize"),
456     (DWORD, "dwAlphaEdgeBlendBitDepth"),
457     (DWORD, "dwAlphaEdgeBlend"),
458     (DWORD, "dwReserved"),
459     (DWORD, "dwAlphaDestConstBitDepth"),
460     (DWORD, "dwAlphaDestConst"),
461     (LPDIRECTDRAWSURFACE, "lpDDSAlphaDest"),
462     (DWORD, "dwAlphaSrcConstBitDepth"),
463     (DWORD, "dwAlphaSrcConst"),
464     (LPDIRECTDRAWSURFACE, "lpDDSAlphaSrc"),
465     (DDCOLORKEY, "dckDestColorkey"),
466     (DDCOLORKEY, "dckSrcColorkey"),
467     (DWORD, "dwDDFX"),
468     (DWORD, "dwFlags"),
469 ])
470 LPDDOVERLAYFX = Pointer(DDOVERLAYFX)
471
472 DDBLTBATCH = Struct("DDBLTBATCH", [
473     (LPRECT, "lprDest"),
474     (LPDIRECTDRAWSURFACE, "lpDDSSrc"),
475     (LPRECT, "lprSrc"),
476     (DWORD, "dwFlags"),
477     (LPDDBLTFX, "lpDDBltFx"),
478 ])
479 LPDDBLTBATCH = Pointer(DDBLTBATCH)
480
481 DDGAMMARAMP = Struct("DDGAMMARAMP", [
482     (WORD, "red[256]"),
483     (WORD, "green[256]"),
484     (WORD, "blue[256]"),
485 ])
486 LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
487
488 DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
489     (CString, "szDriver"),
490     (CString, "szDescription"),
491     (LARGE_INTEGER, "liDriverVersion"),
492     (DWORD, "dwVendorId"),
493     (DWORD, "dwDeviceId"),
494     (DWORD, "dwSubSysId"),
495     (DWORD, "dwRevision"),
496     (GUID, "guidDeviceIdentifier"),
497 ])
498 LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
499
500 DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
501     (CString, "szDriver[MAX_DDDEVICEID_STRING]"),
502     (CString, "szDescription[MAX_DDDEVICEID_STRING]"),
503     (LARGE_INTEGER, "liDriverVersion"),
504     (DWORD, "dwVendorId"),
505     (DWORD, "dwDeviceId"),
506     (DWORD, "dwSubSysId"),
507     (DWORD, "dwRevision"),
508     (GUID, "guidDeviceIdentifier"),
509     (DWORD, "dwWHQLLevel"),
510 ])
511 LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
512
513 LPCLIPPERCALLBACK = FunctionPointer("DWORD", "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
514 LPSURFACESTREAMINGCALLBACK = FunctionPointer("DWORD", "LPSURFACESTREAMINGCALLBACK", [DWORD])
515
516 DDSURFACEDESC = Struct("DDSURFACEDESC", [
517     (DWORD, "dwSize"),
518     (DWORD, "dwFlags"),
519     (DWORD, "dwHeight"),
520     (DWORD, "dwWidth"),
521     (LONG, "lPitch"),
522     (DWORD, "dwLinearSize"),
523     (DWORD, "dwBackBufferCount"),
524     (DWORD, "dwMipMapCount"),
525     (DWORD, "dwZBufferBitDepth"),
526     (DWORD, "dwRefreshRate"),
527     (DWORD, "dwAlphaBitDepth"),
528     (DWORD, "dwReserved"),
529     (LPVOID, "lpSurface"),
530     (DDCOLORKEY, "ddckCKDestOverlay"),
531     (DDCOLORKEY, "ddckCKDestBlt"),
532     (DDCOLORKEY, "ddckCKSrcOverlay"),
533     (DDCOLORKEY, "ddckCKSrcBlt"),
534     (DDPIXELFORMAT, "ddpfPixelFormat"),
535     (DDSCAPS, "ddsCaps"),
536 ])
537 LPDDSURFACEDESC = Pointer(DDSURFACEDESC)
538
539 DDSURFACEDESC2 = Struct("DDSURFACEDESC2", [
540     (DWORD, "dwSize"),
541     (DWORD, "dwFlags"),
542     (DWORD, "dwHeight"),
543     (DWORD, "dwWidth"),
544     (LONG, "lPitch"),
545     (DWORD, "dwLinearSize"),
546     (DWORD, "dwBackBufferCount"),
547     (DWORD, "dwDepth"),
548     (DWORD, "dwMipMapCount"),
549     (DWORD, "dwRefreshRate"),
550     (DWORD, "dwSrcVBHandle"),
551     (DWORD, "dwAlphaBitDepth"),
552     (DWORD, "dwReserved"),
553     (LPVOID, "lpSurface"),
554     (DDCOLORKEY, "ddckCKDestOverlay"),
555     (DWORD, "dwEmptyFaceColor"),
556     (DDCOLORKEY, "ddckCKDestBlt"),
557     (DDCOLORKEY, "ddckCKSrcOverlay"),
558     (DDCOLORKEY, "ddckCKSrcBlt"),
559     (DDPIXELFORMAT, "ddpfPixelFormat"),
560     (DWORD, "dwFVF"),
561     (DDSCAPS2, "ddsCaps"),
562     (DWORD, "dwTextureStage"),
563 ])
564 LPDDSURFACEDESC2 = Pointer(DDSURFACEDESC2)
565
566 DDSD = Flags(DWORD, [
567     "DDSD_CAPS",
568     "DDSD_HEIGHT",
569     "DDSD_WIDTH",
570     "DDSD_PITCH",
571     "DDSD_BACKBUFFERCOUNT",
572     "DDSD_ZBUFFERBITDEPTH",
573     "DDSD_ALPHABITDEPTH",
574     "DDSD_LPSURFACE",
575     "DDSD_PIXELFORMAT",
576     "DDSD_CKDESTOVERLAY",
577     "DDSD_CKDESTBLT",
578     "DDSD_CKSRCOVERLAY",
579     "DDSD_CKSRCBLT",
580     "DDSD_MIPMAPCOUNT",
581     "DDSD_REFRESHRATE",
582     "DDSD_LINEARSIZE",
583     "DDSD_TEXTURESTAGE",
584     "DDSD_FVF",
585     "DDSD_SRCVBHANDLE",
586     "DDSD_DEPTH",
587     "DDSD_ALL",
588 ])
589
590 DDOPTSURFACEDESC = Struct("DDOPTSURFACEDESC", [
591     (DWORD, "dwSize"),
592     (DWORD, "dwFlags"),
593     (DDSCAPS2, "ddSCaps"),
594     (DDOSCAPS, "ddOSCaps"),
595     (GUID, "guid"),
596     (DWORD, "dwCompressionRatio"),
597 ])
598
599 DDSD = Flags(DWORD, [
600     "DDOSD_GUID",
601     "DDOSD_COMPRESSION_RATIO",
602     "DDOSD_SCAPS",
603     "DDOSD_OSCAPS",
604     "DDOSD_ALL",
605 ])
606
607 DDOSDCAPS = Flags(DWORD, [
608     "DDOSDCAPS_OPTCOMPRESSED",
609     "DDOSDCAPS_OPTREORDERED",
610     "DDOSDCAPS_MONOLITHICMIPMAP",
611     "DDOSDCAPS_VALIDSCAPS",
612     "DDOSDCAPS_VALIDOSCAPS",
613 ])
614
615 DDCOLORCONTROL = Struct("DDCOLORCONTROL", [
616     (DWORD, "dwSize"),
617     (DWORD, "dwFlags"),
618     (LONG, "lBrightness"),
619     (LONG, "lContrast"),
620     (LONG, "lHue"),
621     (LONG, "lSaturation"),
622     (LONG, "lSharpness"),
623     (LONG, "lGamma"),
624     (LONG, "lColorEnable"),
625     (DWORD, "dwReserved1"),
626 ])
627 LPDDCOLORCONTROL = Pointer(DDCOLORCONTROL)
628
629 DDCOLOR = Flags(DWORD, [
630     "DDCOLOR_BRIGHTNESS",
631     "DDCOLOR_CONTRAST",
632     "DDCOLOR_HUE",
633     "DDCOLOR_SATURATION",
634     "DDCOLOR_SHARPNESS",
635     "DDCOLOR_GAMMA",
636     "DDCOLOR_COLORENABLE",
637 ])
638
639 DDSCAPS = Flags(DWORD, [
640     "DDSCAPS_RESERVED1",
641     "DDSCAPS_ALPHA",
642     "DDSCAPS_BACKBUFFER",
643     "DDSCAPS_COMPLEX",
644     "DDSCAPS_FLIP",
645     "DDSCAPS_FRONTBUFFER",
646     "DDSCAPS_OFFSCREENPLAIN",
647     "DDSCAPS_OVERLAY",
648     "DDSCAPS_PALETTE",
649     "DDSCAPS_PRIMARYSURFACE",
650     "DDSCAPS_RESERVED3",
651     "DDSCAPS_PRIMARYSURFACELEFT",
652     "DDSCAPS_SYSTEMMEMORY",
653     "DDSCAPS_TEXTURE",
654     "DDSCAPS_3DDEVICE",
655     "DDSCAPS_VIDEOMEMORY",
656     "DDSCAPS_VISIBLE",
657     "DDSCAPS_WRITEONLY",
658     "DDSCAPS_ZBUFFER",
659     "DDSCAPS_OWNDC",
660     "DDSCAPS_LIVEVIDEO",
661     "DDSCAPS_HWCODEC",
662     "DDSCAPS_MODEX",
663     "DDSCAPS_MIPMAP",
664     "DDSCAPS_RESERVED2",
665     "DDSCAPS_ALLOCONLOAD",
666     "DDSCAPS_VIDEOPORT",
667     "DDSCAPS_LOCALVIDMEM",
668     "DDSCAPS_NONLOCALVIDMEM",
669     "DDSCAPS_STANDARDVGAMODE",
670     "DDSCAPS_OPTIMIZED",
671 ])
672 DDCAPS2 = Flags(DWORD, [
673     "DDSCAPS2_RESERVED4",
674     "DDSCAPS2_HARDWAREDEINTERLACE",
675     "DDSCAPS2_HINTDYNAMIC",
676     "DDSCAPS2_HINTSTATIC",
677     "DDSCAPS2_TEXTUREMANAGE",
678     "DDSCAPS2_RESERVED1",
679     "DDSCAPS2_RESERVED2",
680     "DDSCAPS2_OPAQUE",
681     "DDSCAPS2_HINTANTIALIASING",
682     "DDSCAPS2_CUBEMAP",
683     "DDSCAPS2_CUBEMAP_ALLFACES",
684     "DDSCAPS2_CUBEMAP_POSITIVEX",
685     "DDSCAPS2_CUBEMAP_NEGATIVEX",
686     "DDSCAPS2_CUBEMAP_POSITIVEY",
687     "DDSCAPS2_CUBEMAP_NEGATIVEY",
688     "DDSCAPS2_CUBEMAP_POSITIVEZ",
689     "DDSCAPS2_CUBEMAP_NEGATIVEZ",
690     "DDSCAPS2_MIPMAPSUBLEVEL",
691     "DDSCAPS2_D3DTEXTUREMANAGE",
692     "DDSCAPS2_DONOTPERSIST",
693     "DDSCAPS2_STEREOSURFACELEFT",
694     "DDSCAPS2_VOLUME",
695     "DDSCAPS2_NOTUSERLOCKABLE",
696     "DDSCAPS2_POINTS",
697     "DDSCAPS2_RTPATCHES",
698     "DDSCAPS2_NPATCHES",
699     "DDSCAPS2_RESERVED3",
700     "DDSCAPS2_DISCARDBACKBUFFER",
701     "DDSCAPS2_ENABLEALPHACHANNEL",
702     "DDSCAPS2_EXTENDEDFORMATPRIMARY",
703     "DDSCAPS2_ADDITIONALPRIMARY",
704 ])
705 DDSCAPS3 = Flags(DWORD, [
706     "DDSCAPS3_MULTISAMPLE_MASK",
707     "DDSCAPS3_MULTISAMPLE_QUALITY_MASK",
708     "DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT",
709     "DDSCAPS3_RESERVED1",
710     "DDSCAPS3_RESERVED2",
711     "DDSCAPS3_LIGHTWEIGHTMIPMAP",
712     "DDSCAPS3_AUTOGENMIPMAP",
713     "DDSCAPS3_DMAP",
714     "DDSCAPS3_CREATESHAREDRESOURCE",
715     "DDSCAPS3_READONLYRESOURCE",
716     "DDSCAPS3_OPENSHAREDRESOURCE",
717 ])
718
719 DDCAPS = Flags(DWORD, [
720     "DDCAPS_3D",
721     "DDCAPS_ALIGNBOUNDARYDEST",
722     "DDCAPS_ALIGNSIZEDEST",
723     "DDCAPS_ALIGNBOUNDARYSRC",
724     "DDCAPS_ALIGNSIZESRC",
725     "DDCAPS_ALIGNSTRIDE",
726     "DDCAPS_BLT",
727     "DDCAPS_BLTQUEUE",
728     "DDCAPS_BLTFOURCC",
729     "DDCAPS_BLTSTRETCH",
730     "DDCAPS_GDI",
731     "DDCAPS_OVERLAY",
732     "DDCAPS_OVERLAYCANTCLIP",
733     "DDCAPS_OVERLAYFOURCC",
734     "DDCAPS_OVERLAYSTRETCH",
735     "DDCAPS_PALETTE",
736     "DDCAPS_PALETTEVSYNC",
737     "DDCAPS_READSCANLINE",
738     "DDCAPS_RESERVED1",
739     "DDCAPS_VBI",
740     "DDCAPS_ZBLTS",
741     "DDCAPS_ZOVERLAYS",
742     "DDCAPS_COLORKEY",
743     "DDCAPS_ALPHA",
744     "DDCAPS_COLORKEYHWASSIST",
745     "DDCAPS_NOHARDWARE",
746     "DDCAPS_BLTCOLORFILL",
747     "DDCAPS_BANKSWITCHED",
748     "DDCAPS_BLTDEPTHFILL",
749     "DDCAPS_CANCLIP",
750     "DDCAPS_CANCLIPSTRETCHED",
751     "DDCAPS_CANBLTSYSMEM",
752 ])
753
754 DDCAPS2 = Flags(DWORD, [
755     "DDCAPS2_CERTIFIED",
756     "DDCAPS2_NO2DDURING3DSCENE",
757     "DDCAPS2_VIDEOPORT",
758     "DDCAPS2_AUTOFLIPOVERLAY",
759     "DDCAPS2_CANBOBINTERLEAVED",
760     "DDCAPS2_CANBOBNONINTERLEAVED",
761     "DDCAPS2_COLORCONTROLOVERLAY",
762     "DDCAPS2_COLORCONTROLPRIMARY",
763     "DDCAPS2_CANDROPZ16BIT",
764     "DDCAPS2_NONLOCALVIDMEM",
765     "DDCAPS2_NONLOCALVIDMEMCAPS",
766     "DDCAPS2_NOPAGELOCKREQUIRED",
767     "DDCAPS2_WIDESURFACES",
768     "DDCAPS2_CANFLIPODDEVEN",
769     "DDCAPS2_CANBOBHARDWARE",
770     "DDCAPS2_COPYFOURCC",
771     "DDCAPS2_PRIMARYGAMMA",
772     "DDCAPS2_CANRENDERWINDOWED",
773     "DDCAPS2_CANCALIBRATEGAMMA",
774     "DDCAPS2_FLIPINTERVAL",
775     "DDCAPS2_FLIPNOVSYNC",
776     "DDCAPS2_CANMANAGETEXTURE",
777     "DDCAPS2_TEXMANINNONLOCALVIDMEM",
778     "DDCAPS2_STEREO",
779     "DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL",
780     "DDCAPS2_RESERVED1",
781     "DDCAPS2_CANMANAGERESOURCE",
782     "DDCAPS2_DYNAMICTEXTURES",
783     "DDCAPS2_CANAUTOGENMIPMAP",
784     "DDCAPS2_CANSHARERESOURCE",
785 ])
786
787 DDFXALPHACAPS = Flags(DWORD, [
788     "DDFXALPHACAPS_BLTALPHAEDGEBLEND",
789     "DDFXALPHACAPS_BLTALPHAPIXELS",
790     "DDFXALPHACAPS_BLTALPHAPIXELSNEG",
791     "DDFXALPHACAPS_BLTALPHASURFACES",
792     "DDFXALPHACAPS_BLTALPHASURFACESNEG",
793     "DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND",
794     "DDFXALPHACAPS_OVERLAYALPHAPIXELS",
795     "DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG",
796     "DDFXALPHACAPS_OVERLAYALPHASURFACES",
797     "DDFXALPHACAPS_OVERLAYALPHASURFACESNEG",
798 ])
799
800 DDFXCAPS = Flags(DWORD, [
801     "DDFXCAPS_BLTARITHSTRETCHY",
802     "DDFXCAPS_BLTARITHSTRETCHYN",
803     "DDFXCAPS_BLTMIRRORLEFTRIGHT",
804     "DDFXCAPS_BLTMIRRORUPDOWN",
805     "DDFXCAPS_BLTROTATION",
806     "DDFXCAPS_BLTROTATION90",
807     "DDFXCAPS_BLTSHRINKX",
808     "DDFXCAPS_BLTSHRINKXN",
809     "DDFXCAPS_BLTSHRINKY",
810     "DDFXCAPS_BLTSHRINKYN",
811     "DDFXCAPS_BLTSTRETCHX",
812     "DDFXCAPS_BLTSTRETCHXN",
813     "DDFXCAPS_BLTSTRETCHY",
814     "DDFXCAPS_BLTSTRETCHYN",
815     "DDFXCAPS_OVERLAYARITHSTRETCHY",
816     "DDFXCAPS_OVERLAYARITHSTRETCHYN",
817     "DDFXCAPS_OVERLAYSHRINKX",
818     "DDFXCAPS_OVERLAYSHRINKXN",
819     "DDFXCAPS_OVERLAYSHRINKY",
820     "DDFXCAPS_OVERLAYSHRINKYN",
821     "DDFXCAPS_OVERLAYSTRETCHX",
822     "DDFXCAPS_OVERLAYSTRETCHXN",
823     "DDFXCAPS_OVERLAYSTRETCHY",
824     "DDFXCAPS_OVERLAYSTRETCHYN",
825     "DDFXCAPS_OVERLAYMIRRORLEFTRIGHT",
826     "DDFXCAPS_OVERLAYMIRRORUPDOWN",
827     "DDFXCAPS_OVERLAYDEINTERLACE",
828     "DDFXCAPS_BLTALPHA",
829     "DDFXCAPS_BLTFILTER",
830     "DDFXCAPS_OVERLAYALPHA",
831     "DDFXCAPS_OVERLAYFILTER",
832 ])
833
834 DDSVCAPS = Flags(DWORD, [
835     "DDSVCAPS_RESERVED1",
836     "DDSVCAPS_RESERVED2",
837     "DDSVCAPS_RESERVED3",
838     "DDSVCAPS_RESERVED4",
839     "DDSVCAPS_STEREOSEQUENTIAL",
840 ])
841
842 DDPCAPS = Flags(DWORD, [
843     "DDPCAPS_4BIT",
844     "DDPCAPS_8BITENTRIES",
845     "DDPCAPS_8BIT",
846     "DDPCAPS_INITIALIZE",
847     "DDPCAPS_PRIMARYSURFACE",
848     "DDPCAPS_PRIMARYSURFACELEFT",
849     "DDPCAPS_ALLOW256",
850     "DDPCAPS_VSYNC",
851     "DDPCAPS_1BIT",
852     "DDPCAPS_2BIT",
853     "DDPCAPS_ALPHA",
854 ])
855
856 DDSPD = Flags(DWORD, [
857     "DDSPD_IUNKNOWNPOINTER",
858     "DDSPD_VOLATILE",
859 ])
860
861 DDBD = Flags(DWORD, [
862     "DDBD_1",
863     "DDBD_2",
864     "DDBD_4",
865     "DDBD_8",
866     "DDBD_16",
867     "DDBD_24",
868     "DDBD_32",
869 ])
870
871 DDCKEY = Flags(DWORD, [
872     "DDCKEY_COLORSPACE",
873     "DDCKEY_DESTBLT",
874     "DDCKEY_DESTOVERLAY",
875     "DDCKEY_SRCBLT",
876     "DDCKEY_SRCOVERLAY",
877 ])
878
879 DDCKEYCAPS = Flags(DWORD, [
880     "DDCKEYCAPS_DESTBLT",
881     "DDCKEYCAPS_DESTBLTCLRSPACE",
882     "DDCKEYCAPS_DESTBLTCLRSPACEYUV",
883     "DDCKEYCAPS_DESTBLTYUV",
884     "DDCKEYCAPS_DESTOVERLAY",
885     "DDCKEYCAPS_DESTOVERLAYCLRSPACE",
886     "DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV",
887     "DDCKEYCAPS_DESTOVERLAYONEACTIVE",
888     "DDCKEYCAPS_DESTOVERLAYYUV",
889     "DDCKEYCAPS_SRCBLT",
890     "DDCKEYCAPS_SRCBLTCLRSPACE",
891     "DDCKEYCAPS_SRCBLTCLRSPACEYUV",
892     "DDCKEYCAPS_SRCBLTYUV",
893     "DDCKEYCAPS_SRCOVERLAY",
894     "DDCKEYCAPS_SRCOVERLAYCLRSPACE",
895     "DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV",
896     "DDCKEYCAPS_SRCOVERLAYONEACTIVE",
897     "DDCKEYCAPS_SRCOVERLAYYUV",
898     "DDCKEYCAPS_NOCOSTOVERLAY",
899 ])
900
901 DDPF = Flags(DWORD, [
902     "DDPF_ALPHAPIXELS",
903     "DDPF_ALPHA",
904     "DDPF_FOURCC",
905     "DDPF_PALETTEINDEXED4",
906     "DDPF_PALETTEINDEXEDTO8",
907     "DDPF_PALETTEINDEXED8",
908     "DDPF_RGB",
909     "DDPF_COMPRESSED",
910     "DDPF_RGBTOYUV",
911     "DDPF_YUV",
912     "DDPF_ZBUFFER",
913     "DDPF_PALETTEINDEXED1",
914     "DDPF_PALETTEINDEXED2",
915     "DDPF_ZPIXELS",
916     "DDPF_STENCILBUFFER",
917     "DDPF_ALPHAPREMULT",
918     "DDPF_LUMINANCE",
919     "DDPF_BUMPLUMINANCE",
920     "DDPF_BUMPDUDV",
921 ])
922
923 DDENUMSURFACES = Flags(DWORD, [
924     "DDENUMSURFACES_ALL",
925     "DDENUMSURFACES_MATCH",
926     "DDENUMSURFACES_NOMATCH",
927     "DDENUMSURFACES_CANBECREATED",
928     "DDENUMSURFACES_DOESEXIST",
929 ])
930
931 DDSDM = Flags(DWORD, [
932     "DDSDM_STANDARDVGAMODE",
933 ])
934
935 DDEDM = Flags(DWORD, [
936     "DDEDM_REFRESHRATES",
937     "DDEDM_STANDARDVGAMODES",
938 ])
939
940 DDSCL = Flags(DWORD, [
941     "DDSCL_FULLSCREEN",
942     "DDSCL_ALLOWREBOOT",
943     "DDSCL_NOWINDOWCHANGES",
944     "DDSCL_NORMAL",
945     "DDSCL_EXCLUSIVE",
946     "DDSCL_ALLOWMODEX",
947     "DDSCL_SETFOCUSWINDOW",
948     "DDSCL_SETDEVICEWINDOW",
949     "DDSCL_CREATEDEVICEWINDOW",
950     "DDSCL_MULTITHREADED",
951     "DDSCL_FPUSETUP",
952     "DDSCL_FPUPRESERVE",
953 ])
954
955 DDBLT = Flags(DWORD, [
956     "DDBLT_ALPHADEST",
957     "DDBLT_ALPHADESTCONSTOVERRIDE",
958     "DDBLT_ALPHADESTNEG",
959     "DDBLT_ALPHADESTSURFACEOVERRIDE",
960     "DDBLT_ALPHAEDGEBLEND",
961     "DDBLT_ALPHASRC",
962     "DDBLT_ALPHASRCCONSTOVERRIDE",
963     "DDBLT_ALPHASRCNEG",
964     "DDBLT_ALPHASRCSURFACEOVERRIDE",
965     "DDBLT_ASYNC",
966     "DDBLT_COLORFILL",
967     "DDBLT_DDFX",
968     "DDBLT_DDROPS",
969     "DDBLT_KEYDEST",
970     "DDBLT_KEYDESTOVERRIDE",
971     "DDBLT_KEYSRC",
972     "DDBLT_KEYSRCOVERRIDE",
973     "DDBLT_ROP",
974     "DDBLT_ROTATIONANGLE",
975     "DDBLT_ZBUFFER",
976     "DDBLT_ZBUFFERDESTCONSTOVERRIDE",
977     "DDBLT_ZBUFFERDESTOVERRIDE",
978     "DDBLT_ZBUFFERSRCCONSTOVERRIDE",
979     "DDBLT_ZBUFFERSRCOVERRIDE",
980     "DDBLT_WAIT",
981     "DDBLT_DEPTHFILL",
982     "DDBLT_DONOTWAIT",
983     "DDBLT_PRESENTATION",
984     "DDBLT_LAST_PRESENTATION",
985     "DDBLT_EXTENDED_FLAGS",
986     "DDBLT_EXTENDED_LINEAR_CONTENT",
987 ])
988
989 DDBLTFAST = Flags(DWORD, [
990     "DDBLTFAST_NOCOLORKEY",
991     "DDBLTFAST_SRCCOLORKEY",
992     "DDBLTFAST_DESTCOLORKEY",
993     "DDBLTFAST_WAIT",
994     "DDBLTFAST_DONOTWAIT",
995 ])
996
997 DDFLIP = Flags(DWORD, [
998     "DDFLIP_WAIT",
999     "DDFLIP_EVEN",
1000     "DDFLIP_ODD",
1001     "DDFLIP_NOVSYNC",
1002     "DDFLIP_INTERVAL2",
1003     "DDFLIP_INTERVAL3",
1004     "DDFLIP_INTERVAL4",
1005     "DDFLIP_STEREO",
1006     "DDFLIP_DONOTWAIT",
1007 ])
1008
1009 DDOVER = Flags(DWORD, [
1010     "DDOVER_ALPHADEST",
1011     "DDOVER_ALPHADESTCONSTOVERRIDE",
1012     "DDOVER_ALPHADESTNEG",
1013     "DDOVER_ALPHADESTSURFACEOVERRIDE",
1014     "DDOVER_ALPHAEDGEBLEND",
1015     "DDOVER_ALPHASRC",
1016     "DDOVER_ALPHASRCCONSTOVERRIDE",
1017     "DDOVER_ALPHASRCNEG",
1018     "DDOVER_ALPHASRCSURFACEOVERRIDE",
1019     "DDOVER_HIDE",
1020     "DDOVER_KEYDEST",
1021     "DDOVER_KEYDESTOVERRIDE",
1022     "DDOVER_KEYSRC",
1023     "DDOVER_KEYSRCOVERRIDE",
1024     "DDOVER_SHOW",
1025     "DDOVER_ADDDIRTYRECT",
1026     "DDOVER_REFRESHDIRTYRECTS",
1027     "DDOVER_REFRESHALL",
1028     "DDOVER_DDFX",
1029     "DDOVER_AUTOFLIP",
1030     "DDOVER_BOB",
1031     "DDOVER_OVERRIDEBOBWEAVE",
1032     "DDOVER_INTERLEAVED",
1033     "DDOVER_BOBHARDWARE",
1034     "DDOVER_ARGBSCALEFACTORS",
1035     "DDOVER_DEGRADEARGBSCALING",
1036 ])
1037
1038 DDSETSURFACEDESC = Flags(DWORD, [
1039     #"DDSETSURFACEDESC_RECREATEDC",
1040     #"DDSETSURFACEDESC_PRESERVEDC",
1041 ])
1042
1043 DDLOCK = Flags(DWORD, [
1044     "DDLOCK_SURFACEMEMORYPTR",
1045     "DDLOCK_WAIT",
1046     "DDLOCK_EVENT",
1047     "DDLOCK_READONLY",
1048     "DDLOCK_WRITEONLY",
1049     "DDLOCK_NOSYSLOCK",
1050     "DDLOCK_NOOVERWRITE",
1051     "DDLOCK_DISCARDCONTENTS",
1052     "DDLOCK_OKTOSWAP",
1053     "DDLOCK_DONOTWAIT",
1054     "DDLOCK_HASVOLUMETEXTUREBOXRECT",
1055     "DDLOCK_NODIRTYUPDATE",
1056 ])
1057
1058 DDBLTFX = Flags(DWORD, [
1059     "DDBLTFX_ARITHSTRETCHY",
1060     "DDBLTFX_MIRRORLEFTRIGHT",
1061     "DDBLTFX_MIRRORUPDOWN",
1062     "DDBLTFX_NOTEARING",
1063     "DDBLTFX_ROTATE180",
1064     "DDBLTFX_ROTATE270",
1065     "DDBLTFX_ROTATE90",
1066     "DDBLTFX_ZBUFFERRANGE",
1067     "DDBLTFX_ZBUFFERBASEDEST",
1068 ])
1069
1070 DDOVERFX = Flags(DWORD, [
1071     "DDOVERFX_ARITHSTRETCHY",
1072     "DDOVERFX_MIRRORLEFTRIGHT",
1073     "DDOVERFX_MIRRORUPDOWN",
1074     "DDOVERFX_DEINTERLACE",
1075 ])
1076
1077 DDWAITVB = Flags(DWORD, [
1078     "DDWAITVB_BLOCKBEGIN",
1079     "DDWAITVB_BLOCKBEGINEVENT",
1080     "DDWAITVB_BLOCKEND",
1081 ])
1082
1083 DDGFS = Flags(DWORD, [
1084     "DDGFS_CANFLIP",
1085     "DDGFS_ISFLIPDONE",
1086 ])
1087
1088 DDGBS = Flags(DWORD, [
1089     "DDGBS_CANBLT",
1090     "DDGBS_ISBLTDONE",
1091 ])
1092
1093 DDENUMOVERLAYZ = Flags(DWORD, [
1094     "DDENUMOVERLAYZ_BACKTOFRONT",
1095     "DDENUMOVERLAYZ_FRONTTOBACK",
1096 ])
1097
1098 DDOVERZ = Flags(DWORD, [
1099     "DDOVERZ_SENDTOFRONT",
1100     "DDOVERZ_SENDTOBACK",
1101     "DDOVERZ_MOVEFORWARD",
1102     "DDOVERZ_MOVEBACKWARD",
1103     "DDOVERZ_INSERTINFRONTOF",
1104     "DDOVERZ_INSERTINBACKOF",
1105 ])
1106
1107 DDSGR = Flags(DWORD, [
1108     "DDSGR_CALIBRATE",
1109 ])
1110
1111 DDSMT = Flags(DWORD, [
1112     "DDSMT_ISTESTREQUIRED",
1113 ])
1114
1115 DDEM = Flags(DWORD, [
1116     "DDEM_MODEPASSED",
1117     "DDEM_MODEFAILED",
1118 ])
1119
1120 HRESULT = Enum("HRESULT", [
1121     "DD_OK",
1122     "DD_FALSE",
1123     "DDERR_ALREADYINITIALIZED",
1124     "DDERR_CANNOTATTACHSURFACE",
1125     "DDERR_CANNOTDETACHSURFACE",
1126     "DDERR_CURRENTLYNOTAVAIL",
1127     "DDERR_EXCEPTION",
1128     "DDERR_GENERIC",
1129     "DDERR_HEIGHTALIGN",
1130     "DDERR_INCOMPATIBLEPRIMARY",
1131     "DDERR_INVALIDCAPS",
1132     "DDERR_INVALIDCLIPLIST",
1133     "DDERR_INVALIDMODE",
1134     "DDERR_INVALIDOBJECT",
1135     "DDERR_INVALIDPARAMS",
1136     "DDERR_INVALIDPIXELFORMAT",
1137     "DDERR_INVALIDRECT",
1138     "DDERR_LOCKEDSURFACES",
1139     "DDERR_NO3D",
1140     "DDERR_NOALPHAHW",
1141     "DDERR_NOSTEREOHARDWARE",
1142     "DDERR_NOSURFACELEFT",
1143     "DDERR_NOCLIPLIST",
1144     "DDERR_NOCOLORCONVHW",
1145     "DDERR_NOCOOPERATIVELEVELSET",
1146     "DDERR_NOCOLORKEY",
1147     "DDERR_NOCOLORKEYHW",
1148     "DDERR_NODIRECTDRAWSUPPORT",
1149     "DDERR_NOEXCLUSIVEMODE",
1150     "DDERR_NOFLIPHW",
1151     "DDERR_NOGDI",
1152     "DDERR_NOMIRRORHW",
1153     "DDERR_NOTFOUND",
1154     "DDERR_NOOVERLAYHW",
1155     "DDERR_OVERLAPPINGRECTS",
1156     "DDERR_NORASTEROPHW",
1157     "DDERR_NOROTATIONHW",
1158     "DDERR_NOSTRETCHHW",
1159     "DDERR_NOT4BITCOLOR",
1160     "DDERR_NOT4BITCOLORINDEX",
1161     "DDERR_NOT8BITCOLOR",
1162     "DDERR_NOTEXTUREHW",
1163     "DDERR_NOVSYNCHW",
1164     "DDERR_NOZBUFFERHW",
1165     "DDERR_NOZOVERLAYHW",
1166     "DDERR_OUTOFCAPS",
1167     "DDERR_OUTOFMEMORY",
1168     "DDERR_OUTOFVIDEOMEMORY",
1169     "DDERR_OVERLAYCANTCLIP",
1170     "DDERR_OVERLAYCOLORKEYONLYONEACTIVE",
1171     "DDERR_PALETTEBUSY",
1172     "DDERR_COLORKEYNOTSET",
1173     "DDERR_SURFACEALREADYATTACHED",
1174     "DDERR_SURFACEALREADYDEPENDENT",
1175     "DDERR_SURFACEBUSY",
1176     "DDERR_CANTLOCKSURFACE",
1177     "DDERR_SURFACEISOBSCURED",
1178     "DDERR_SURFACELOST",
1179     "DDERR_SURFACENOTATTACHED",
1180     "DDERR_TOOBIGHEIGHT",
1181     "DDERR_TOOBIGSIZE",
1182     "DDERR_TOOBIGWIDTH",
1183     "DDERR_UNSUPPORTED",
1184     "DDERR_UNSUPPORTEDFORMAT",
1185     "DDERR_UNSUPPORTEDMASK",
1186     "DDERR_INVALIDSTREAM",
1187     "DDERR_VERTICALBLANKINPROGRESS",
1188     "DDERR_WASSTILLDRAWING",
1189     "DDERR_DDSCAPSCOMPLEXREQUIRED",
1190     "DDERR_XALIGN",
1191     "DDERR_INVALIDDIRECTDRAWGUID",
1192     "DDERR_DIRECTDRAWALREADYCREATED",
1193     "DDERR_NODIRECTDRAWHW",
1194     "DDERR_PRIMARYSURFACEALREADYEXISTS",
1195     "DDERR_NOEMULATION",
1196     "DDERR_REGIONTOOSMALL",
1197     "DDERR_CLIPPERISUSINGHWND",
1198     "DDERR_NOCLIPPERATTACHED",
1199     "DDERR_NOHWND",
1200     "DDERR_HWNDSUBCLASSED",
1201     "DDERR_HWNDALREADYSET",
1202     "DDERR_NOPALETTEATTACHED",
1203     "DDERR_NOPALETTEHW",
1204     "DDERR_BLTFASTCANTCLIP",
1205     "DDERR_NOBLTHW",
1206     "DDERR_NODDROPSHW",
1207     "DDERR_OVERLAYNOTVISIBLE",
1208     "DDERR_NOOVERLAYDEST",
1209     "DDERR_INVALIDPOSITION",
1210     "DDERR_NOTAOVERLAYSURFACE",
1211     "DDERR_EXCLUSIVEMODEALREADYSET",
1212     "DDERR_NOTFLIPPABLE",
1213     "DDERR_CANTDUPLICATE",
1214     "DDERR_NOTLOCKED",
1215     "DDERR_CANTCREATEDC",
1216     "DDERR_NODC",
1217     "DDERR_WRONGMODE",
1218     "DDERR_IMPLICITLYCREATED",
1219     "DDERR_NOTPALETTIZED",
1220     "DDERR_UNSUPPORTEDMODE",
1221     "DDERR_NOMIPMAPHW",
1222     "DDERR_INVALIDSURFACETYPE",
1223     "DDERR_NOOPTIMIZEHW",
1224     "DDERR_NOTLOADED",
1225     "DDERR_NOFOCUSWINDOW",
1226     "DDERR_NOTONMIPMAPSUBLEVEL",
1227     "DDERR_DCALREADYCREATED",
1228     "DDERR_NONONLOCALVIDMEM",
1229     "DDERR_CANTPAGELOCK",
1230     "DDERR_CANTPAGEUNLOCK",
1231     "DDERR_NOTPAGELOCKED",
1232     "DDERR_MOREDATA",
1233     "DDERR_EXPIRED",
1234     "DDERR_TESTFINISHED",
1235     "DDERR_NEWMODE",
1236     "DDERR_D3DNOTINITIALIZED",
1237     "DDERR_VIDEONOTACTIVE",
1238     "DDERR_NOMONITORINFORMATION",
1239     "DDERR_NODRIVERSUPPORT",
1240     "DDERR_DEVICEDOESNTOWNSURFACE",
1241     "DDERR_NOTINITIALIZED",
1242 ])
1243
1244 LPDDENUMMODESCALLBACK     = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
1245 LPDDENUMMODESCALLBACK2    = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
1246 LPDDENUMSURFACESCALLBACK  = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
1247 LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
1248 LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
1249
1250 IDirectDraw.methods += [
1251     Method(HRESULT, "Compact", []),
1252     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER), Pointer(IUnknown)]),
1253     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
1254     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown)]),
1255     Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE)]),
1256     Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK]),
1257     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK]),
1258     Method(HRESULT, "FlipToGDISurface", []),
1259     Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
1260     Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC]),
1261     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
1262     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE)]),
1263     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1264     Method(HRESULT, "GetScanLine", [LPDWORD]),
1265     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
1266     Method(HRESULT, "Initialize", [Pointer(GUID)]),
1267     Method(HRESULT, "RestoreDisplayMode", []),
1268     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1269     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD]),
1270     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
1271 ]
1272
1273 IDirectDraw2.methods += [
1274     Method(HRESULT, "Compact", []),
1275     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
1276     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
1277     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown)]),
1278     Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE)]),
1279     Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK]),
1280     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK]),
1281     Method(HRESULT, "FlipToGDISurface", []),
1282     Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
1283     Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC]),
1284     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
1285     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE)]),
1286     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1287     Method(HRESULT, "GetScanLine", [LPDWORD]),
1288     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
1289     Method(HRESULT, "Initialize", [Pointer(GUID)]),
1290     Method(HRESULT, "RestoreDisplayMode", []),
1291     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1292     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1293     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
1294     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS, LPDWORD, LPDWORD]),
1295 ]
1296
1297 IDirectDraw4.methods += [
1298     Method(HRESULT, "Compact", []),
1299     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
1300     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
1301     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE4) , Pointer(IUnknown)]),
1302     Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE4, Pointer(LPDIRECTDRAWSURFACE4)]),
1303     Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2]),
1304     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2]),
1305     Method(HRESULT, "FlipToGDISurface", []),
1306     Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
1307     Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC2]),
1308     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
1309     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE4)]),
1310     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1311     Method(HRESULT, "GetScanLine", [LPDWORD]),
1312     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
1313     Method(HRESULT, "Initialize", [Pointer(GUID)]),
1314     Method(HRESULT, "RestoreDisplayMode", []),
1315     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1316     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1317     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
1318     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
1319     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE4)]),
1320     Method(HRESULT, "RestoreAllSurfaces", []),
1321     Method(HRESULT, "TestCooperativeLevel", []),
1322     Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER, DWORD]),
1323 ]
1324
1325 IDirectDraw7.methods += [
1326     Method(HRESULT, "Compact", []),
1327     Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
1328     Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
1329     Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE7) , Pointer(IUnknown)]),
1330     Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE7, Pointer(LPDIRECTDRAWSURFACE7)]),
1331     Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2]),
1332     Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7]),
1333     Method(HRESULT, "FlipToGDISurface", []),
1334     Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
1335     Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC2]),
1336     Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
1337     Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE7)]),
1338     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
1339     Method(HRESULT, "GetScanLine", [LPDWORD]),
1340     Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
1341     Method(HRESULT, "Initialize", [Pointer(GUID)]),
1342     Method(HRESULT, "RestoreDisplayMode", []),
1343     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
1344     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
1345     Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
1346     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
1347     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE7)]),
1348     Method(HRESULT, "RestoreAllSurfaces", []),
1349     Method(HRESULT, "TestCooperativeLevel", []),
1350     Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER2, DWORD]),
1351     Method(HRESULT, "StartModeTest", [LPSIZE, DWORD, DWORD]),
1352     Method(HRESULT, "EvaluateMode", [DWORD, Pointer(DWORD)]),
1353 ]
1354
1355 IDirectDrawPalette.methods += [
1356     Method(HRESULT, "GetCaps", [LPDWORD]),
1357     Method(HRESULT, "GetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]),
1358     Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD, LPPALETTEENTRY]),
1359     Method(HRESULT, "SetEntries", [DWORD,DWORD,DWORD,LPPALETTEENTRY]),
1360 ]
1361
1362 IDirectDrawClipper.methods += [
1363     Method(HRESULT, "GetClipList", [LPRECT, LPRGNDATA, LPDWORD]),
1364     Method(HRESULT, "GetHWnd", [Pointer(HWND)]),
1365     Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD]),
1366     Method(HRESULT, "IsClipListChanged", [Pointer(BOOL)]),
1367     Method(HRESULT, "SetClipList", [LPRGNDATA,DWORD]),
1368     Method(HRESULT, "SetHWnd", [DWORD, HWND]),
1369 ]
1370
1371
1372 IDirectDrawSurface.methods += [
1373     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE]),
1374     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1375     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX]),
1376     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
1377     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD]),
1378     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE]),
1379     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1380     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1381     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE, DWORD]),
1382     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE)]),
1383     Method(HRESULT, "GetBltStatus", [DWORD]),
1384     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1385     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
1386     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1387     Method(HRESULT, "GetDC", [Pointer(HDC)]),
1388     Method(HRESULT, "GetFlipStatus", [DWORD]),
1389     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
1390     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
1391     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1392     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1393     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1394     Method(HRESULT, "IsLost", []),
1395     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1396     Method(HRESULT, "ReleaseDC", [HDC]),
1397     Method(HRESULT, "Restore", []),
1398     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1399     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1400     Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
1401     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1402     Method(HRESULT, "Unlock", [LPVOID]),
1403     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX]),
1404     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1405     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE]),
1406 ]
1407
1408 IDirectDrawSurface2.methods += [
1409     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE2]),
1410     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1411     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX]),
1412     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
1413     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD]),
1414     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE2]),
1415     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1416     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1417     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE2, DWORD]),
1418     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE2)]),
1419     Method(HRESULT, "GetBltStatus", [DWORD]),
1420     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1421     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
1422     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1423     Method(HRESULT, "GetDC", [Pointer(HDC)]),
1424     Method(HRESULT, "GetFlipStatus", [DWORD]),
1425     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
1426     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
1427     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1428     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1429     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1430     Method(HRESULT, "IsLost", []),
1431     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1432     Method(HRESULT, "ReleaseDC", [HDC]),
1433     Method(HRESULT, "Restore", []),
1434     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1435     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1436     Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
1437     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1438     Method(HRESULT, "Unlock", [LPVOID]),
1439     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX]),
1440     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1441     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE2]),
1442     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
1443     Method(HRESULT, "PageLock", [DWORD]),
1444     Method(HRESULT, "PageUnlock", [DWORD]),
1445 ]
1446
1447 IDirectDrawSurface3.methods += [
1448     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE3]),
1449     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1450     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX]),
1451     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
1452     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD]),
1453     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE3]),
1454     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
1455     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
1456     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE3, DWORD]),
1457     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE3)]),
1458     Method(HRESULT, "GetBltStatus", [DWORD]),
1459     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
1460     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
1461     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1462     Method(HRESULT, "GetDC", [Pointer(HDC)]),
1463     Method(HRESULT, "GetFlipStatus", [DWORD]),
1464     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
1465     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
1466     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1467     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
1468     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
1469     Method(HRESULT, "IsLost", []),
1470     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC,DWORD,HANDLE]),
1471     Method(HRESULT, "ReleaseDC", [HDC]),
1472     Method(HRESULT, "Restore", []),
1473     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1474     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1475     Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
1476     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1477     Method(HRESULT, "Unlock", [LPVOID]),
1478     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX]),
1479     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1480     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE3]),
1481     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
1482     Method(HRESULT, "PageLock", [DWORD]),
1483     Method(HRESULT, "PageUnlock", [DWORD]),
1484     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC, DWORD]),
1485 ]
1486
1487 IDirectDrawSurface4.methods += [
1488     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE4]),
1489     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1490     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX]),
1491     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
1492     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD]),
1493     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE4]),
1494     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK2]),
1495     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2]),
1496     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE4, DWORD]),
1497     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE4)]),
1498     Method(HRESULT, "GetBltStatus", [DWORD]),
1499     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
1500     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
1501     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1502     Method(HRESULT, "GetDC", [Pointer(HDC)]),
1503     Method(HRESULT, "GetFlipStatus", [DWORD]),
1504     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
1505     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
1506     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1507     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
1508     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
1509     Method(HRESULT, "IsLost", []),
1510     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]),
1511     Method(HRESULT, "ReleaseDC", [HDC]),
1512     Method(HRESULT, "Restore", []),
1513     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1514     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1515     Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
1516     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1517     Method(HRESULT, "Unlock", [LPRECT]),
1518     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX]),
1519     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1520     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE4]),
1521     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
1522     Method(HRESULT, "PageLock", [DWORD]),
1523     Method(HRESULT, "PageUnlock", [DWORD]),
1524     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
1525     Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]),
1526     Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]),
1527     Method(HRESULT, "FreePrivateData", [REFGUID]),
1528     Method(HRESULT, "GetUniquenessValue", [LPDWORD]),
1529     Method(HRESULT, "ChangeUniquenessValue", []),
1530 ]
1531
1532 IDirectDrawSurface7.methods += [
1533     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE7]),
1534     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
1535     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX]),
1536     Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
1537     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD]),
1538     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE7]),
1539     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK7]),
1540     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7]),
1541     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE7, DWORD]),
1542     Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE7)]),
1543     Method(HRESULT, "GetBltStatus", [DWORD]),
1544     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
1545     Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
1546     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
1547     Method(HRESULT, "GetDC", [Pointer(HDC)]),
1548     Method(HRESULT, "GetFlipStatus", [DWORD]),
1549     Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
1550     Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
1551     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
1552     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
1553     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
1554     Method(HRESULT, "IsLost", []),
1555     Method(HRESULT, "Lock", [LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE]),
1556     Method(HRESULT, "ReleaseDC", [HDC]),
1557     Method(HRESULT, "Restore", []),
1558     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
1559     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
1560     Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
1561     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
1562     Method(HRESULT, "Unlock", [LPRECT]),
1563     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX]),
1564     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
1565     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE7]),
1566     Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
1567     Method(HRESULT, "PageLock", [DWORD]),
1568     Method(HRESULT, "PageUnlock", [DWORD]),
1569     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
1570     Method(HRESULT, "SetPrivateData", [REFGUID, LPVOID, DWORD, DWORD]),
1571     Method(HRESULT, "GetPrivateData", [REFGUID, LPVOID, LPDWORD]),
1572     Method(HRESULT, "FreePrivateData", [REFGUID]),
1573     Method(HRESULT, "GetUniquenessValue", [LPDWORD]),
1574     Method(HRESULT, "ChangeUniquenessValue", []),
1575     Method(HRESULT, "SetPriority", [DWORD]),
1576     Method(HRESULT, "GetPriority", [LPDWORD]),
1577     Method(HRESULT, "SetLOD", [DWORD]),
1578     Method(HRESULT, "GetLOD", [LPDWORD]),
1579 ]
1580
1581 IDirectDrawColorControl.methods += [
1582     Method(HRESULT, "GetColorControls", [LPDDCOLORCONTROL]),
1583     Method(HRESULT, "SetColorControls", [LPDDCOLORCONTROL]),
1584 ]
1585
1586 IDirectDrawGammaControl.methods += [
1587     Method(HRESULT, "GetGammaRamp", [DWORD, LPDDGAMMARAMP]),
1588     Method(HRESULT, "SetGammaRamp", [DWORD, LPDDGAMMARAMP]),
1589 ]
1590
1591 LPDDENUMCALLBACKA   = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
1592 LPDDENUMCALLBACKW   = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
1593 LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
1594 LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
1595
1596 DDENUM = Flags(DWORD, [
1597     "DDENUM_ATTACHEDSECONDARYDEVICES",
1598     "DDENUM_DETACHEDSECONDARYDEVICES",
1599     "DDENUM_NONDISPLAYDEVICES",
1600 ])
1601
1602 DDCREATE = Flags(DWORD, [
1603     "DDCREATE_HARDWAREONLY",
1604     "DDCREATE_EMULATIONONLY",
1605 ])
1606
1607 ddraw = API("ddraw")
1608 ddraw.add_functions([
1609     StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
1610     StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
1611     StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
1612     StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
1613     StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
1614     StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
1615     StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
1616     StdFunction(Void, "AcquireDDThreadLock", []),
1617     StdFunction(Void, "ReleaseDDThreadLock", []),
1618     StdFunction(DWORD, "D3DParseUnknownCommand", [(LPVOID, "lpCmd"), Out(Pointer(LPVOID), "lpRetCmd")]),
1619     StdFunction(HRESULT, "DllCanUnloadNow", []),
1620     StdFunction(HRESULT, "DllGetClassObject", [(REFCLSID, "rclsid"), (REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppv")]),
1621 ])
1622