diff --git a/if1632/user.spec b/if1632/user.spec index e3bc89b1cfb28795e7cefcd76326a80f9d2db567..b9d9b7899e5e103049e3ee3f97a211504d6477f8 100644 --- a/if1632/user.spec +++ b/if1632/user.spec @@ -259,7 +259,7 @@ file user.exe 252 pascal16 OpenDriver(str str long) OpenDriver16 253 pascal CloseDriver(word long long) CloseDriver16 254 pascal16 GetDriverModuleHandle(word) GetDriverModuleHandle16 -255 pascal DefDriverProc(long word word long long) DefDriverProc +255 pascal DefDriverProc(long word word long long) DefDriverProc16 256 pascal16 GetDriverInfo(word ptr) GetDriverInfo 257 pascal16 GetNextDriver(word long) GetNextDriver 258 pascal16 MapWindowPoints(word word ptr word) MapWindowPoints16 diff --git a/include/driver.h b/include/driver.h index f40c29c0462d6037e2526164e9ca44628cb86254..a0f214ae84c6d8a19cb176d22d96aa8ad1e340ff 100644 --- a/include/driver.h +++ b/include/driver.h @@ -79,8 +79,11 @@ typedef struct tagDRIVERITEM32A { DRIVERPROC32 driverproc; } DRIVERITEM32A,*LPDRIVERITEM32A; -LRESULT WINAPI DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, - LPARAM dwParam1, LPARAM dwParam2); +LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, + LPARAM dwParam1, LPARAM dwParam2); +LRESULT WINAPI DefDriverProc32(DWORD dwDriverIdentifier, HDRVR32 hdrvr, + UINT32 Msg, LPARAM lParam1, LPARAM lParam2); +#define DefDriverProc WINELIB_NAME(DefDriverProc) HDRVR16 WINAPI OpenDriver16(LPCSTR szDriverName, LPCSTR szSectionName, LPARAM lParam2); HDRVR32 WINAPI OpenDriver32A(LPCSTR szDriverName, LPCSTR szSectionName, diff --git a/multimedia/audio.c b/multimedia/audio.c index bade5c73684bdb3c5575d3f3791158b9bdb10bac..64cf6aee4f6ff4e479b9f86c1de40cf2880646ec 100644 --- a/multimedia/audio.c +++ b/multimedia/audio.c @@ -1760,7 +1760,7 @@ LONG WAVE_DriverProc16(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, case MCI_PASTE: return MMSYSERR_NOTSUPPORTED; default: - return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + return DefDriverProc16(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } return MMSYSERR_NOTENABLED; } @@ -1817,7 +1817,7 @@ LONG WAVE_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, default: FIXME(mciwave, "is probably wrong\n"); - return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + return DefDriverProc32(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } return MMSYSERR_NOTENABLED; } diff --git a/multimedia/mcianim.c b/multimedia/mcianim.c index 76dff47b00384950429acd72971740d73cee2c77..a12af8ef0e576c4f6a5ec1435beb1047b8df9936 100644 --- a/multimedia/mcianim.c +++ b/multimedia/mcianim.c @@ -570,7 +570,7 @@ LONG ANIM_DriverProc16(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, case MCI_PAUSE: return ANIM_mciPause(dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)PTR_SEG_TO_LIN(dwParam2)); case MCI_RESUME: return ANIM_mciResume(dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)PTR_SEG_TO_LIN(dwParam2)); case MCI_SEEK: return ANIM_mciSeek(dwDevID, dwParam1, (LPMCI_SEEK_PARMS)PTR_SEG_TO_LIN(dwParam2)); - default: return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + default: return DefDriverProc16(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } } /************************************************************************** @@ -603,7 +603,7 @@ LONG ANIM_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, case MCI_PAUSE: return ANIM_mciPause(dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)dwParam2); case MCI_RESUME: return ANIM_mciResume(dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)dwParam2); case MCI_SEEK: return ANIM_mciSeek(dwDevID, dwParam1, (LPMCI_SEEK_PARMS)dwParam2); - default: return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + default: return DefDriverProc32(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } } diff --git a/multimedia/mcicda.c b/multimedia/mcicda.c index 9d02747baeb41a4cf2e92a7856851ead8fe1472a..5ddc6bac469f1e7ae74f5977f3ffcde643adbedc 100644 --- a/multimedia/mcicda.c +++ b/multimedia/mcicda.c @@ -1075,7 +1075,7 @@ LONG CDAUDIO_DriverProc16(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, CDADev[dwDevID].nTracks = 0; return 0; default: - return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + return DefDriverProc16(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } #else return MCIERR_HARDWARE; @@ -1133,7 +1133,7 @@ LONG CDAUDIO_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, CDADev[dwDevID].nTracks = 0; return 0; default: - return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + return DefDriverProc32(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } #else return MCIERR_HARDWARE; diff --git a/multimedia/midi.c b/multimedia/midi.c index c0e969a3e08455b6df6b737e49b4ff88b02f8d0d..1ecd34711d3f655643203668fbfa49e301dc7245 100644 --- a/multimedia/midi.c +++ b/multimedia/midi.c @@ -2662,7 +2662,7 @@ LONG MIDI_DriverProc16(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, case MCI_STATUS: return MIDI_mciStatus(dwDevID, dwParam1, (LPMCI_STATUS_PARMS)PTR_SEG_TO_LIN(dwParam2)); case MCI_GETDEVCAPS: return MIDI_mciGetDevCaps(dwDevID, dwParam1, (LPMCI_GETDEVCAPS_PARMS)PTR_SEG_TO_LIN(dwParam2)); case MCI_INFO: return MIDI_mciInfo(dwDevID, dwParam1, (LPMCI_INFO_PARMS16)PTR_SEG_TO_LIN(dwParam2)); - default: return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + default: return DefDriverProc16(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } } @@ -2696,7 +2696,7 @@ LONG MIDI_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, case MCI_STATUS: return MIDI_mciStatus(dwDevID, dwParam1, (LPMCI_STATUS_PARMS)dwParam2); case MCI_GETDEVCAPS: return MIDI_mciGetDevCaps(dwDevID, dwParam1, (LPMCI_GETDEVCAPS_PARMS)dwParam2); case MCI_INFO: return MIDI_mciInfo(dwDevID, dwParam1, (LPMCI_INFO_PARMS16)dwParam2); - default: return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + default: return DefDriverProc32(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } } /*-----------------------------------------------------------------------*/ diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c index 236c5e8694025f21ddc7fe145e1ebc4a3d158d16..bf1e4f178059d60f346dfc146b24a6b26ef88f33 100644 --- a/multimedia/mmsystem.c +++ b/multimedia/mmsystem.c @@ -4262,7 +4262,27 @@ HANDLE16 WINAPI DrvGetModuleHandle16(HDRVR16 hDrvr) LRESULT WINAPI DrvDefDriverProc(DWORD dwDriverID, HDRVR16 hDriv, WORD wMsg, DWORD dwParam1, DWORD dwParam2) { - return DefDriverProc(dwDriverID, hDriv, wMsg, dwParam1, dwParam2); + return DefDriverProc16(dwDriverID, hDriv, wMsg, dwParam1, dwParam2); +} + +/************************************************************************** + * DefDriverProc32 [WINMM.5] + */ +LRESULT WINAPI DefDriverProc32(DWORD dwDriverIdentifier, HDRVR32 hdrvr, + UINT32 Msg, LPARAM lParam1, LPARAM lParam2) +{ + switch (Msg) { + case DRV_LOAD: + case DRV_DISABLE: + case DRV_INSTALL: + return 0; + case DRV_ENABLE: + case DRV_FREE: + case DRV_REMOVE: + return 1; + default: + return 0; + } } /************************************************************************** diff --git a/relay32/winmm.spec b/relay32/winmm.spec index 08d30e998976d3ca5325615623b5b60a9f0e18d2..35c7f8ce70700b5e00b72d68f2be14376a9a604c 100644 --- a/relay32/winmm.spec +++ b/relay32/winmm.spec @@ -5,7 +5,7 @@ type win32 2 stdcall WINMM_2(ptr long long) PlaySound32A 3 stub WINMM_3 4 stub CloseDriver - 5 stdcall DefDriverProc(long long long long long) DefDriverProc + 5 stdcall DefDriverProc(long long long long long) DefDriverProc32 6 stub DriverCallback 7 stub DrvClose 8 stub DrvDefDriverProc diff --git a/windows/driver.c b/windows/driver.c index e38fecfa17b512ca2bf87503e73582b0c3c0b15c..4ec9c3de92b5c2c2d07c4932e212695d249e421c 100644 --- a/windows/driver.c +++ b/windows/driver.c @@ -335,10 +335,10 @@ HMODULE32 WINAPI GetDriverModuleHandle32(HDRVR32 hDrvr) } /************************************************************************** - * DefDriverProc [USER.255] + * DefDriverProc16 [USER.255] */ -LRESULT WINAPI DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, - LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI DefDriverProc16(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, + LPARAM lParam1, LPARAM lParam2) { switch(wMsg) {