]> git.cworth.org Git - apitrace/blobdiff - ddraw.py
Get DDraw/D3D7 building.
[apitrace] / ddraw.py
old mode 100755 (executable)
new mode 100644 (file)
index aec4c85..fd8c5f5
--- a/ddraw.py
+++ b/ddraw.py
@@ -25,7 +25,8 @@
 
 """ddraw.h"""
 
-from windows import *
+from winapi import *
+from trace import DllTracer
 
 IDirectDraw = Interface("IDirectDraw", IUnknown)
 IDirectDraw2 = Interface("IDirectDraw2", IUnknown)
@@ -485,8 +486,8 @@ DDGAMMARAMP = Struct("DDGAMMARAMP", [
 LPDDGAMMARAMP = Pointer(DDGAMMARAMP)
 
 DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
-    (String, "szDriver"),
-    (String, "szDescription"),
+    (CString, "szDriver"),
+    (CString, "szDescription"),
     (LARGE_INTEGER, "liDriverVersion"),
     (DWORD, "dwVendorId"),
     (DWORD, "dwDeviceId"),
@@ -497,8 +498,8 @@ DDDEVICEIDENTIFIER = Struct("DDDEVICEIDENTIFIER", [
 LPDDDEVICEIDENTIFIER = Pointer(DDDEVICEIDENTIFIER)
 
 DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
-    (String, "szDriver[MAX_DDDEVICEID_STRING]"),
-    (String, "szDescription[MAX_DDDEVICEID_STRING]"),
+    (CString, "szDriver[MAX_DDDEVICEID_STRING]"),
+    (CString, "szDescription[MAX_DDDEVICEID_STRING]"),
     (LARGE_INTEGER, "liDriverVersion"),
     (DWORD, "dwVendorId"),
     (DWORD, "dwDeviceId"),
@@ -509,8 +510,8 @@ DDDEVICEIDENTIFIER2 = Struct("DDDEVICEIDENTIFIER2", [
 ])
 LPDDDEVICEIDENTIFIER2 = Pointer(DDDEVICEIDENTIFIER2)
 
-LPCLIPPERCALLBACK = Pointer(Function("DWORD", "CLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")]))
-LPSURFACESTREAMINGCALLBACK = Pointer(Function("DWORD", "SURFACESTREAMINGCALLBACK", [DWORD]))
+LPCLIPPERCALLBACK = FunctionPointer("DWORD", "LPCLIPPERCALLBACK", [(LPDIRECTDRAWCLIPPER, "lpDDClipper"), (HWND, "hWnd"), (DWORD, "code"), (LPVOID, "lpContext")])
+LPSURFACESTREAMINGCALLBACK = FunctionPointer("DWORD", "LPSURFACESTREAMINGCALLBACK", [DWORD])
 
 DDSURFACEDESC = Struct("DDSURFACEDESC", [
     (DWORD, "dwSize"),
@@ -1240,115 +1241,115 @@ HRESULT = Enum("HRESULT", [
     "DDERR_NOTINITIALIZED",
 ])
 
-LPDDENUMMODESCALLBACK = Pointer(Function(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID]))
-LPDDENUMMODESCALLBACK2 = Pointer(Function(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID]))
-LPDDENUMSURFACESCALLBACK = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID]))
-LPDDENUMSURFACESCALLBACK2 = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID]))
-LPDDENUMSURFACESCALLBACK7 = Pointer(Function(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID]))
+LPDDENUMMODESCALLBACK     = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK", [LPDDSURFACEDESC, LPVOID])
+LPDDENUMMODESCALLBACK2    = FunctionPointer(HRESULT, "LPDDENUMMODESCALLBACK2", [LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK  = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK", [LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID])
+LPDDENUMSURFACESCALLBACK2 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK2", [LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID])
+LPDDENUMSURFACESCALLBACK7 = FunctionPointer(HRESULT, "LPDDENUMSURFACESCALLBACK7", [LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID])
 
 IDirectDraw.methods += [
     Method(HRESULT, "Compact", []),
-    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]),
-    Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]),
-    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]),
+    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER), Pointer(IUnknown)]),
+    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown)]),
+    Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE)]),
+    Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK]),
+    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "FlipToGDISurface", []),
-    Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
-    Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]),
-    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
-    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]),
+    Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
+    Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC]),
+    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
+    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE)]),
     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
     Method(HRESULT, "GetScanLine", [LPDWORD]),
-    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
-    Method(HRESULT, "Initialize", [Pointer(GUID) ]),
+    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
+    Method(HRESULT, "Initialize", [Pointer(GUID)]),
     Method(HRESULT, "RestoreDisplayMode", []),
     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD]),
-    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
+    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
 ]
 
 IDirectDraw2.methods += [
     Method(HRESULT, "Compact", []),
-    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE) ]),
-    Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ]),
-    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ]),
+    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC, Pointer(LPDIRECTDRAWSURFACE) , Pointer(IUnknown)]),
+    Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE, Pointer(LPDIRECTDRAWSURFACE)]),
+    Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK]),
+    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "FlipToGDISurface", []),
-    Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
-    Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC]),
-    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
-    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE) ]),
+    Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
+    Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC]),
+    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
+    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE)]),
     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
     Method(HRESULT, "GetScanLine", [LPDWORD]),
-    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
-    Method(HRESULT, "Initialize", [Pointer(GUID) ]),
+    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
+    Method(HRESULT, "Initialize", [Pointer(GUID)]),
     Method(HRESULT, "RestoreDisplayMode", []),
     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
-    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
+    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS, LPDWORD, LPDWORD]),
 ]
 
 IDirectDraw4.methods += [
     Method(HRESULT, "Compact", []),
-    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE4) , Pointer(IUnknown) ]),
-    Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE4, Pointer(LPDIRECTDRAWSURFACE4) ]),
-    Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]),
-    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ]),
+    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE4) , Pointer(IUnknown)]),
+    Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE4, Pointer(LPDIRECTDRAWSURFACE4)]),
+    Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2]),
+    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2]),
     Method(HRESULT, "FlipToGDISurface", []),
-    Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
-    Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]),
-    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
-    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE4) ]),
+    Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
+    Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC2]),
+    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
+    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE4)]),
     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
     Method(HRESULT, "GetScanLine", [LPDWORD]),
-    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
-    Method(HRESULT, "Initialize", [Pointer(GUID) ]),
+    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
+    Method(HRESULT, "Initialize", [Pointer(GUID)]),
     Method(HRESULT, "RestoreDisplayMode", []),
     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
-    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
+    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE4)]),
     Method(HRESULT, "RestoreAllSurfaces", []),
     Method(HRESULT, "TestCooperativeLevel", []),
-    Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER, DWORD ]),
+    Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER, DWORD]),
 ]
 
 IDirectDraw7.methods += [
     Method(HRESULT, "Compact", []),
-    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown) ]),
-    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE7) , Pointer(IUnknown) ]),
-    Method(HRESULT, "DuplicateSurface", [ LPDIRECTDRAWSURFACE7, Pointer(LPDIRECTDRAWSURFACE7) ]),
-    Method(HRESULT, "EnumDisplayModes", [ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ]),
-    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ]),
+    Method(HRESULT, "CreateClipper", [DWORD, Pointer(LPDIRECTDRAWCLIPPER) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreatePalette", [DWORD, LPPALETTEENTRY, Pointer(LPDIRECTDRAWPALETTE) , Pointer(IUnknown)]),
+    Method(HRESULT, "CreateSurface", [LPDDSURFACEDESC2, Pointer(LPDIRECTDRAWSURFACE7) , Pointer(IUnknown)]),
+    Method(HRESULT, "DuplicateSurface", [LPDIRECTDRAWSURFACE7, Pointer(LPDIRECTDRAWSURFACE7)]),
+    Method(HRESULT, "EnumDisplayModes", [DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2]),
+    Method(HRESULT, "EnumSurfaces", [DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7]),
     Method(HRESULT, "FlipToGDISurface", []),
-    Method(HRESULT, "GetCaps", [ LPDDCAPS, LPDDCAPS]),
-    Method(HRESULT, "GetDisplayMode", [ LPDDSURFACEDESC2]),
-    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD ]),
-    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE7) ]),
+    Method(HRESULT, "GetCaps", [LPDDCAPS, LPDDCAPS]),
+    Method(HRESULT, "GetDisplayMode", [LPDDSURFACEDESC2]),
+    Method(HRESULT, "GetFourCCCodes", [LPDWORD, LPDWORD]),
+    Method(HRESULT, "GetGDISurface", [Pointer(LPDIRECTDRAWSURFACE7)]),
     Method(HRESULT, "GetMonitorFrequency", [LPDWORD]),
     Method(HRESULT, "GetScanLine", [LPDWORD]),
-    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL ]),
-    Method(HRESULT, "Initialize", [Pointer(GUID) ]),
+    Method(HRESULT, "GetVerticalBlankStatus", [LPBOOL]),
+    Method(HRESULT, "Initialize", [Pointer(GUID)]),
     Method(HRESULT, "RestoreDisplayMode", []),
     Method(HRESULT, "SetCooperativeLevel", [HWND, DWORD]),
     Method(HRESULT, "SetDisplayMode", [DWORD, DWORD,DWORD, DWORD, DWORD]),
-    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE ]),
+    Method(HRESULT, "WaitForVerticalBlank", [DWORD, HANDLE]),
     Method(HRESULT, "GetAvailableVidMem", [LPDDSCAPS2, LPDWORD, LPDWORD]),
     Method(HRESULT, "GetSurfaceFromDC", [HDC, Pointer(LPDIRECTDRAWSURFACE7)]),
     Method(HRESULT, "RestoreAllSurfaces", []),
     Method(HRESULT, "TestCooperativeLevel", []),
-    Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER2, DWORD ]),
-    Method(HRESULT, "StartModeTest", [LPSIZE, DWORD, DWORD ]),
-    Method(HRESULT, "EvaluateMode", [DWORD, Pointer(DWORD) ]),
+    Method(HRESULT, "GetDeviceIdentifier", [LPDDDEVICEIDENTIFIER2, DWORD]),
+    Method(HRESULT, "StartModeTest", [LPSIZE, DWORD, DWORD]),
+    Method(HRESULT, "EvaluateMode", [DWORD, Pointer(DWORD)]),
 ]
 
 IDirectDrawPalette.methods += [
@@ -1360,11 +1361,11 @@ IDirectDrawPalette.methods += [
 
 IDirectDrawClipper.methods += [
     Method(HRESULT, "GetClipList", [LPRECT, LPRGNDATA, LPDWORD]),
-    Method(HRESULT, "GetHWnd", [Pointer(HWND) ]),
+    Method(HRESULT, "GetHWnd", [Pointer(HWND)]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, DWORD]),
-    Method(HRESULT, "IsClipListChanged", [Pointer(BOOL) ]),
+    Method(HRESULT, "IsClipListChanged", [Pointer(BOOL)]),
     Method(HRESULT, "SetClipList", [LPRGNDATA,DWORD]),
-    Method(HRESULT, "SetHWnd", [DWORD, HWND ]),
+    Method(HRESULT, "SetHWnd", [DWORD, HWND]),
 ]
 
 
@@ -1372,21 +1373,21 @@ IDirectDrawSurface.methods += [
     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE]),
     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX]),
-    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
+    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD]),
     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE]),
     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE, DWORD]),
-    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE) ]),
+    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE)]),
     Method(HRESULT, "GetBltStatus", [DWORD]),
     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
-    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
+    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "GetDC", [Pointer(HDC) ]),
+    Method(HRESULT, "GetDC", [Pointer(HDC)]),
     Method(HRESULT, "GetFlipStatus", [DWORD]),
-    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
-    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
+    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
+    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
@@ -1396,7 +1397,7 @@ IDirectDrawSurface.methods += [
     Method(HRESULT, "Restore", []),
     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
+    Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
     Method(HRESULT, "Unlock", [LPVOID]),
     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX]),
@@ -1408,21 +1409,21 @@ IDirectDrawSurface2.methods += [
     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE2]),
     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX]),
-    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
+    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD]),
     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE2]),
     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE2, DWORD]),
-    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE2) ]),
+    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE2)]),
     Method(HRESULT, "GetBltStatus", [DWORD]),
     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
-    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
+    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "GetDC", [Pointer(HDC) ]),
+    Method(HRESULT, "GetDC", [Pointer(HDC)]),
     Method(HRESULT, "GetFlipStatus", [DWORD]),
-    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
-    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
+    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
+    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
@@ -1432,13 +1433,13 @@ IDirectDrawSurface2.methods += [
     Method(HRESULT, "Restore", []),
     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
+    Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
     Method(HRESULT, "Unlock", [LPVOID]),
     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX]),
     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE2]),
-    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
+    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
     Method(HRESULT, "PageLock", [DWORD]),
     Method(HRESULT, "PageUnlock", [DWORD]),
 ]
@@ -1447,21 +1448,21 @@ IDirectDrawSurface3.methods += [
     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE3]),
     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX]),
-    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
+    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD]),
     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE3]),
     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK]),
     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE3, DWORD]),
-    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE3) ]),
+    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS, Pointer(LPDIRECTDRAWSURFACE3)]),
     Method(HRESULT, "GetBltStatus", [DWORD]),
     Method(HRESULT, "GetCaps", [LPDDSCAPS]),
-    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
+    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "GetDC", [Pointer(HDC) ]),
+    Method(HRESULT, "GetDC", [Pointer(HDC)]),
     Method(HRESULT, "GetFlipStatus", [DWORD]),
-    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
-    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
+    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
+    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC]),
@@ -1471,13 +1472,13 @@ IDirectDrawSurface3.methods += [
     Method(HRESULT, "Restore", []),
     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
+    Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
     Method(HRESULT, "Unlock", [LPVOID]),
     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX]),
     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE3]),
-    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
+    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
     Method(HRESULT, "PageLock", [DWORD]),
     Method(HRESULT, "PageUnlock", [DWORD]),
     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC, DWORD]),
@@ -1487,21 +1488,21 @@ IDirectDrawSurface4.methods += [
     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE4]),
     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX]),
-    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
+    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD]),
     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE4]),
     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK2]),
     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2]),
     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE4, DWORD]),
-    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE4) ]),
+    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE4)]),
     Method(HRESULT, "GetBltStatus", [DWORD]),
     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
-    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
+    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "GetDC", [Pointer(HDC) ]),
+    Method(HRESULT, "GetDC", [Pointer(HDC)]),
     Method(HRESULT, "GetFlipStatus", [DWORD]),
-    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
-    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
+    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
+    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
@@ -1511,13 +1512,13 @@ IDirectDrawSurface4.methods += [
     Method(HRESULT, "Restore", []),
     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
+    Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
     Method(HRESULT, "Unlock", [LPRECT]),
     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX]),
     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE4]),
-    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
+    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
     Method(HRESULT, "PageLock", [DWORD]),
     Method(HRESULT, "PageUnlock", [DWORD]),
     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
@@ -1532,21 +1533,21 @@ IDirectDrawSurface7.methods += [
     Method(HRESULT, "AddAttachedSurface", [LPDIRECTDRAWSURFACE7]),
     Method(HRESULT, "AddOverlayDirtyRect", [LPRECT]),
     Method(HRESULT, "Blt", [LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX]),
-    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD ]),
+    Method(HRESULT, "BltBatch", [LPDDBLTBATCH, DWORD, DWORD]),
     Method(HRESULT, "BltFast", [DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD]),
     Method(HRESULT, "DeleteAttachedSurface", [DWORD,LPDIRECTDRAWSURFACE7]),
     Method(HRESULT, "EnumAttachedSurfaces", [LPVOID,LPDDENUMSURFACESCALLBACK7]),
     Method(HRESULT, "EnumOverlayZOrders", [DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7]),
     Method(HRESULT, "Flip", [LPDIRECTDRAWSURFACE7, DWORD]),
-    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE7) ]),
+    Method(HRESULT, "GetAttachedSurface", [LPDDSCAPS2, Pointer(LPDIRECTDRAWSURFACE7)]),
     Method(HRESULT, "GetBltStatus", [DWORD]),
     Method(HRESULT, "GetCaps", [LPDDSCAPS2]),
-    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER) ]),
+    Method(HRESULT, "GetClipper", [Pointer(LPDIRECTDRAWCLIPPER)]),
     Method(HRESULT, "GetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "GetDC", [Pointer(HDC) ]),
+    Method(HRESULT, "GetDC", [Pointer(HDC)]),
     Method(HRESULT, "GetFlipStatus", [DWORD]),
-    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG ]),
-    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE) ]),
+    Method(HRESULT, "GetOverlayPosition", [LPLONG, LPLONG]),
+    Method(HRESULT, "GetPalette", [Pointer(LPDIRECTDRAWPALETTE)]),
     Method(HRESULT, "GetPixelFormat", [LPDDPIXELFORMAT]),
     Method(HRESULT, "GetSurfaceDesc", [LPDDSURFACEDESC2]),
     Method(HRESULT, "Initialize", [LPDIRECTDRAW, LPDDSURFACEDESC2]),
@@ -1556,13 +1557,13 @@ IDirectDrawSurface7.methods += [
     Method(HRESULT, "Restore", []),
     Method(HRESULT, "SetClipper", [LPDIRECTDRAWCLIPPER]),
     Method(HRESULT, "SetColorKey", [DWORD, LPDDCOLORKEY]),
-    Method(HRESULT, "SetOverlayPosition", [LONG, LONG ]),
+    Method(HRESULT, "SetOverlayPosition", [LONG, LONG]),
     Method(HRESULT, "SetPalette", [LPDIRECTDRAWPALETTE]),
     Method(HRESULT, "Unlock", [LPRECT]),
     Method(HRESULT, "UpdateOverlay", [LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX]),
     Method(HRESULT, "UpdateOverlayDisplay", [DWORD]),
     Method(HRESULT, "UpdateOverlayZOrder", [DWORD, LPDIRECTDRAWSURFACE7]),
-    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID) ]),
+    Method(HRESULT, "GetDDInterface", [Pointer(LPVOID)]),
     Method(HRESULT, "PageLock", [DWORD]),
     Method(HRESULT, "PageUnlock", [DWORD]),
     Method(HRESULT, "SetSurfaceDesc", [LPDDSURFACEDESC2, DWORD]),
@@ -1587,14 +1588,10 @@ IDirectDrawGammaControl.methods += [
     Method(HRESULT, "SetGammaRamp", [DWORD, LPDDGAMMARAMP]),
 ]
 
-#LPDDENUMCALLBACKA   = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID]))
-#LPDDENUMCALLBACKW   = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID]))
-#LPDDENUMCALLBACKEXA = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR]))
-#LPDDENUMCALLBACKEXW = WrapPointer(Function(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR]))
-LPDDENUMCALLBACKA   = Alias("LPDDENUMCALLBACKA", Pointer(Void))
-LPDDENUMCALLBACKW   = Alias("LPDDENUMCALLBACKW", Pointer(Void))
-LPDDENUMCALLBACKEXA = Alias("LPDDENUMCALLBACKEXA", Pointer(Void))
-LPDDENUMCALLBACKEXW = Alias("LPDDENUMCALLBACKEXW", Pointer(Void))
+LPDDENUMCALLBACKA   = FunctionPointer(BOOL, "LPDDENUMCALLBACKA", [Pointer(GUID), LPSTR, LPSTR, LPVOID])
+LPDDENUMCALLBACKW   = FunctionPointer(BOOL, "LPDDENUMCALLBACKW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID])
+LPDDENUMCALLBACKEXA = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXA", [Pointer(GUID), LPSTR, LPSTR, LPVOID, HMONITOR])
+LPDDENUMCALLBACKEXW = FunctionPointer(BOOL, "LPDDENUMCALLBACKEXW", [Pointer(GUID), LPWSTR, LPWSTR, LPVOID, HMONITOR])
 
 DDENUM = Flags(DWORD, [
     "DDENUM_ATTACHEDSECONDARYDEVICES",
@@ -1607,22 +1604,19 @@ DDCREATE = Flags(DWORD, [
     "DDCREATE_EMULATIONONLY",
 ])
 
-ddraw = Dll("ddraw")
-ddraw.functions += [
-    DllFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
-    DllFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
-    DllFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
-    DllFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
-    DllFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), (OutPointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
-    DllFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), (OutPointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
-    DllFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), (OutPointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
-]
+ddraw = API("ddraw")
+ddraw.add_functions([
+    StdFunction(HRESULT, "DirectDrawEnumerateW", [(LPDDENUMCALLBACKW, "lpCallback"), (LPVOID, "lpContext")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateA", [(LPDDENUMCALLBACKA, "lpCallback"), (LPVOID, "lpContext")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateExW", [(LPDDENUMCALLBACKEXW, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+    StdFunction(HRESULT, "DirectDrawEnumerateExA", [(LPDDENUMCALLBACKEXA, "lpCallback"), (LPVOID, "lpContext"), (DDENUM, "dwFlags")]),
+    StdFunction(HRESULT, "DirectDrawCreate", [(Pointer(GUID), "lpGUID"), Out(Pointer(LPDIRECTDRAW), "lplpDD"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(HRESULT, "DirectDrawCreateEx", [(Pointer(GUID), "lpGuid"), Out(Pointer(LPVOID), "lplpDD"), (REFIID, "iid"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(HRESULT, "DirectDrawCreateClipper", [(DWORD, "dwFlags"), Out(Pointer(LPDIRECTDRAWCLIPPER), "lplpDDClipper"), (Pointer(IUnknown), "pUnkOuter")]),
+    StdFunction(Void, "AcquireDDThreadLock", []),
+    StdFunction(Void, "ReleaseDDThreadLock", []),
+    StdFunction(DWORD, "D3DParseUnknownCommand", [(LPVOID, "lpCmd"), Out(Pointer(LPVOID), "lpRetCmd")]),
+    StdFunction(HRESULT, "DllCanUnloadNow", []),
+    StdFunction(HRESULT, "DllGetClassObject", [(REFCLSID, "rclsid"), (REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppv")]),
+])
 
-if __name__ == '__main__':
-    print '#include <windows.h>'
-    print '#include <tchar.h>'
-    print '#include <ddraw.h>'
-    print
-    print '#include "log.hpp"'
-    print
-    wrap()