The wavemap driver wasn't passing the callback type to the DriverCallback routine correctly.
diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c index c3beba0..ce2d159 100644 --- a/dlls/winmm/mmsystem.c +++ b/dlls/winmm/mmsystem.c
@@ -620,6 +620,8 @@ switch (uFlags & DCB_TYPEMASK) { case DCB_NULL: TRACE("Null !\n"); + if (dwCallBack) + WARN("uFlags=%04X has null DCB value, but dwCallBack=%08lX is not null !\n"); break; case DCB_WINDOW: TRACE("Window(%04lX) handle=%04X!\n", dwCallBack, hDev);
diff --git a/dlls/winmm/wavemap/wavemap.c b/dlls/winmm/wavemap/wavemap.c index 0172752..59c25a2 100644 --- a/dlls/winmm/wavemap/wavemap.c +++ b/dlls/winmm/wavemap/wavemap.c
@@ -71,7 +71,7 @@ ERR("Unknown msg %u\n", uMsg); } - DriverCallback(wom->dwCallback, wom->dwFlags, hDev, uMsg, + DriverCallback(wom->dwCallback, HIWORD(wom->dwFlags), hDev, uMsg, wom->dwClientInstance, dwParam1, dwParam2); }