From 95aa1c388df5707c65adf1caa44d9058fca4901b Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Tue, 4 Jan 2000 00:26:50 +0000 Subject: [PATCH] Moved the 16 bit driver functions callout into the dir. --- windows/.cvsignore | 1 + windows/Makefile.in | 3 ++- windows/driver.c | 35 ++++++++++++++++++++++++----------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/windows/.cvsignore b/windows/.cvsignore index f9bbb55716b..5b8a0dd2b2b 100644 --- a/windows/.cvsignore +++ b/windows/.cvsignore @@ -1,2 +1,3 @@ Makefile +driver.glue.c hook.glue.c diff --git a/windows/Makefile.in b/windows/Makefile.in index a35785ddfce..c8fdf3d277d 100644 --- a/windows/Makefile.in +++ b/windows/Makefile.in @@ -39,7 +39,8 @@ C_SRCS = \ winpos.c \ winproc.c -GLUE = hook.c +GLUE = hook.c \ + driver.c all: $(MODULE).o diff --git a/windows/driver.c b/windows/driver.c index 30894c83048..9522fe7cb0b 100644 --- a/windows/driver.c +++ b/windows/driver.c @@ -10,11 +10,10 @@ #include #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 @@ DEFAULT_DEBUG_CHANNEL(driver) 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 @@ static LPWINE_DRIVER DRIVER_FindFromHDrvr(HDRVR hDrvr) /************************************************************************** * 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 @@ LRESULT WINAPI SendDriverMessage16(HDRVR16 hDriver, UINT16 msg, LPARAM lParam1, 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 @@ LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT msg, LPARAM lParam1, 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 @@ HDRVR16 WINAPI OpenDriver16(LPCSTR lpDriverName, LPCSTR lpSectionName, LPARAM lP 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 @@ HDRVR WINAPI OpenDriverA(LPCSTR lpDriverName, LPCSTR lpSectionName, LPARAM lPara } } } - 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 @@ HMODULE16 WINAPI GetDriverModuleHandle16(HDRVR16 hDrvr) DWORD WINAPI GetDriverFlags(HDRVR hDrvr) { FIXME("(%04x); stub!\n", hDrvr); + /* should I merge it with DRIVER_GetType() ? */ return 0; }