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);
 }