Moved the 16 bit driver functions callout into the dir.

diff --git a/windows/driver.c b/windows/driver.c
index 30894c8..9522fe7 100644
--- a/windows/driver.c
+++ b/windows/driver.c
@@ -10,11 +10,10 @@
 
 #include <string.h>
 #include "heap.h"
-#include "callback.h"
+#include "winuser.h"
 #include "driver.h"
 #include "ldt.h"
 #include "module.h"
-#include "mmsystem.h"
 #include "mmddk.h"
 #include "debugtools.h"
 
@@ -23,11 +22,17 @@
 static LPWINE_DRIVER	lpDrvItemList = NULL;
 
 /* TODO list :
- *	- LoadModule count and clean up is not handled correctly (it's not a problem as 
- * 	  long as FreeLibrary is not working correctly)
- *	- msacm has some FIXME related to new code here...
+ *	- LoadModule count and clean up is not handled correctly (it's not a 
+ *	  problem as long as FreeLibrary is not working correctly)
+ *	- shoudln't the allocations be done on a per process basis ?
+ * 	- get rid of external function "int DRIVER_GetType(HDRVR hDrvr)"
+ *	- split 16/32 bit functions between DLLs as windows do (16 bit in USER, 32 bit in WINMM)
  */
 
+/* ### start build ### */
+extern LONG CALLBACK DRIVER_CallTo16_long_lwwll(FARPROC16,LONG,WORD,WORD,LONG,LONG);
+/* ### stop build ### */
+
 /**************************************************************************
  *			LoadStartupDrivers			[internal]
  */
@@ -115,7 +120,7 @@
 /**************************************************************************
  *				DRIVER_GetType			[internal]
  * 
- * From a hDrvr (being 16 or 32 bits), returns the WINE internal structure.
+ * From a hDrvr (being 16 or 32 bits), returns TRUE the flags for the driver.
  */
 int	DRIVER_GetType(HDRVR hDrvr)
 {
@@ -474,8 +479,8 @@
 	case WINE_DI_TYPE_16:
 	    TRACE("Before CallDriverProc proc=%p driverID=%08lx hDrv=%u wMsg=%04x p1=%08lx p2=%08lx\n", 
 		  lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, hDriver, msg, lParam1, lParam2);		  
-	    retval = Callbacks->CallDriverProc(lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, hDriver, 
-					       msg, lParam1, lParam2);
+	    retval = DRIVER_CallTo16_long_lwwll((FARPROC16)lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, 
+						hDriver, msg, lParam1, lParam2);
 	    break;
 	case WINE_DI_TYPE_32:
 	    mapRet = DRIVER_MapMsg16To32(msg, &lParam1, &lParam2);
@@ -523,8 +528,8 @@
 	    if (mapRet >= 0) {
 		TRACE("Before CallDriverProc proc=%p driverID=%08lx hDrv=%u wMsg=%04x p1=%08lx p2=%08lx\n", 
 		      lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, lpDrv->hDriver16, msg, lParam1, lParam2);		  
-		retval = Callbacks->CallDriverProc(lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, lpDrv->hDriver16, 
-						   msg, lParam1, lParam2);
+		retval = DRIVER_CallTo16_long_lwwll((FARPROC16)lpDrv->d.d16.lpDrvProc, lpDrv->dwDriverID, 
+						    lpDrv->hDriver16, msg, lParam1, lParam2);
 		if (mapRet >= 1) {
 		    DRIVER_UnMapMsg32To16(msg, lParam1, lParam2);
 		}
@@ -802,6 +807,10 @@
 					     drvName, sizeof(drvName), "SYSTEM.INI") > 0) {
 	hDriver = DRIVER_TryOpenDriver16(drvName, lParam, FALSE);
     }
+    if (!hDriver)
+	ERR("Failed to open driver %s from section %s\n", lpDriverName, lpSectionName);
+    else 
+	TRACE("=> %08x\n", hDriver);
     return hDriver;
 }
 
@@ -847,7 +856,10 @@
 	    }
 	}
     }
-    TRACE("retval='%08x'\n", hDriver);
+    if (!hDriver)
+	ERR("Failed to open driver %s from section %s\n", lpDriverName, lpSectionName);
+    else 
+	TRACE("=> %08x\n", hDriver);
     return hDriver;
 }
 
@@ -910,6 +922,7 @@
 DWORD	WINAPI GetDriverFlags(HDRVR hDrvr)
 {
     FIXME("(%04x); stub!\n", hDrvr);
+    /* should I merge it with DRIVER_GetType() ? */
     return 0;
 }