set svn:eol-style to native
[reactos.git] / reactos / lib / ddraw / ddraw_hal.c
index cd93a1b..e54c5b3 100644 (file)
-\r
-\r
-\r
-#include <windows.h>\r
-#include "ddraw.h"\r
-#include "rosddraw.h"\r
-#include "ddraw_private.h"\r
-\r
-static IDirectDraw7Vtbl HAL_DirectDraw_VTable;\r
-\r
-\r
-HRESULT HAL_DirectDraw_Construct(IDirectDrawImpl *This, BOOL ex)\r
-{    \r
-    //This->local.lpGbl = &dd_gbl;\r
-\r
-    This->final_release = HAL_DirectDraw_final_release;\r
-    This->set_exclusive_mode = HAL_DirectDrawSet_exclusive_mode;\r
-   // This->create_palette = HAL_DirectDrawPalette_Create;\r
-\r
-    This->create_primary    = HAL_DirectDraw_create_primary;\r
-    This->create_backbuffer = HAL_DirectDraw_create_backbuffer;\r
-    This->create_texture    = HAL_DirectDraw_create_texture;    \r
-\r
-   // ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);\r
-    return S_OK;\r
-}\r
-\r
-void HAL_DirectDraw_final_release(IDirectDrawImpl *This)\r
-{\r
\r
-}\r
-\r
-HRESULT HAL_DirectDrawSet_exclusive_mode(IDirectDrawImpl *This, DWORD dwEnterExcl)\r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-\r
-HRESULT HAL_DirectDraw_create_primary(IDirectDrawImpl* This, const DDSURFACEDESC2* pDDSD, LPDIRECTDRAWSURFACE7* ppSurf,\r
-                                     IUnknown* pUnkOuter)\r
-\r
-{\r
-       return DDERR_UNSUPPORTED;\r
-  }\r
-\r
-HRESULT HAL_DirectDraw_create_backbuffer(IDirectDrawImpl* This,\r
-                                        const DDSURFACEDESC2* pDDSD,\r
-                                        LPDIRECTDRAWSURFACE7* ppSurf,\r
-                                        IUnknown* pUnkOuter,\r
-                                        IDirectDrawSurfaceImpl* primary)\r
-{\r
-       return DDERR_UNSUPPORTED;\r
-  }\r
-\r
-HRESULT HAL_DirectDraw_create_texture(IDirectDrawImpl* This,\r
-                                     const DDSURFACEDESC2* pDDSD,\r
-                                     LPDIRECTDRAWSURFACE7* ppSurf,\r
-                                     LPUNKNOWN pOuter,\r
-                                     DWORD dwMipMapLevel)\r
-{\r
-       return DDERR_UNSUPPORTED;\r
-  }\r
-\r
-\r
-\r
-\r
-\r
-\r
-/* basic funtion for the com object */\r
-HRESULT WINAPI HAL_DirectDraw_QueryInterface(LPDIRECTDRAW7 iface,REFIID refiid,LPVOID *obj) \r
-{\r
-       return DDERR_UNSUPPORTED;\r
-  }\r
-\r
-ULONG WINAPI HAL_DirectDraw_AddRef(LPDIRECTDRAW7 iface) \r
-{\r
-    IDirectDrawImpl *This = (IDirectDrawImpl *)iface;\r
-    ULONG ref = InterlockedIncrement(&This->ref);\r
-\r
-    //TRACE("(%p)->() incrementing from %lu.\n", This, ref -1);\r
-\r
-    return ref;\r
-}\r
-\r
-ULONG WINAPI HAL_DirectDraw_Release(LPDIRECTDRAW7 iface) \r
-{\r
-    IDirectDrawImpl *This = (IDirectDrawImpl *)iface;\r
-    ULONG ref = InterlockedDecrement(&This->ref);\r
-    \r
-    if (ref == 0)\r
-    {\r
-       if (This->final_release != NULL)\r
-           This->final_release(This);\r
-\r
-       /* We free the private. This is an artifact of the fact that I don't\r
-        * have the destructors set up correctly. */\r
-       if (This->private != (This+1))\r
-           HeapFree(GetProcessHeap(), 0, This->private);\r
-\r
-       HeapFree(GetProcessHeap(), 0, This);\r
-    }\r
-\r
-    return ref;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_Compact(LPDIRECTDRAW7 iface) \r
-{\r
\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags, \r
-                                                                                        LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)\r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-HRESULT WINAPI HAL_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,\r
-                             LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE* ppPalette,LPUNKNOWN pUnknown)\r
-{\r
-       return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_CreateSurface(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,\r
-                             LPDIRECTDRAWSURFACE7 *ppSurf,IUnknown *pUnkOuter) \r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,\r
-                                LPDIRECTDRAWSURFACE7* dst) \r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,\r
-                                LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback) \r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,\r
-                            LPDDSURFACEDESC2 lpDDSD2, LPVOID context,\r
-                            LPDDENUMSURFACESCALLBACK7 callback) \r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) \r
-{\r
-return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,\r
-                       LPDDCAPS pHELCaps) \r
-{\r
-return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD) \r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)\r
-{\r
-  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface, \r
-                                                                                        LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)\r
-{\r
-  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD freq)\r
-{  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)\r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status)\r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_Initialize(LPDIRECTDRAW7 iface, LPGUID lpGuid)\r
-{\r
- return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)\r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_SetCooperativeLevel(LPDIRECTDRAW7 iface, HWND hwnd,\r
-                                                                                                  DWORD cooplevel)\r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_SetDisplayMode(LPDIRECTDRAW7 iface, DWORD dwWidth,\r
-                             DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)\r
-{\r
-  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-\r
-HRESULT WINAPI HAL_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,\r
-                                                                                                  HANDLE h)\r
-{\r
-  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,\r
-                                  LPDWORD total, LPDWORD free)                                                                                    \r
-\r
-{\r
-  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-                                                                                                  \r
-HRESULT WINAPI HAL_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hdc,\r
-                                                                                               LPDIRECTDRAWSURFACE7 *lpDDS)\r
-{  \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface)\r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface) \r
-{\r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface,\r
-                                  LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags)\r
-{    \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes,\r
-                             DWORD dwNumModes, DWORD dwFlags)\r
-{    \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-HRESULT WINAPI HAL_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface,DWORD a,DWORD* b)\r
-{    \r
-    return DDERR_UNSUPPORTED;\r
-}\r
-\r
-/* End com interface */\r
-\r
-\r
-\r
-\r
-HRESULT WINAPI HAL_DirectDraw_Create(const GUID* pGUID, LPDIRECTDRAW7* pIface,\r
-                             IUnknown* pUnkOuter, BOOL ex)\r
-{\r
-   \r
-      HRESULT hr;\r
-    IDirectDrawImpl* This;\r
-       HDC desktop;\r
-\r
-       /*\r
-    This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,\r
-                    sizeof(IDirectDrawImpl)\r
-                    + sizeof(HAL_DirectDrawImpl));\r
-        */\r
-       This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,\r
-                    sizeof(IDirectDrawImpl));\r
-\r
-    if (This == NULL) return E_OUTOFMEMORY;\r
-\r
-    /* Note that this relation does *not* hold true if the DD object was\r
-     * CoCreateInstanced then Initialized. */\r
-    //This->private = (HAL_DirectDrawImpl *)(This+1);\r
-\r
-    /* Initialize the DDCAPS structure */\r
-    This->caps.dwSize = sizeof(This->caps);\r
-\r
-    hr = HAL_DirectDraw_Construct(This, ex);\r
-    if (FAILED(hr))\r
-       HeapFree(GetProcessHeap(), 0, This);\r
-    else *pIface = ICOM_INTERFACE(This, IDirectDraw7);\r
-\r
-       /* create a scaner that check which driver we should get the HDC from */\r
-       /* for now we always asume it is the active dirver that should be use. */\r
-       \r
-       desktop = GetWindowDC(GetDesktopWindow());\r
-       *pIface = OsThunkDdCreateDirectDrawObject(desktop);   \r
-       if (pIface == NULL) hr == DDERR_NODIRECTDRAWHW;  \r
-\r
-       return DDERR_UNSUPPORTED;    \r
-}\r
-\r
-static IDirectDraw7Vtbl HAL_DirectDraw_VTable =\r
-{\r
-    HAL_DirectDraw_QueryInterface,\r
-    HAL_DirectDraw_AddRef,\r
-    HAL_DirectDraw_Release,\r
-    HAL_DirectDraw_Compact,\r
-    HAL_DirectDraw_CreateClipper,\r
-    HAL_DirectDraw_CreatePalette,\r
-    HAL_DirectDraw_CreateSurface,\r
-    HAL_DirectDraw_DuplicateSurface,\r
-    HAL_DirectDraw_EnumDisplayModes,\r
-    HAL_DirectDraw_EnumSurfaces,\r
-    HAL_DirectDraw_FlipToGDISurface,\r
-    HAL_DirectDraw_GetCaps,\r
-    HAL_DirectDraw_GetDisplayMode,\r
-    HAL_DirectDraw_GetFourCCCodes,\r
-    HAL_DirectDraw_GetGDISurface,\r
-    HAL_DirectDraw_GetMonitorFrequency,\r
-    HAL_DirectDraw_GetScanLine,\r
-    HAL_DirectDraw_GetVerticalBlankStatus,\r
-    HAL_DirectDraw_Initialize,\r
-    HAL_DirectDraw_RestoreDisplayMode,\r
-    HAL_DirectDraw_SetCooperativeLevel,\r
-    HAL_DirectDraw_SetDisplayMode,\r
-    HAL_DirectDraw_WaitForVerticalBlank,\r
-    HAL_DirectDraw_GetAvailableVidMem,\r
-    HAL_DirectDraw_GetSurfaceFromDC,\r
-    HAL_DirectDraw_RestoreAllSurfaces,\r
-    HAL_DirectDraw_TestCooperativeLevel,\r
-    HAL_DirectDraw_GetDeviceIdentifier,\r
-    HAL_DirectDraw_StartModeTest,\r
-    HAL_DirectDraw_EvaluateMode\r
-};\r
+
+
+
+#include <windows.h>
+#include "ddraw.h"
+#include "rosddraw.h"
+#include "ddraw_private.h"
+
+static IDirectDraw7Vtbl HAL_DirectDraw_VTable;
+
+
+HRESULT HAL_DirectDraw_Construct(IDirectDrawImpl *This, BOOL ex)
+{    
+    //This->local.lpGbl = &dd_gbl;
+
+    This->final_release = HAL_DirectDraw_final_release;
+    This->set_exclusive_mode = HAL_DirectDrawSet_exclusive_mode;
+   // This->create_palette = HAL_DirectDrawPalette_Create;
+
+    This->create_primary    = HAL_DirectDraw_create_primary;
+    This->create_backbuffer = HAL_DirectDraw_create_backbuffer;
+    This->create_texture    = HAL_DirectDraw_create_texture;    
+
+   // ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);
+    return S_OK;
+}
+
+void HAL_DirectDraw_final_release(IDirectDrawImpl *This)
+{
+}
+
+HRESULT HAL_DirectDrawSet_exclusive_mode(IDirectDrawImpl *This, DWORD dwEnterExcl)
+{
+ return DDERR_UNSUPPORTED;
+}
+
+
+HRESULT HAL_DirectDraw_create_primary(IDirectDrawImpl* This, const DDSURFACEDESC2* pDDSD, LPDIRECTDRAWSURFACE7* ppSurf,
+                                     IUnknown* pUnkOuter)
+
+{
+       return DDERR_UNSUPPORTED;
+  }
+
+HRESULT HAL_DirectDraw_create_backbuffer(IDirectDrawImpl* This,
+                                        const DDSURFACEDESC2* pDDSD,
+                                        LPDIRECTDRAWSURFACE7* ppSurf,
+                                        IUnknown* pUnkOuter,
+                                        IDirectDrawSurfaceImpl* primary)
+{
+       return DDERR_UNSUPPORTED;
+  }
+
+HRESULT HAL_DirectDraw_create_texture(IDirectDrawImpl* This,
+                                     const DDSURFACEDESC2* pDDSD,
+                                     LPDIRECTDRAWSURFACE7* ppSurf,
+                                     LPUNKNOWN pOuter,
+                                     DWORD dwMipMapLevel)
+{
+       return DDERR_UNSUPPORTED;
+  }
+
+
+
+
+
+
+/* basic funtion for the com object */
+HRESULT WINAPI HAL_DirectDraw_QueryInterface(LPDIRECTDRAW7 iface,REFIID refiid,LPVOID *obj) 
+{
+       return DDERR_UNSUPPORTED;
+  }
+
+ULONG WINAPI HAL_DirectDraw_AddRef(LPDIRECTDRAW7 iface) 
+{
+    IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
+
+    //TRACE("(%p)->() incrementing from %lu.\n", This, ref -1);
+
+    return ref;
+}
+
+ULONG WINAPI HAL_DirectDraw_Release(LPDIRECTDRAW7 iface) 
+{
+    IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
+    
+    if (ref == 0)
+    {
+       if (This->final_release != NULL)
+           This->final_release(This);
+
+       /* We free the private. This is an artifact of the fact that I don't
+        * have the destructors set up correctly. */
+       if (This->private != (This+1))
+           HeapFree(GetProcessHeap(), 0, This->private);
+
+       HeapFree(GetProcessHeap(), 0, This);
+    }
+
+    return ref;
+}
+
+HRESULT WINAPI HAL_DirectDraw_Compact(LPDIRECTDRAW7 iface) 
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags, 
+                                                                                        LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)
+{
+    return DDERR_UNSUPPORTED;
+}
+HRESULT WINAPI HAL_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,
+                             LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE* ppPalette,LPUNKNOWN pUnknown)
+{
+       return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_CreateSurface(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
+                             LPDIRECTDRAWSURFACE7 *ppSurf,IUnknown *pUnkOuter) 
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
+                                LPDIRECTDRAWSURFACE7* dst) 
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,
+                                LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback) 
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,
+                            LPDDSURFACEDESC2 lpDDSD2, LPVOID context,
+                            LPDDENUMSURFACESCALLBACK7 callback) 
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface) 
+{
+return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
+                       LPDDCAPS pHELCaps) 
+{
+return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD) 
+{
+    return DDERR_UNSUPPORTED;
+}
+
+
+HRESULT WINAPI HAL_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)
+{
+  
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface, 
+                                                                                        LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)
+{
+  
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD freq)
+{  
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status)
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_Initialize(LPDIRECTDRAW7 iface, LPGUID lpGuid)
+{
+ return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_SetCooperativeLevel(LPDIRECTDRAW7 iface, HWND hwnd,
+                                                                                                  DWORD cooplevel)
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_SetDisplayMode(LPDIRECTDRAW7 iface, DWORD dwWidth,
+                             DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
+{
+  
+    return DDERR_UNSUPPORTED;
+}
+
+
+HRESULT WINAPI HAL_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,
+                                                                                                  HANDLE h)
+{
+  
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
+                                  LPDWORD total, LPDWORD free)                                                                                    
+
+{
+  
+    return DDERR_UNSUPPORTED;
+}
+                                                                                                  
+HRESULT WINAPI HAL_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hdc,
+                                                                                               LPDIRECTDRAWSURFACE7 *lpDDS)
+{  
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface)
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface) 
+{
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface,
+                                  LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags)
+{    
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes,
+                             DWORD dwNumModes, DWORD dwFlags)
+{    
+    return DDERR_UNSUPPORTED;
+}
+
+HRESULT WINAPI HAL_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface,DWORD a,DWORD* b)
+{    
+    return DDERR_UNSUPPORTED;
+}
+
+/* End com interface */
+
+
+
+
+HRESULT WINAPI HAL_DirectDraw_Create(const GUID* pGUID, LPDIRECTDRAW7* pIface,
+                             IUnknown* pUnkOuter, BOOL ex)
+{
+   
+      HRESULT hr;
+    IDirectDrawImpl* This;
+       HDC desktop;
+
+       /*
+    This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                    sizeof(IDirectDrawImpl)
+                    + sizeof(HAL_DirectDrawImpl));
+        */
+       This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+                    sizeof(IDirectDrawImpl));
+
+    if (This == NULL) return E_OUTOFMEMORY;
+
+    /* Note that this relation does *not* hold true if the DD object was
+     * CoCreateInstanced then Initialized. */
+    //This->private = (HAL_DirectDrawImpl *)(This+1);
+
+    /* Initialize the DDCAPS structure */
+    This->caps.dwSize = sizeof(This->caps);
+
+    hr = HAL_DirectDraw_Construct(This, ex);
+    if (FAILED(hr))
+       HeapFree(GetProcessHeap(), 0, This);
+    else *pIface = ICOM_INTERFACE(This, IDirectDraw7);
+
+       /* create a scaner that check which driver we should get the HDC from */
+       /* for now we always asume it is the active dirver that should be use. */
+       
+       desktop = GetWindowDC(GetDesktopWindow());
+       *pIface = OsThunkDdCreateDirectDrawObject(desktop);   
+       if (pIface == NULL) hr == DDERR_NODIRECTDRAWHW;  
+
+       return DDERR_UNSUPPORTED;    
+}
+
+static IDirectDraw7Vtbl HAL_DirectDraw_VTable =
+{
+    HAL_DirectDraw_QueryInterface,
+    HAL_DirectDraw_AddRef,
+    HAL_DirectDraw_Release,
+    HAL_DirectDraw_Compact,
+    HAL_DirectDraw_CreateClipper,
+    HAL_DirectDraw_CreatePalette,
+    HAL_DirectDraw_CreateSurface,
+    HAL_DirectDraw_DuplicateSurface,
+    HAL_DirectDraw_EnumDisplayModes,
+    HAL_DirectDraw_EnumSurfaces,
+    HAL_DirectDraw_FlipToGDISurface,
+    HAL_DirectDraw_GetCaps,
+    HAL_DirectDraw_GetDisplayMode,
+    HAL_DirectDraw_GetFourCCCodes,
+    HAL_DirectDraw_GetGDISurface,
+    HAL_DirectDraw_GetMonitorFrequency,
+    HAL_DirectDraw_GetScanLine,
+    HAL_DirectDraw_GetVerticalBlankStatus,
+    HAL_DirectDraw_Initialize,
+    HAL_DirectDraw_RestoreDisplayMode,
+    HAL_DirectDraw_SetCooperativeLevel,
+    HAL_DirectDraw_SetDisplayMode,
+    HAL_DirectDraw_WaitForVerticalBlank,
+    HAL_DirectDraw_GetAvailableVidMem,
+    HAL_DirectDraw_GetSurfaceFromDC,
+    HAL_DirectDraw_RestoreAllSurfaces,
+    HAL_DirectDraw_TestCooperativeLevel,
+    HAL_DirectDraw_GetDeviceIdentifier,
+    HAL_DirectDraw_StartModeTest,
+    HAL_DirectDraw_EvaluateMode
+};