start add hardware interface to hal
we now map the hal to directdraw 

follow api are implement in the ddraw for hal
but all hal api are not implement in the kernel
if you got louky it maby working with nvida driver now. 

untested yet.
Modified: trunk/reactos/lib/ddraw/ddraw_hal.c

Modified: trunk/reactos/lib/ddraw/ddraw_hal.c
--- trunk/reactos/lib/ddraw/ddraw_hal.c	2005-03-20 17:22:24 UTC (rev 14224)
+++ trunk/reactos/lib/ddraw/ddraw_hal.c	2005-03-20 17:24:11 UTC (rev 14225)
@@ -37,9 +37,9 @@
 
     This->create_primary    = HAL_DirectDraw_create_primary;
     This->create_backbuffer = HAL_DirectDraw_create_backbuffer;
-    This->create_texture    = HAL_DirectDraw_create_texture;
+    This->create_texture    = HAL_DirectDraw_create_texture;    
 
-    ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);
+   // ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);
     return S_OK;
 }
 
@@ -290,7 +290,8 @@
 {
    
       HRESULT hr;
-    IDirectDrawImpl* This;    
+    IDirectDrawImpl* This;
+	HDC desktop;
 
 	/*
     This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
@@ -312,9 +313,15 @@
     hr = HAL_DirectDraw_Construct(This, ex);
     if (FAILED(hr))
 	HeapFree(GetProcessHeap(), 0, This);
-    else
-	*pIface = ICOM_INTERFACE(This, IDirectDraw7);
+    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 hr;
 }