Commit in reactos on MAIN
include/mmsystem.h-22241.1 removed
include/wine/mmsystem.h+46added 1.1
w32api/include/mmsystem.h+3-31.1 -> 1.2
lib/winmm/lolvldrv.c+4-11.7 -> 1.8
         /mci.c+11-111.5 -> 1.6
         /mmsystem.c+7-51.3 -> 1.4
         /playsound.c+2-21.4 -> 1.5
         /time.c-111.5 -> 1.6
         /winehq2ros.patch+46-101.9 -> 1.10
         /winmm.c+14-51.14 -> 1.15
+133-2272
1 added + 1 removed + 8 modified, total 10 files
Sync to Wine-20041201
Filip Navara <xnavara@volny.cz>
- Check the return value from *_GETNUMDEVS message as per KB90562.
- Fix typo in MMDRV_InstallMap.
Eric Pouech <pouech-eric@wanadoo.fr>
- Const correctness fixes.
Robert Shearman <rob@codeweavers.com>
- Fix broken thread start routines.
Eric Pouech <pouech-eric@wanadoo.fr>
Filip Navara <xnavara@volny.cz>
32 bit low level drivers now use a Unicode interface (used to be ANSI):
- Send the *_GETDEVCAPS messages in unicode format from the
  *GetDevCapsW function and call the *GetDevCapsW from their respective
  Ansi versions.
- Modify all low level drivers to correctly process the *_GETDEVCAPS
  messages as unicode.
- *_GETDEVCAPS messages are now mapped from/to unicode for 16 bit code.
- Removed all SoundBlaster naming oldies.
- Better use of some unicode functions (instead of Ansi) in winmm.
Jeremy White <jwhite@codeweavers.com>
- The Sleep(0) in this loop is incorrect, and should be removed.  This
  fixes iTunes and a game reported by che.
Remi Assailly <remi.assailly@free.fr>
- Add some missing error values in WINMM_ErrorToString.

reactos/include
mmsystem.h removed after 1.1
diff -N mmsystem.h
--- mmsystem.h	15 Dec 2003 20:21:57 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,2224 +0,0 @@
-/*
- * MMSYSTEM - Multimedia Wine Extension ... :-)
- *
- * Copyright (C) the Wine project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __WINE_MMSYSTEM_H
-#define __WINE_MMSYSTEM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef LPSTR		HPSTR;          /* a huge version of LPSTR */
-typedef LPCSTR		HPCSTR;         /* a huge version of LPCSTR */
-#ifndef __REACTOS__
-typedef UINT*           LPUINT;
-#endif
-
-DECLARE_HANDLE(HDRVR);
-DECLARE_HANDLE(HWAVE);
-DECLARE_HANDLE(HWAVEIN);
-DECLARE_HANDLE(HWAVEOUT);
-DECLARE_HANDLE(HMIDI);
-DECLARE_HANDLE(HMIDIIN);
-DECLARE_HANDLE(HMIDIOUT);
-DECLARE_HANDLE(HMIDISTRM);
-DECLARE_HANDLE(HMIXER);
-DECLARE_HANDLE(HMIXEROBJ);
-DECLARE_HANDLE(HMMIO);
-
-typedef HMIDI *LPHMIDI;
-typedef HMIDIIN *LPHMIDIIN;
-typedef HMIDIOUT *LPHMIDIOUT;
-typedef HMIDISTRM *LPHMIDISTRM;
-typedef HMIXER *LPHMIXER;
-typedef HMIXEROBJ *LPHMIXEROBJ;
-typedef HWAVEIN *LPHWAVEIN;
-typedef HWAVEOUT *LPHWAVEOUT;
-
-#include <pshpack1.h>
-
-typedef LRESULT (CALLBACK *DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
-
-#define MAXWAVEDRIVERS	10
-#define MAXMIDIDRIVERS	10
-#define MAXAUXDRIVERS	10
-#define MAXMCIDRIVERS	32
-#define MAXMIXERDRIVERS	10
-
-#define MAXPNAMELEN      32     /* max product name length (including NULL) */
-#define MAXERRORLENGTH   128    /* max error text length (including NULL) */
-#define MAX_JOYSTICKOEMVXDNAME	260
-
-#ifndef _MCIERROR_
-#define _MCIERROR_
-typedef DWORD   MCIERROR;
-#endif
-typedef UINT	MMVERSION;
-#ifndef _MCIDEVICEID_
-#define _MCIDEVICEID_
-typedef UINT	MCIDEVICEID;
-#endif
-typedef	UINT	MMRESULT;
-
-typedef struct {
-    UINT    wType;
-    union {
-	DWORD ms;
-	DWORD sample;
-	DWORD cb;
-        DWORD ticks;
-	struct {
-	    BYTE hour;
-	    BYTE min;
-	    BYTE sec;
-	    BYTE frame;
-	    BYTE fps;
-	    BYTE dummy;
-	    BYTE pad[2];
-	} smpte;
-	struct {
-	    DWORD songptrpos;
-	} midi;
-    } u;
-} MMTIME,  *LPMMTIME;
-
-#define TIME_MS         0x0001  /* time in milliseconds */
-#define TIME_SAMPLES    0x0002  /* number of wave samples */
-#define TIME_BYTES      0x0004  /* current byte offset */
-#define TIME_SMPTE      0x0008  /* SMPTE time */
-#define TIME_MIDI       0x0010  /* MIDI time */
-#define TIME_TICKS	0x0020  /* MIDI ticks */
-
-#define MM_JOY1MOVE         0x3A0           /* joystick */
-#define MM_JOY2MOVE         0x3A1
-#define MM_JOY1ZMOVE        0x3A2
-#define MM_JOY2ZMOVE        0x3A3
-#define MM_JOY1BUTTONDOWN   0x3B5
-#define MM_JOY2BUTTONDOWN   0x3B6
-#define MM_JOY1BUTTONUP     0x3B7
-#define MM_JOY2BUTTONUP     0x3B8
-
-#define MM_MCINOTIFY        0x3B9           /* MCI */
-
-#define MM_WOM_OPEN         0x3BB           /* waveform output */
-#define MM_WOM_CLOSE        0x3BC
-#define MM_WOM_DONE         0x3BD
-
-#define MM_WIM_OPEN         0x3BE           /* waveform input */
-#define MM_WIM_CLOSE        0x3BF
-#define MM_WIM_DATA         0x3C0
-
-#define MM_MIM_OPEN         0x3C1           /* MIDI input */
-#define MM_MIM_CLOSE        0x3C2
-#define MM_MIM_DATA         0x3C3
-#define MM_MIM_LONGDATA     0x3C4
-#define MM_MIM_ERROR        0x3C5
-#define MM_MIM_LONGERROR    0x3C6
-
-#define MM_MOM_OPEN         0x3C7           /* MIDI output */
-#define MM_MOM_CLOSE        0x3C8
-#define MM_MOM_DONE         0x3C9
-#define MM_MOM_POSITIONCB   0x3CA
-
-#define MM_MIM_MOREDATA     0x3CC
-
-#define MM_MIXM_LINE_CHANGE 0x3D0
-#define MM_MIXM_CONTROL_CHANGE 0x3D1
-
-#define MMSYSERR_BASE          0
-#define WAVERR_BASE            32
-#define MIDIERR_BASE           64
-#define TIMERR_BASE            96
-#define JOYERR_BASE            160
-#define MCIERR_BASE            256
-
-#define MCI_STRING_OFFSET      512
-#define MCI_VD_OFFSET          1024
-#define MCI_CD_OFFSET          1088
-#define MCI_WAVE_OFFSET        1152
-#define MCI_SEQ_OFFSET         1216
-
-#define MMSYSERR_NOERROR      	0                    /* no error */
-#define MMSYSERR_ERROR        	(MMSYSERR_BASE + 1)  /* unspecified error */
-#define MMSYSERR_BADDEVICEID  	(MMSYSERR_BASE + 2)  /* device ID out of range */
-#define MMSYSERR_NOTENABLED   	(MMSYSERR_BASE + 3)  /* driver failed enable */
-#define MMSYSERR_ALLOCATED    	(MMSYSERR_BASE + 4)  /* device already allocated */
-#define MMSYSERR_INVALHANDLE  	(MMSYSERR_BASE + 5)  /* device handle is invalid */
-#define MMSYSERR_NODRIVER     	(MMSYSERR_BASE + 6)  /* no device driver present */
-#define MMSYSERR_NOMEM        	(MMSYSERR_BASE + 7)  /* memory allocation error */
-#define MMSYSERR_NOTSUPPORTED 	(MMSYSERR_BASE + 8)  /* function isn't supported */
-#define MMSYSERR_BADERRNUM    	(MMSYSERR_BASE + 9)  /* error value out of range */
-#define MMSYSERR_INVALFLAG    	(MMSYSERR_BASE + 10) /* invalid flag passed */
-#define MMSYSERR_INVALPARAM   	(MMSYSERR_BASE + 11) /* invalid parameter passed */
-#define MMSYSERR_LASTERROR    	(MMSYSERR_BASE + 11) /* last error in range */
-
-#define CALLBACK_TYPEMASK   	0x00070000l    	/* callback type mask */
-#define CALLBACK_NULL       	0x00000000l    	/* no callback */
-#define CALLBACK_WINDOW     	0x00010000l    	/* dwCallback is a HWND */
-#define CALLBACK_TASK       	0x00020000l    	/* dwCallback is a HTASK */
-#define CALLBACK_THREAD		(CALLBACK_TASK)	/* dwCallback is a thread ID */
-#define CALLBACK_FUNCTION   	0x00030000l    	/* dwCallback is a FARPROC */
-#define CALLBACK_EVENT		0x00050000l	/* dwCallback is an EVENT Handler */
-
-#define DRV_LOAD                0x0001
-#define DRV_ENABLE              0x0002
-#define DRV_OPEN                0x0003
-#define DRV_CLOSE               0x0004
-#define DRV_DISABLE             0x0005
-#define DRV_FREE                0x0006
-#define DRV_CONFIGURE           0x0007
-#define DRV_QUERYCONFIGURE      0x0008
-#define DRV_INSTALL             0x0009
-#define DRV_REMOVE              0x000A
-#define DRV_EXITSESSION         0x000B
-#define DRV_EXITAPPLICATION     0x000C
-#define DRV_POWER               0x000F
-
-#define DRV_RESERVED            0x0800
-#define DRV_USER                0x4000
-
-#define DRVCNF_CANCEL           0x0000
-#define DRVCNF_OK               0x0001
-#define DRVCNF_RESTART 		0x0002
-
-#define DRVEA_NORMALEXIT  	0x0001
-#define DRVEA_ABNORMALEXIT 	0x0002
-
-#define DRV_SUCCESS		0x0001
-#define DRV_FAILURE		0x0000
-
-#define GND_FIRSTINSTANCEONLY 	0x00000001
-
-#define GND_FORWARD  		0x00000000
-#define GND_REVERSE    		0x00000002
-
-typedef struct {
-    DWORD   			dwDCISize;
-    LPCWSTR  			lpszDCISectionName;
-    LPCWSTR  			lpszDCIAliasName;
-} DRVCONFIGINFO, *LPDRVCONFIGINFO;
-
-
-LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr,
-			     UINT Msg, LPARAM lParam1, LPARAM lParam2);
-/* this sounds odd, but it's the way it is. OpenDriverA even disapeared
- * from latest SDK
- */
-HDRVR 	WINAPI OpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName,
-			   LPARAM lParam2);
-HDRVR 	WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName,
-                          LPARAM lParam2);
-LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
-LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message,
-				 LPARAM lParam1, LPARAM lParam2);
-HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
-
-DWORD	WINAPI GetDriverFlags(HDRVR hDriver);
-
-typedef void (CALLBACK *LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
-
-#define MM_MICROSOFT            1       /* Microsoft Corp. */
-
-#define MM_MIDI_MAPPER          1       /* MIDI Mapper */
-#define MM_WAVE_MAPPER          2       /* Wave Mapper */
-
-#define MM_SNDBLST_MIDIOUT      3       /* Sound Blaster MIDI output port */
-#define MM_SNDBLST_MIDIIN       4       /* Sound Blaster MIDI input port  */
-#define MM_SNDBLST_SYNTH        5       /* Sound Blaster internal synthesizer */
-#define MM_SNDBLST_WAVEOUT      6       /* Sound Blaster waveform output */
-#define MM_SNDBLST_WAVEIN       7       /* Sound Blaster waveform input */
-
-#define MM_ADLIB                9       /* Ad Lib-compatible synthesizer */
-
-#define MM_MPU401_MIDIOUT       10      /* MPU401-compatible MIDI output port */
-#define MM_MPU401_MIDIIN        11      /* MPU401-compatible MIDI input port */
-
-#define MM_PC_JOYSTICK          12      /* Joystick adapter */
-
-
-UINT 		WINAPI 	mmsystemGetVersion(void);
-BOOL 		WINAPI	sndPlaySoundA(LPCSTR lpszSound, UINT fuSound);
-BOOL 		WINAPI	sndPlaySoundW(LPCWSTR lpszSound, UINT fuSound);
-#define 		sndPlaySound WINELIB_NAME_AW(sndPlaySound)
-BOOL 		WINAPI 	PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
-BOOL 		WINAPI 	PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
-#define 		PlaySound WINELIB_NAME_AW(PlaySound)
-
-#define SND_SYNC            	0x0000  /* play synchronously (default) */
-#define SND_ASYNC           	0x0001  /* play asynchronously */
-#define SND_NODEFAULT       	0x0002  /* don't use default sound */
-#define SND_MEMORY          	0x0004  /* lpszSoundName points to a memory file */
-#define SND_LOOP            	0x0008  /* loop the sound until next sndPlaySound */
-#define SND_NOSTOP          	0x0010  /* don't stop any currently playing sound */
-
-#define SND_NOWAIT		0x00002000L /* don't wait if the driver is busy */
-#define SND_ALIAS       	0x00010000L /* name is a registry alias */
-#define SND_ALIAS_ID		0x00110000L /* alias is a predefined ID */
-#define SND_FILENAME    	0x00020000L /* name is file name */
-#define SND_RESOURCE    	0x00040004L /* name is resource name or atom */
-#define SND_PURGE		0x00000040L /* purge all sounds */
-#define SND_APPLICATION     	0x00000080L /* look for application specific association */
-
-/* waveform audio error return values */
-#define WAVERR_BADFORMAT      (WAVERR_BASE + 0)    /* unsupported wave format */
-#define WAVERR_STILLPLAYING   (WAVERR_BASE + 1)    /* still something playing */
-#define WAVERR_UNPREPARED     (WAVERR_BASE + 2)    /* header not prepared */
-#define WAVERR_SYNC           (WAVERR_BASE + 3)    /* device is synchronous */
-#define WAVERR_LASTERROR      (WAVERR_BASE + 3)    /* last error in range */
-
-typedef LPDRVCALLBACK LPWAVECALLBACK;
-
-#define WOM_OPEN        MM_WOM_OPEN
-#define WOM_CLOSE       MM_WOM_CLOSE
-#define WOM_DONE        MM_WOM_DONE
-#define WIM_OPEN        MM_WIM_OPEN
-#define WIM_CLOSE       MM_WIM_CLOSE
-#define WIM_DATA        MM_WIM_DATA
-
-#define WAVE_MAPPER     (-1)
-
-#define  WAVE_FORMAT_QUERY     		0x0001
-#define  WAVE_ALLOWSYNC        		0x0002
-#define  WAVE_MAPPED               	0x0004
-#define  WAVE_FORMAT_DIRECT        	0x0008
-#define  WAVE_FORMAT_DIRECT_QUERY  	(WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
-
-typedef struct wavehdr_tag {
-    LPSTR       lpData;		/* pointer to locked data buffer */
-    DWORD       dwBufferLength;	/* length of data buffer */
-    DWORD       dwBytesRecorded;/* used for input only */
-    DWORD       dwUser;		/* for client's use */
-    DWORD       dwFlags;	/* assorted flags (see defines) */
-    DWORD       dwLoops;	/* loop control counter */
-
-    struct wavehdr_tag *lpNext;	/* reserved for driver */
-    DWORD       reserved;	/* reserved for driver */
-} WAVEHDR, *PWAVEHDR, *NPWAVEHDR, *LPWAVEHDR;
-
-#define WHDR_DONE       0x00000001  /* done bit */
-#define WHDR_PREPARED   0x00000002  /* set if this header has been prepared */
-#define WHDR_BEGINLOOP  0x00000004  /* loop start block */
-#define WHDR_ENDLOOP    0x00000008  /* loop end block */
-#define WHDR_INQUEUE    0x00000010  /* reserved for driver */
-
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    CHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
-    DWORD	dwFormats;		/* formats supported */
-    WORD	wChannels;		/* number of sources supported */
-    WORD	wReserved1;		/* padding */
-    DWORD	dwSupport;		/* functionality supported by driver */
-} WAVEOUTCAPSA, *LPWAVEOUTCAPSA;
-
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    WCHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
-    DWORD	dwFormats;		/* formats supported */
-    WORD	wChannels;		/* number of sources supported */
-    WORD	wReserved1;		/* padding */
-    DWORD	dwSupport;		/* functionality supported by driver */
-} WAVEOUTCAPSW, *LPWAVEOUTCAPSW;
-//////DECL_WINELIB_TYPE_AW(WAVEOUTCAPS)
-////DECL_WINELIB_TYPE_AW(LPWAVEOUTCAPS)
-
-#define WAVECAPS_PITCH          0x0001   /* supports pitch control */
-#define WAVECAPS_PLAYBACKRATE   0x0002   /* supports playback rate control */
-#define WAVECAPS_VOLUME         0x0004   /* supports volume control */
-#define WAVECAPS_LRVOLUME       0x0008   /* separate left-right volume control */
-#define WAVECAPS_SYNC           0x0010	 /* driver is synchrounous and playing is blocking */
-#define WAVECAPS_SAMPLEACCURATE 0x0020	 /* position is sample accurate */
-#define WAVECAPS_DIRECTSOUND	0x0040   /* ? */
-
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    CHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
-    DWORD	dwFormats;		/* formats supported */
-    WORD	wChannels;		/* number of channels supported */
-    WORD	wReserved1;
-} WAVEINCAPSA, *LPWAVEINCAPSA;
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    WCHAR	szPname[MAXPNAMELEN];	/* product name (0 terminated string) */
-    DWORD	dwFormats;		/* formats supported */
-    WORD	wChannels;		/* number of channels supported */
-    WORD	wReserved1;
-} WAVEINCAPSW, *LPWAVEINCAPSW;
-//DECL_WINELIB_TYPE_AW(WAVEINCAPS)
-//DECL_WINELIB_TYPE_AW(LPWAVEINCAPS)
-
-#define WAVE_INVALIDFORMAT     0x00000000    /* invalid format */
-#define WAVE_FORMAT_1M08       0x00000001    /* 11.025 kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_1S08       0x00000002    /* 11.025 kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_1M16       0x00000004    /* 11.025 kHz, Mono,   16-bit */
-#define WAVE_FORMAT_1S16       0x00000008    /* 11.025 kHz, Stereo, 16-bit */
-#define WAVE_FORMAT_2M08       0x00000010    /* 22.05  kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_2S08       0x00000020    /* 22.05  kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_2M16       0x00000040    /* 22.05  kHz, Mono,   16-bit */
-#define WAVE_FORMAT_2S16       0x00000080    /* 22.05  kHz, Stereo, 16-bit */
-#define WAVE_FORMAT_4M08       0x00000100    /* 44.1   kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_4S08       0x00000200    /* 44.1   kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_4M16       0x00000400    /* 44.1   kHz, Mono,   16-bit */
-#define WAVE_FORMAT_4S16       0x00000800    /* 44.1   kHz, Stereo, 16-bit */
-#define WAVE_FORMAT_48M08      0x00001000    /* 48     kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_48S08      0x00002000    /* 48     kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_48M16      0x00004000    /* 48     kHz, Mono,   16-bit */
-#define WAVE_FORMAT_48S16      0x00008000    /* 48     kHz, Stereo, 16-bit */
-#define WAVE_FORMAT_96M08      0x00010000    /* 96     kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_96S08      0x00020000    /* 96     kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_96M16      0x00040000    /* 96     kHz, Mono,   16-bit */
-#define WAVE_FORMAT_96S16      0x00080000    /* 96     kHz, Stereo, 16-bit */
-
-/* General format structure common to all formats, same for Win16 and Win32 */
-typedef struct {
-    WORD	wFormatTag;	/* format type */
-    WORD	nChannels;	/* number of channels */
-    DWORD	nSamplesPerSec;	/* sample rate */
-    DWORD	nAvgBytesPerSec;/* for buffer estimation */
-    WORD	nBlockAlign; 	/* block size of data */
-} WAVEFORMAT, *LPWAVEFORMAT;
-
-#define WAVE_FORMAT_PCM     1
-
-typedef struct {
-    WAVEFORMAT	wf;
-    WORD	wBitsPerSample;
-} PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
-
-#ifndef _WAVEFORMATEX_
-#define _WAVEFORMATEX_
-/* dito same for Win16 / Win32 */
-typedef struct {
-    WORD	wFormatTag;	/* format type */
-    WORD	nChannels;	/* number of channels (i.e. mono, stereo...) */
-    DWORD	nSamplesPerSec;	/* sample rate */
-    DWORD	nAvgBytesPerSec;/* for buffer estimation */
-    WORD	nBlockAlign;	/* block size of data */
-    WORD	wBitsPerSample;	/* number of bits per sample of mono data */
-    WORD	cbSize;		/* the count in bytes of the size of */
-				/* extra information (after cbSize) */
-} WAVEFORMATEX, *LPWAVEFORMATEX, *NPWAVEFORMATEX, *PWAVEFORMATEX;
-#endif
-
-UINT 		WINAPI 	waveOutGetNumDevs(void);
-UINT 		WINAPI 	waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
-UINT 		WINAPI	waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
-#define 		waveOutGetDevCaps WINELIB_NAME_AW(waveOutGetDevCaps)
-UINT 		WINAPI	waveOutGetVolume(HWAVEOUT,DWORD*);
-UINT 		WINAPI 	waveOutSetVolume(HWAVEOUT,DWORD);
-UINT 		WINAPI 	waveOutGetErrorTextA(UINT,LPSTR,UINT);
-UINT 		WINAPI 	waveOutGetErrorTextW(UINT,LPWSTR,UINT);
-#define 	    	waveOutGetErrorText WINELIB_NAME_AW(waveOutGetErrorText)
-UINT 		WINAPI 	waveOutOpen(HWAVEOUT*,UINT,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
-UINT 		WINAPI 	waveOutClose(HWAVEOUT);
-UINT 		WINAPI 	waveOutPrepareHeader(HWAVEOUT,WAVEHDR*,UINT);
-UINT 		WINAPI 	waveOutUnprepareHeader(HWAVEOUT,WAVEHDR*,UINT);
-UINT 		WINAPI 	waveOutWrite(HWAVEOUT,WAVEHDR*,UINT);
-UINT 		WINAPI 	waveOutPause(HWAVEOUT);
-UINT 		WINAPI 	waveOutRestart(HWAVEOUT);
-UINT 		WINAPI 	waveOutReset(HWAVEOUT);
-UINT 		WINAPI 	waveOutBreakLoop(HWAVEOUT);
-UINT 		WINAPI 	waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
-UINT 		WINAPI 	waveOutGetPitch(HWAVEOUT,DWORD*);
-UINT 		WINAPI 	waveOutSetPitch(HWAVEOUT,DWORD);
-UINT 		WINAPI 	waveOutGetPlaybackRate(HWAVEOUT,DWORD*);
-UINT 		WINAPI 	waveOutSetPlaybackRate(HWAVEOUT,DWORD);
-UINT 		WINAPI 	waveOutGetID(HWAVEOUT,UINT*);
-UINT 		WINAPI 	waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
-UINT 		WINAPI 	waveInGetNumDevs(void);
-UINT 		WINAPI 	waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
-UINT 		WINAPI 	waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
-#define 		waveInGetDevCaps WINELIB_NAME_AW(waveInGetDevCaps)
-UINT 		WINAPI 	waveInGetErrorTextA(UINT,LPSTR,UINT);
-UINT 		WINAPI 	waveInGetErrorTextW(UINT,LPWSTR,UINT);
-#define 		waveInGetErrorText WINELIB_NAME_AW(waveInGetErrorText)
-UINT 		WINAPI  waveInOpen(HWAVEIN*,UINT,const LPWAVEFORMATEX,DWORD,DWORD,DWORD);
-UINT 		WINAPI  waveInClose(HWAVEIN);
-UINT 		WINAPI  waveInPrepareHeader(HWAVEIN,WAVEHDR*,UINT);
-UINT 		WINAPI  waveInUnprepareHeader(HWAVEIN,WAVEHDR*,UINT);
-UINT 		WINAPI  waveInAddBuffer(HWAVEIN,WAVEHDR*,UINT);
-UINT 		WINAPI  waveInStart(HWAVEIN);
-UINT 		WINAPI  waveInStop(HWAVEIN);
-UINT 		WINAPI  waveInReset(HWAVEIN);
-UINT 		WINAPI  waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
-UINT 		WINAPI  waveInGetID(HWAVEIN,UINT*);
-UINT 		WINAPI 	waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
-
-#define MIDIERR_UNPREPARED    (MIDIERR_BASE + 0)   /* header not prepared */
-#define MIDIERR_STILLPLAYING  (MIDIERR_BASE + 1)   /* still something playing */
-#define MIDIERR_NOMAP         (MIDIERR_BASE + 2)   /* no current map */
-#define MIDIERR_NOTREADY      (MIDIERR_BASE + 3)   /* hardware is still busy */
-#define MIDIERR_NODEVICE      (MIDIERR_BASE + 4)   /* port no longer connected */
-#define MIDIERR_INVALIDSETUP  (MIDIERR_BASE + 5)   /* invalid setup */
-#define MIDIERR_LASTERROR     (MIDIERR_BASE + 5)   /* last error in range */
-
-typedef LPDRVCALLBACK LPMIDICALLBACK;
-#define MIDIPATCHSIZE   128
-typedef WORD PATCHARRAY[MIDIPATCHSIZE];
-typedef WORD *LPPATCHARRAY;
-typedef WORD KEYARRAY[MIDIPATCHSIZE];
-typedef WORD *LPKEYARRAY;
-
-#define MIM_OPEN        MM_MIM_OPEN
-#define MIM_CLOSE       MM_MIM_CLOSE
-#define MIM_DATA        MM_MIM_DATA
-#define MIM_LONGDATA    MM_MIM_LONGDATA
-#define MIM_ERROR       MM_MIM_ERROR
-#define MIM_LONGERROR   MM_MIM_LONGERROR
-#define MIM_MOREDATA	MM_MIM_MOREDATA
-
-#define MOM_OPEN        MM_MOM_OPEN
-#define MOM_CLOSE       MM_MOM_CLOSE
-#define MOM_DONE        MM_MOM_DONE
-#define MOM_POSITIONCB	MM_MOM_POSITIONCB
-
-/* device ID for MIDI mapper */
-
-#define MIDIMAPPER     (-1)
-#define MIDI_MAPPER    (-1)
-
-/* Only on Win95 and up */
-#define MIDI_IO_STATUS	0x00000020L
-
-/* flags for wFlags parm of
-	midiOutCachePatches(),
-	midiOutCacheDrumPatches() */
-#define MIDI_CACHE_ALL      1
-#define MIDI_CACHE_BESTFIT  2
-#define MIDI_CACHE_QUERY    3
-#define MIDI_UNCACHE        4
-
-typedef struct {
-    WORD	wMid;		/* manufacturer ID */
-    WORD	wPid;		/* product ID */
-    MMVERSION	vDriverVersion;	/* version of the driver */
-    CHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
-    WORD	wTechnology;	/* type of device */
-    WORD	wVoices;	/* # of voices (internal synth only) */
-    WORD	wNotes;		/* max # of notes (internal synth only) */
-    WORD	wChannelMask;	/* channels used (internal synth only) */
-    DWORD	dwSupport;	/* functionality supported by driver */
-} MIDIOUTCAPSA, *LPMIDIOUTCAPSA;
-
-typedef struct {
-    WORD	wMid;		/* manufacturer ID */
-    WORD	wPid;		/* product ID */
-    MMVERSION	vDriverVersion;	/* version of the driver */
-    WCHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
-    WORD	wTechnology;	/* type of device */
-    WORD	wVoices;	/* # of voices (internal synth only) */
-    WORD	wNotes;		/* max # of notes (internal synth only) */
-    WORD	wChannelMask;	/* channels used (internal synth only) */
-    DWORD	dwSupport;	/* functionality supported by driver */
-} MIDIOUTCAPSW, *LPMIDIOUTCAPSW;
-
-//DECL_WINELIB_TYPE_AW(MIDIOUTCAPS)
-//DECL_WINELIB_TYPE_AW(LPMIDIOUTCAPS)
-
-#define MOD_MIDIPORT    1  /* output port */
-#define MOD_SYNTH       2  /* generic internal synth */
-#define MOD_SQSYNTH     3  /* square wave internal synth */
-#define MOD_FMSYNTH     4  /* FM internal synth */
-#define MOD_MAPPER      5  /* MIDI mapper */
-
-#define MIDICAPS_VOLUME		0x0001  /* supports volume control */
-#define MIDICAPS_LRVOLUME	0x0002  /* separate left-right volume control */
-#define MIDICAPS_CACHE		0x0004
-#define MIDICAPS_STREAM		0x0008  /* capable of supporting stream buffer */
-
-typedef struct {
-    WORD	wMid;		/* manufacturer ID */
-    WORD	wPid;		/* product ID */
-    MMVERSION	vDriverVersion;	/* version of the driver */
-    CHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
-    DWORD	dwSupport;	/* included in win95 and higher */
-} MIDIINCAPSA, *LPMIDIINCAPSA;
-
-typedef struct {
-    WORD	wMid;		/* manufacturer ID */
-    WORD	wPid;		/* product ID */
-    MMVERSION	vDriverVersion;	/* version of the driver */
-    WCHAR	szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
-    DWORD	dwSupport;	/* included in win95 and higher */
-} MIDIINCAPSW, *LPMIDIINCAPSW;
-
-//DECL_WINELIB_TYPE_AW(MIDIINCAPS)
-//DECL_WINELIB_TYPE_AW(LPMIDIINCAPS)
-
-/* It seems that Win32 has a slightly different structure than Win 16.
- * sigh....
- */
-typedef struct midihdr_tag {
-    LPSTR	lpData;		/* pointer to locked data block */
-    DWORD	dwBufferLength;	/* length of data in data block */
-    DWORD	dwBytesRecorded;/* used for input only */
-    DWORD_PTR	dwUser;		/* for client's use */
-    DWORD	dwFlags;	/* assorted flags (see defines) */
-    struct midihdr_tag *lpNext;	/* reserved for driver */
-    DWORD	reserved;	/* reserved for driver */
-    DWORD	dwOffset;	/* offset of playback in case of
-				 * MIDISTRM buffer */
-    DWORD_PTR	dwReserved[8];	/* reserved for driver */
-} MIDIHDR, *LPMIDIHDR;
-
-#define MHDR_DONE       0x00000001       /* done bit */
-#define MHDR_PREPARED   0x00000002       /* set if header prepared */
-#define MHDR_INQUEUE    0x00000004       /* reserved for driver */
-#define MHDR_ISSTRM	0x00000008	 /* data is sent by Stream functions */
-
-typedef struct {
-    DWORD		cbStruct;
-    DWORD		dwTempo;
-} MIDIPROPTEMPO, *LPMIDIPROPTEMPO;
-
-typedef struct {
-    DWORD		cbStruct;
-    DWORD		dwTimeDiv;
-} MIDIPROPTIMEDIV, *LPMIDIPROPTIMEDIV;
-
-#define MIDIPROP_GET		0x40000000
-#define MIDIPROP_SET		0x80000000
-#define MIDIPROP_TEMPO		0x00000002
-#define MIDIPROP_TIMEDIV	0x00000001
-
-typedef struct {
-    DWORD dwDeltaTime;	/* Time, in MIDI ticks, between the previous
-			 * event and the current event. */
-    DWORD dwStreamID;	/* Reserved; must be zero. */
-    DWORD dwEvent;  	/* event => see MEVT_XXX macros */
-    DWORD dwParms[1];	/* extra pmts to dwEvent if F_LONG is set */
-} MIDIEVENT, *LPMIDIEVENT;
-
-#define MEVT_EVENTTYPE(x) ((BYTE) (((x)>>24)&0xFF))
-#define MEVT_EVENTPARM(x) ((DWORD) ((x)&0x00FFFFFFL))
-
-#define MEVT_F_CALLBACK 0x40000000l
-#define	MEVT_F_LONG     0x80000000l
-#define	MEVT_F_SHORT    0x00000000l
-#define	MEVT_COMMENT	((BYTE)0x82)
-#define	MEVT_LONGMSG	((BYTE)0x80)
-#define	MEVT_NOP	((BYTE)0x02)
-#define	MEVT_SHORTMSG	((BYTE)0x00)
-#define	MEVT_TEMPO	((BYTE)0x01)
-#define	MEVT_VERSION	((BYTE)0x84)
-
-UINT		WINAPI	midiOutGetNumDevs(void);
-UINT		WINAPI	midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
-UINT		WINAPI	midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
-#define 		midiOutGetDevCaps WINELIB_NAME_AW(midiOutGetDevCaps)
-UINT		WINAPI	midiOutGetVolume(HMIDIOUT,DWORD*);
-UINT		WINAPI	midiOutSetVolume(HMIDIOUT,DWORD);
-UINT		WINAPI	midiOutGetErrorTextA(UINT,LPSTR,UINT);
-UINT		WINAPI	midiOutGetErrorTextW(UINT,LPWSTR,UINT);
-#define 		midiOutGetErrorText WINELIB_NAME_AW(midiOutGetErrorText)
-UINT		WINAPI	midiOutOpen(HMIDIOUT*,UINT,DWORD,DWORD,DWORD);
-UINT		WINAPI	midiOutClose(HMIDIOUT);
-UINT		WINAPI	midiOutPrepareHeader(HMIDIOUT,MIDIHDR*,UINT);
-UINT		WINAPI	midiOutUnprepareHeader(HMIDIOUT,MIDIHDR*,UINT);
-UINT		WINAPI	midiOutShortMsg(HMIDIOUT,DWORD);
-UINT		WINAPI	midiOutLongMsg(HMIDIOUT,MIDIHDR*,UINT);
-UINT		WINAPI	midiOutReset(HMIDIOUT);
-UINT		WINAPI	midiOutCachePatches(HMIDIOUT,UINT,WORD*,UINT);
-UINT		WINAPI	midiOutCacheDrumPatches(HMIDIOUT,UINT,WORD*,UINT);
-UINT		WINAPI	midiOutGetID(HMIDIOUT,UINT*);
-UINT		WINAPI	midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
-
-UINT		WINAPI	midiInGetNumDevs(void);
-UINT		WINAPI	midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
-UINT		WINAPI	midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
-#define 		midiInGetDevCaps WINELIB_NAME_AW(midiInGetDevCaps)
-UINT		WINAPI	midiInGetErrorTextA(UINT,LPSTR,UINT);
-UINT		WINAPI	midiInGetErrorTextW(UINT,LPWSTR,UINT);
-#define 		midiInGetErrorText WINELIB_NAME_AW(midiInGetErrorText)
-UINT		WINAPI	midiInOpen(HMIDIIN*,UINT,DWORD,DWORD,DWORD);
-UINT		WINAPI	midiInClose(HMIDIIN);
-UINT		WINAPI	midiInPrepareHeader(HMIDIIN,MIDIHDR*,UINT);
-UINT		WINAPI	midiInUnprepareHeader(HMIDIIN,MIDIHDR*,UINT);
-UINT		WINAPI	midiInAddBuffer(HMIDIIN,MIDIHDR*,UINT);
-UINT		WINAPI	midiInStart(HMIDIIN);
-UINT		WINAPI	midiInStop(HMIDIIN);
-UINT		WINAPI	midiInReset(HMIDIIN);
-UINT		WINAPI	midiInGetID(HMIDIIN,UINT*);
-UINT		WINAPI	midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
-MMRESULT	WINAPI	midiStreamClose(HMIDISTRM hms);
-MMRESULT	WINAPI	midiStreamOpen(HMIDISTRM* phms, LPUINT uDeviceID, DWORD cMidi,
-				       DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
-MMRESULT	WINAPI	midiStreamOut(HMIDISTRM hms, LPMIDIHDR lpMidiHdr, UINT cbMidiHdr);
-MMRESULT	WINAPI	midiStreamPause(HMIDISTRM hms);
-MMRESULT	WINAPI	midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
-MMRESULT	WINAPI	midiStreamProperty(HMIDISTRM hms, LPBYTE lpPropData, DWORD dwProperty);
-MMRESULT	WINAPI	midiStreamRestart(HMIDISTRM hms);
-MMRESULT	WINAPI	midiStreamStop(HMIDISTRM hms);
-
-#define AUX_MAPPER     (-1)
-
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    CHAR	szPname[MAXPNAMELEN];	/* product name (NULL terminated string) */
-    WORD	wTechnology;		/* type of device */
-    WORD	wReserved1;		/* padding */
-    DWORD	dwSupport;		/* functionality supported by driver */
-} AUXCAPSA, *LPAUXCAPSA;
-
-typedef struct {
-    WORD	wMid;			/* manufacturer ID */
-    WORD	wPid;			/* product ID */
-    MMVERSION	vDriverVersion;		/* version of the driver */
-    WCHAR	szPname[MAXPNAMELEN];	/* product name (NULL terminated string) */
-    WORD	wTechnology;		/* type of device */
-    WORD	wReserved1;		/* padding */
-    DWORD	dwSupport;		/* functionality supported by driver */
-} AUXCAPSW, *LPAUXCAPSW;
-
-//DECL_WINELIB_TYPE_AW(AUXCAPS)
-//DECL_WINELIB_TYPE_AW(LPAUXCAPS)
-
-#define AUXCAPS_CDAUDIO    1       /* audio from internal CD-ROM drive */
-#define AUXCAPS_AUXIN      2       /* audio from auxiliary input jacks */
-
-#define AUXCAPS_VOLUME          0x0001  /* supports volume control */
-#define AUXCAPS_LRVOLUME        0x0002  /* separate left-right volume control */
-
-UINT		WINAPI	auxGetNumDevs(void);
-UINT		WINAPI	auxGetDevCapsA(UINT,LPAUXCAPSA,UINT);
-UINT		WINAPI	auxGetDevCapsW(UINT,LPAUXCAPSW,UINT);
-#define 		auxGetDevCaps WINELIB_NAME_AW(auxGetDevCaps)
-UINT		WINAPI	auxSetVolume(UINT,DWORD);
-UINT		WINAPI	auxGetVolume(UINT,LPDWORD);
-UINT		WINAPI	auxOutMessage(UINT,UINT,DWORD,DWORD);
-
-#define TIMERR_NOERROR        (0)                  /* no error */
-#define TIMERR_NOCANDO        (TIMERR_BASE+1)      /* request not completed */
-#define TIMERR_STRUCT         (TIMERR_BASE+33)     /* time struct size */
-
-typedef void (CALLBACK *LPTIMECALLBACK)(UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
-
-#define TIME_ONESHOT			0x0000	/* program timer for single event */
-#define TIME_PERIODIC			0x0001	/* program for continuous periodic event */
-#define TIME_CALLBACK_FUNCTION		0x0000	/* callback is function */
-#define TIME_CALLBACK_EVENT_SET		0x0010	/* callback is event - use SetEvent */
-#define TIME_CALLBACK_EVENT_PULSE 	0x0020	/* callback is event - use PulseEvent */
-#define TIME_KILL_SYNCHRONOUS           0x0100
-
-typedef struct {
-    UINT	wPeriodMin;
-    UINT	wPeriodMax;
-} TIMECAPS, *LPTIMECAPS;
-
-
-MMRESULT	WINAPI	timeGetSystemTime(LPMMTIME,UINT);
-DWORD		WINAPI	timeGetTime(void);	/* same for win32/win16 */
-MMRESULT	WINAPI	timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
-MMRESULT	WINAPI	timeKillEvent(UINT);
-MMRESULT	WINAPI	timeGetDevCaps(LPTIMECAPS,UINT);
-MMRESULT	WINAPI	timeBeginPeriod(UINT);
-MMRESULT	WINAPI	timeEndPeriod(UINT);
-
-#define JOYERR_NOERROR        (0)                  /* no error */
-#define JOYERR_PARMS          (JOYERR_BASE+5)      /* bad parameters */
-#define JOYERR_NOCANDO        (JOYERR_BASE+6)      /* request not completed */
-#define JOYERR_UNPLUGGED      (JOYERR_BASE+7)      /* joystick is unplugged */
-
-/* JOYINFO, JOYINFOEX, MM_JOY* */
-#define JOY_BUTTON1         	0x0001
-#define JOY_BUTTON2         	0x0002
-#define JOY_BUTTON3         	0x0004
-#define JOY_BUTTON4         	0x0008
-#define JOY_BUTTON1CHG      	0x0100
-#define JOY_BUTTON2CHG      	0x0200
-#define JOY_BUTTON3CHG      	0x0400
-#define JOY_BUTTON4CHG      	0x0800
-
-#define JOYSTICKID1         	0
-#define JOYSTICKID2         	1
-
-/* JOYCAPS.wCaps */
-#define JOYCAPS_HASZ		0x0001
-#define JOYCAPS_HASR		0x0002
-#define JOYCAPS_HASU		0x0004
-#define JOYCAPS_HASV		0x0008
-#define JOYCAPS_HASPOV		0x0010
-#define JOYCAPS_POV4DIR		0x0020
-#define JOYCAPS_POVCTS		0x0040
-
-/* JOYINFOEX stuff */
-#define JOY_POVCENTERED		(WORD) -1
-#define JOY_POVFORWARD		0
-#define JOY_POVRIGHT		9000
-#define JOY_POVBACKWARD		18000
-#define JOY_POVLEFT		27000
-
-#define JOY_RETURNX		0x00000001
-#define JOY_RETURNY		0x00000002
-#define JOY_RETURNZ		0x00000004
-#define JOY_RETURNR		0x00000008
-#define JOY_RETURNU		0x00000010
-#define JOY_RETURNV		0x00000020
-#define JOY_RETURNPOV		0x00000040
-#define JOY_RETURNBUTTONS	0x00000080
-#define JOY_RETURNRAWDATA	0x00000100
-#define JOY_RETURNPOVCTS	0x00000200
-#define JOY_RETURNCENTERED	0x00000400
-#define JOY_USEDEADZONE		0x00000800
-#define JOY_RETURNALL		(JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
-				 JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
-				 JOY_RETURNPOV | JOY_RETURNBUTTONS)
-#define JOY_CAL_READALWAYS	0x00010000
-#define JOY_CAL_READXYONLY	0x00020000
-#define JOY_CAL_READ3		0x00040000
-#define JOY_CAL_READ4		0x00080000
-#define JOY_CAL_READXONLY	0x00100000
-#define JOY_CAL_READYONLY	0x00200000
-#define JOY_CAL_READ5		0x00400000
-#define JOY_CAL_READ6		0x00800000
-#define JOY_CAL_READZONLY	0x01000000
-#define JOY_CAL_READRONLY	0x02000000
-#define JOY_CAL_READUONLY	0x04000000
-#define JOY_CAL_READVONLY	0x08000000
-
-typedef struct {
-    WORD wMid;
-    WORD wPid;
-    CHAR szPname[MAXPNAMELEN];
-    UINT wXmin;
-    UINT wXmax;
-    UINT wYmin;
-    UINT wYmax;
-    UINT wZmin;
-    UINT wZmax;
-    UINT wNumButtons;
-    UINT wPeriodMin;
-    UINT wPeriodMax;
-    UINT wRmin;
-    UINT wRmax;
-    UINT wUmin;
-    UINT wUmax;
-    UINT wVmin;
-    UINT wVmax;
-    UINT wCaps;
-    UINT wMaxAxes;
-    UINT wNumAxes;
-    UINT wMaxButtons;
-    CHAR szRegKey[MAXPNAMELEN];
-    CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
-} JOYCAPSA, *LPJOYCAPSA;
-
-typedef struct {
-    WORD wMid;
-    WORD wPid;
-    WCHAR szPname[MAXPNAMELEN];
-    UINT wXmin;
-    UINT wXmax;
-    UINT wYmin;
-    UINT wYmax;
-    UINT wZmin;
-    UINT wZmax;
-    UINT wNumButtons;
-    UINT wPeriodMin;
-    UINT wPeriodMax;
-    UINT wRmin;
-    UINT wRmax;
-    UINT wUmin;
-    UINT wUmax;
-    UINT wVmin;
-    UINT wVmax;
-    UINT wCaps;
-    UINT wMaxAxes;
-    UINT wNumAxes;
-    UINT wMaxButtons;
-    WCHAR szRegKey[MAXPNAMELEN];
-    WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
-} JOYCAPSW, *LPJOYCAPSW;
-//DECL_WINELIB_TYPE_AW(JOYCAPS)
-//DECL_WINELIB_TYPE_AW(LPJOYCAPS)
-
-typedef struct {
-    UINT wXpos;
-    UINT wYpos;
-    UINT wZpos;
-    UINT wButtons;
-} JOYINFO, *LPJOYINFO;
-
-typedef struct {
-    DWORD	dwSize;		/* size of structure */
-    DWORD	dwFlags;	/* flags to indicate what to return */
-    DWORD	dwXpos;		/* x position */
-    DWORD	dwYpos;		/* y position */
-    DWORD	dwZpos;		/* z position */
-    DWORD	dwRpos;		/* rudder/4th axis position */
-    DWORD	dwUpos;		/* 5th axis position */
-    DWORD	dwVpos;		/* 6th axis position */
-    DWORD	dwButtons;	/* button states */
-    DWORD	dwButtonNumber;	/* current button number pressed */
-    DWORD	dwPOV;		/* point of view state */
-    DWORD	dwReserved1;	/* reserved for communication between winmm & driver */
-    DWORD	dwReserved2;	/* reserved for future expansion */
-} JOYINFOEX,*LPJOYINFOEX;
-
-
-MMRESULT	WINAPI	joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
-MMRESULT	WINAPI	joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
-#define joyGetDevCaps WINELIB_NAME_AW(joyGetDevCaps)
-UINT		WINAPI	joyGetNumDevs(void);
-MMRESULT	WINAPI	joyGetPos(UINT,LPJOYINFO);
-MMRESULT	WINAPI	joyGetPosEx(UINT,LPJOYINFOEX);
-MMRESULT	WINAPI	joyGetThreshold(UINT,UINT*);
-MMRESULT	WINAPI	joyReleaseCapture(UINT);
-MMRESULT	WINAPI	joySetCapture(HWND,UINT,UINT,BOOL);
-MMRESULT	WINAPI	joySetThreshold(UINT,UINT);
-
-#define	MIXERR_BASE		1024
-#define	MIXERR_INVALLINE	(MIXERR_BASE + 0)
-#define MIXERR_INVALCONTROL	(MIXERR_BASE + 1)
-#define MIXERR_INVALVALUE	(MIXERR_BASE + 2)
-#define MIXERR_LASTERROR	(MIXERR_BASE + 2)
-
-typedef struct {
-	WORD		wMid;
-	WORD		wPid;
-	MMVERSION	vDriverVersion;
-	CHAR		szPname[MAXPNAMELEN];
-	DWORD		fdwSupport;
-	DWORD		cDestinations;
-} MIXERCAPSA,*LPMIXERCAPSA;
-
-typedef struct {
-	WORD		wMid;
-	WORD		wPid;
-	MMVERSION	vDriverVersion;
-	WCHAR		szPname[MAXPNAMELEN];
-	DWORD		fdwSupport;
-	DWORD		cDestinations;
-} MIXERCAPSW,*LPMIXERCAPSW;
-
-//DECL_WINELIB_TYPE_AW(MIXERCAPS)
-//DECL_WINELIB_TYPE_AW(LPMIXERCAPS)
-
-#define MIXER_SHORT_NAME_CHARS		16
-#define MIXER_LONG_NAME_CHARS		64
-
-/*  MIXERLINE.fdwLine */
-#define	MIXERLINE_LINEF_ACTIVE		0x00000001
-#define	MIXERLINE_LINEF_DISCONNECTED	0x00008000
-#define	MIXERLINE_LINEF_SOURCE		0x80000000
-
-/* Mixer flags */
-#define MIXER_OBJECTF_HANDLE	0x80000000L
-#define MIXER_OBJECTF_MIXER	0x00000000L
-#define MIXER_OBJECTF_HMIXER	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
-#define MIXER_OBJECTF_WAVEOUT	0x10000000L
-#define MIXER_OBJECTF_HWAVEOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
-#define MIXER_OBJECTF_WAVEIN	0x20000000L
-#define MIXER_OBJECTF_HWAVEIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
-#define MIXER_OBJECTF_MIDIOUT	0x30000000L
-#define MIXER_OBJECTF_HMIDIOUT	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
-#define MIXER_OBJECTF_MIDIIN	0x40000000L
-#define MIXER_OBJECTF_HMIDIIN	(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
-#define MIXER_OBJECTF_AUX	0x50000000L
-
-/*  MIXERLINE.dwComponentType */
-/*  component types for destinations and sources */
-#define	MIXERLINE_COMPONENTTYPE_DST_FIRST	0x00000000L
-#define	MIXERLINE_COMPONENTTYPE_DST_UNDEFINED	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
-#define	MIXERLINE_COMPONENTTYPE_DST_DIGITAL	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
-#define	MIXERLINE_COMPONENTTYPE_DST_LINE	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
-#define	MIXERLINE_COMPONENTTYPE_DST_MONITOR	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
-#define	MIXERLINE_COMPONENTTYPE_DST_SPEAKERS	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
-#define	MIXERLINE_COMPONENTTYPE_DST_HEADPHONES	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
-#define	MIXERLINE_COMPONENTTYPE_DST_TELEPHONE	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
-#define	MIXERLINE_COMPONENTTYPE_DST_WAVEIN	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
-#define	MIXERLINE_COMPONENTTYPE_DST_VOICEIN	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
-#define	MIXERLINE_COMPONENTTYPE_DST_LAST	(MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
-
-#define	MIXERLINE_COMPONENTTYPE_SRC_FIRST	0x00001000L
-#define	MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
-#define	MIXERLINE_COMPONENTTYPE_SRC_DIGITAL	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
-#define	MIXERLINE_COMPONENTTYPE_SRC_LINE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
-#define	MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
-#define	MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
-#define	MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
-#define	MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
-#define	MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
-#define	MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
-#define	MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
-#define	MIXERLINE_COMPONENTTYPE_SRC_ANALOG	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
-#define	MIXERLINE_COMPONENTTYPE_SRC_LAST	(MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
-
-/*  MIXERLINE.Target.dwType */
-#define	MIXERLINE_TARGETTYPE_UNDEFINED	0
-#define	MIXERLINE_TARGETTYPE_WAVEOUT	1
-#define	MIXERLINE_TARGETTYPE_WAVEIN	2
-#define	MIXERLINE_TARGETTYPE_MIDIOUT	3
-#define	MIXERLINE_TARGETTYPE_MIDIIN	4
-#define MIXERLINE_TARGETTYPE_AUX	5
-
-typedef struct {
-    DWORD	cbStruct;
-    DWORD	dwDestination;
-    DWORD	dwSource;
-    DWORD	dwLineID;
-    DWORD	fdwLine;
-    DWORD	dwUser;
-    DWORD	dwComponentType;
-    DWORD	cChannels;
-    DWORD	cConnections;
-    DWORD	cControls;
-    CHAR	szShortName[MIXER_SHORT_NAME_CHARS];
-    CHAR	szName[MIXER_LONG_NAME_CHARS];
-    struct {
-	DWORD	dwType;
-	DWORD	dwDeviceID;
[truncated at 1000 lines; 1228 more skipped]

reactos/include/wine
mmsystem.h added at 1.1
diff -N mmsystem.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ mmsystem.h	7 Dec 2004 21:41:02 -0000	1.1
@@ -0,0 +1,46 @@
+/*
+ * MMSYSTEM - Multimedia Wine Extension ... :-)
+ *
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __WINE_MMSYSTEM_H
+#define __WINE_MMSYSTEM_H
+
+#include_next <mmsystem.h>
+
+#define DRV_SUCCESS		0x0001
+#define DRV_FAILURE		0x0000
+
+#define MCI_OPEN_DRIVER			0x0801
+#define MCI_CLOSE_DRIVER		0x0802
+#define MCI_SOUND                       0x0812
+
+#define MCI_SOUND_NAME                  0x00000100L
+
+typedef LPCSTR		HPCSTR;         /* a huge version of LPCSTR */
+
+typedef struct tagMCI_SOUND_PARMS {
+       DWORD_PTR dwCallback;
+	LPCSTR  lpstrSoundName;
+} MCI_SOUND_PARMS, *LPMCI_SOUND_PARMS;
+
+typedef struct midievent_tag *LPMIDIEVENT;
+
+DWORD WINAPI GetDriverFlags(HDRVR hDriver);
+
+#endif  /* __WINE_WINNT_H */

reactos/w32api/include
mmsystem.h 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- mmsystem.h	21 Feb 2004 09:20:34 -0000	1.1
+++ mmsystem.h	7 Dec 2004 21:41:02 -0000	1.2
@@ -1565,7 +1565,7 @@
 MMRESULT WINAPI waveOutSetVolume(HWAVEOUT,DWORD);
 MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT,LPSTR,UINT);
 MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
-MMRESULT WINAPI waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
 MMRESULT WINAPI waveOutClose(HWAVEOUT);
 MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
 MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
@@ -1586,7 +1586,7 @@
 MMRESULT WINAPI waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
 MMRESULT WINAPI waveInGetErrorTextA(MMRESULT,LPSTR,UINT);
 MMRESULT WINAPI waveInGetErrorTextW(MMRESULT,LPWSTR,UINT);
-MMRESULT WINAPI waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD_PTR,DWORD_PTR,DWORD);
 MMRESULT WINAPI waveInClose(HWAVEIN);
 MMRESULT WINAPI waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
 MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT);
@@ -1651,7 +1651,7 @@
 MMRESULT WINAPI mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
 MMRESULT WINAPI mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
 MMRESULT WINAPI mixerClose(HMIXER);
-DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD,DWORD);
+DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD_PTR,DWORD_PTR);
 MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
 MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
 MMRESULT WINAPI mixerGetID(HMIXEROBJ,PUINT,DWORD);

reactos/lib/winmm
lolvldrv.c 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- lolvldrv.c	19 Sep 2004 11:07:39 -0000	1.7
+++ lolvldrv.c	7 Dec 2004 21:41:02 -0000	1.8
@@ -85,7 +85,7 @@
     llTypes[drv].Map16To32A   = mp1632;
     llTypes[drv].UnMap16To32A = um1632;
     llTypes[drv].Map32ATo16   = mp3216;
-    llTypes[drv].UnMap32ATo16 = um1632;
+    llTypes[drv].UnMap32ATo16 = um3216;
     llTypes[drv].Callback     = cb;
 }
 
@@ -561,6 +561,9 @@
     }
 
     TRACE("Got %u dev for (%s:%s)\n", count, lpDrv->drvname, llTypes[type].typestr);
+    
+    if (HIWORD(count))
+        return FALSE;
 
     /* got some drivers */
     if (lpDrv->bIsMapper) {

reactos/lib/winmm
mci.c 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- mci.c	19 Sep 2004 11:07:39 -0000	1.5
+++ mci.c	7 Dec 2004 21:41:02 -0000	1.6
@@ -248,8 +248,8 @@
 	do {
 	    str = lmem;
 	    lmem += strlen(lmem) + 1;
-	    flg = *(LPDWORD)lmem;
-	    eid = *(LPWORD)(lmem + sizeof(DWORD));
+	    flg = *(const DWORD*)lmem;
+	    eid = *(const WORD*)(lmem + sizeof(DWORD));
 	    lmem += sizeof(DWORD) + sizeof(WORD);
 	    idx ++;
 	    /* EPP 	    TRACE("cmd='%s' %08lx %04x\n", str, flg, eid); */
@@ -291,8 +291,8 @@
 	do {
 	    str = lmem;
 	    lmem += strlen(lmem) + 1;
-	    flg = *(LPDWORD)lmem;
-	    eid = *(LPWORD)(lmem + sizeof(DWORD));
+	    flg = *(const DWORD*)lmem;
+	    eid = *(const WORD*)(lmem + sizeof(DWORD));
 	    TRACE("cmd='%s' %08lx %04x\n", str, flg, eid);
 	    lmem += sizeof(DWORD) + sizeof(WORD);
 	} while (eid != MCI_END_COMMAND && eid != MCI_END_COMMAND_LIST);
@@ -379,7 +379,7 @@
 	    count = 0;
 	    do {
 		lmem += strlen(lmem) + 1;
-		eid = *(LPWORD)(lmem + sizeof(DWORD));
+		eid = *(const WORD*)(lmem + sizeof(DWORD));
 		lmem += sizeof(DWORD) + sizeof(WORD);
 		if (eid == MCI_COMMAND_HEAD)
 		    count++;
@@ -393,7 +393,7 @@
 	    do {
 		str = lmem;
 		lmem += strlen(lmem) + 1;
-		eid = *(LPWORD)(lmem + sizeof(DWORD));
+		eid = *(const WORD*)(lmem + sizeof(DWORD));
 		lmem += sizeof(DWORD) + sizeof(WORD);
 		if (eid == MCI_COMMAND_HEAD)
 		    S_MciCmdTable[uTbl].aVerbs[count++] = str;
@@ -619,8 +619,8 @@
 static	DWORD		MCI_GetReturnType(LPCSTR lpCmd)
 {
     lpCmd += strlen(lpCmd) + 1 + sizeof(DWORD) + sizeof(WORD);
-    if (*lpCmd == '\0' && *(LPWORD)(lpCmd + 1 + sizeof(DWORD)) == MCI_RETURN) {
-	return *(LPDWORD)(lpCmd + 1);
+    if (*lpCmd == '\0' && *(const WORD*)(lpCmd + 1 + sizeof(DWORD)) == MCI_RETURN) {
+	return *(const DWORD*)(lpCmd + 1);
     }
     return 0L;
 }
@@ -630,7 +630,7 @@
  */
 static	WORD		MCI_GetMessage(LPCSTR lpCmd)
 {
-    return (WORD)*(LPDWORD)(lpCmd + strlen(lpCmd) + 1);
+    return (WORD)*(const DWORD*)(lpCmd + strlen(lpCmd) + 1);
 }
 
 /**************************************************************************
@@ -712,8 +712,8 @@
 	do { /* loop on options for command table for the requested verb */
 	    str = lmem;
 	    lmem += (len = strlen(lmem)) + 1;
-	    flg = *(LPDWORD)lmem;
-	    eid = *(LPWORD)(lmem + sizeof(DWORD));
+	    flg = *(const DWORD*)lmem;
+	    eid = *(const WORD*)(lmem + sizeof(DWORD));
 	    lmem += sizeof(DWORD) + sizeof(WORD);
 /* EPP 	    TRACE("\tcmd='%s' inCst=%c eid=%04x\n", str, inCst ? 'Y' : 'N', eid); */
 

reactos/lib/winmm
mmsystem.c 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- mmsystem.c	20 Oct 2004 17:42:11 -0000	1.3
+++ mmsystem.c	7 Dec 2004 21:41:02 -0000	1.4
@@ -1893,7 +1893,7 @@
     return (WINE_MMTHREAD*)MapSL( MAKESEGPTR(h, 0) );
 }
 
-void WINAPI WINE_mmThreadEntryPoint(DWORD);
+DWORD WINAPI WINE_mmThreadEntryPoint(LPVOID);
 
 /**************************************************************************
  * 				mmThreadCreate		[MMSYSTEM.1120]
@@ -1951,8 +1951,8 @@
 		/* lpMMThd->hVxD = OpenVxDHandle(lpMMThd->hEvent); */
 	    }
 
-	    lpMMThd->hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)WINE_mmThreadEntryPoint,
-					    (LPVOID)(DWORD)hndl, CREATE_SUSPENDED, &lpMMThd->dwThreadID);
+	    lpMMThd->hThread = CreateThread(0, 0, WINE_mmThreadEntryPoint,
+					    (LPVOID)(DWORD_PTR)hndl, CREATE_SUSPENDED, &lpMMThd->dwThreadID);
 	    if (lpMMThd->hThread == 0) {
 		WARN("Couldn't create thread\n");
 		/* clean-up(VxDhandle...); devicedirectio... */
@@ -2143,9 +2143,9 @@
 /**************************************************************************
  * 			        __wine_mmThreadEntryPoint (MMSYSTEM.2047)
  */
-void WINAPI WINE_mmThreadEntryPoint(DWORD _pmt)
+DWORD WINAPI WINE_mmThreadEntryPoint(LPVOID p)
 {
-    HANDLE16		hndl = (HANDLE16)_pmt;
+    HANDLE16		hndl = (HANDLE16)(DWORD_PTR)p;
     WINE_MMTHREAD*	lpMMThd = WINMM_GetmmThread(hndl);
 
     TRACE("(%04x %p)\n", hndl, lpMMThd);
@@ -2173,6 +2173,8 @@
 	CloseHandle(lpMMThd->hEvent);
     GlobalFree16(hndl);
     TRACE("done\n");
+
+    return 0;
 }
 
 typedef	BOOL16 (WINAPI *MMCPLCALLBACK)(HWND, LPCSTR, LPCSTR, LPCSTR);

reactos/lib/winmm
playsound.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- playsound.c	16 Jun 2004 18:48:46 -0000	1.4
+++ playsound.c	7 Dec 2004 21:41:02 -0000	1.5
@@ -72,7 +72,7 @@
     static const WCHAR  wszNull[] = {0};
 
     TRACE("searching in SystemSound list for %s\n", debugstr_w(lpszName));
-    GetProfileStringW(wszSounds, (LPWSTR)lpszName, wszNull, str, sizeof(str)/sizeof(str[0]));
+    GetProfileStringW(wszSounds, lpszName, wszNull, str, sizeof(str)/sizeof(str[0]));
     if (lstrlenW(str) == 0)
     {
 	if (uFlags & SND_NODEFAULT) goto next;
@@ -420,7 +420,7 @@
     return bRet;
 }
 
-BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD fdwSound, BOOL bUnicode)
+static BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD fdwSound, BOOL bUnicode)
 {
     WINE_PLAYSOUND*     wps = NULL;
 

reactos/lib/winmm
time.c 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- time.c	20 Oct 2004 17:42:11 -0000	1.5
+++ time.c	7 Dec 2004 21:41:02 -0000	1.6
@@ -242,18 +242,7 @@
 	sleep_time = TIME_MMSysTimeCallback(iData);
 
         if (sleep_time == 0)
-        {
-            /* This Sleep is controversial; it was added to make
-               Wine able to replicate a high speed (e.g. 1 ms)
-               timer event where the called event routine chews
-               a lot of CPU.  This is required because of the
-               bias some Linux kernel versions have against threads that
-               chew a lot of the CPU; this Sleep(0) yields enough
-               in that spin case doesn't trigger the bias.
-               Further, it should do no harm, but an fyi.  */
-            Sleep(0);
             continue;
-        }
 
         rc = WaitForSingleObject(TIME_hWakeEvent, sleep_time);
         if (rc != WAIT_TIMEOUT && rc != WAIT_OBJECT_0)

reactos/lib/winmm
winehq2ros.patch 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- winehq2ros.patch	20 Oct 2004 17:42:11 -0000	1.9
+++ winehq2ros.patch	7 Dec 2004 21:41:02 -0000	1.10
@@ -1,11 +1,16 @@
+? Makefile
+? Makefile.ros
+? Makefile.ros-template
+? winehq2ros.patch
+? winmm.spec.def
 Index: lolvldrv.c
 ===================================================================
 RCS file: /home/wine/wine/dlls/winmm/lolvldrv.c,v
-retrieving revision 1.61
-diff -u -r1.61 lolvldrv.c
---- lolvldrv.c	22 Sep 2004 04:00:14 -0000	1.61
-+++ lolvldrv.c	20 Oct 2004 17:54:30 -0000
-@@ -758,11 +758,18 @@
+retrieving revision 1.62
+diff -u -r1.62 lolvldrv.c
+--- lolvldrv.c	1 Dec 2004 15:32:19 -0000	1.62
++++ lolvldrv.c	7 Dec 2004 21:01:01 -0000
+@@ -761,11 +761,18 @@
  {
      TRACE("()\n");
      /* first load hardware drivers */
@@ -29,10 +34,10 @@
 Index: winmm.c
 ===================================================================
 RCS file: /home/wine/wine/dlls/winmm/winmm.c,v
-retrieving revision 1.45
-diff -u -r1.45 winmm.c
---- winmm.c	19 Oct 2004 23:55:15 -0000	1.45
-+++ winmm.c	20 Oct 2004 17:54:32 -0000
+retrieving revision 1.46
+diff -u -r1.46 winmm.c
+--- winmm.c	21 Nov 2004 15:37:04 -0000	1.46
++++ winmm.c	7 Dec 2004 21:01:02 -0000
 @@ -94,7 +94,9 @@
  	return FALSE;
      WINMM_IData->hWinMM32Instance = hInstDLL;
@@ -56,13 +61,44 @@
                  loaded = 1;
          }
      }
+@@ -669,7 +673,7 @@
+ /**************************************************************************
+  * 				mixerMessage		[WINMM.@]
+  */
+-UINT WINAPI mixerMessage(HMIXER hmix, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
++DWORD WINAPI mixerMessage(HMIXER hmix, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
+ {
+     LPWINE_MLD		wmld;
+ 
+@@ -2669,8 +2673,8 @@
+  *			waveOutOpen			[WINMM.@]
+  * All the args/structs have the same layout as the win16 equivalents
+  */
+-UINT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID,
+-                       const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
++MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID,
++                       LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
+                        DWORD_PTR dwInstance, DWORD dwFlags)
+ {
+     return WAVE_Open((HANDLE*)lphWaveOut, uDeviceID, MMDRV_WAVEOUT, lpFormat,
+@@ -3054,8 +3058,8 @@
+ /**************************************************************************
+  * 				waveInOpen			[WINMM.@]
+  */
+-UINT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
+-		       const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
++MMRESULT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
++		       LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
+ 		       DWORD_PTR dwInstance, DWORD dwFlags)
+ {
+     return WAVE_Open((HANDLE*)lphWaveIn, uDeviceID, MMDRV_WAVEIN, lpFormat,
 Index: winmm_res.rc
 ===================================================================
 RCS file: /home/wine/wine/dlls/winmm/winmm_res.rc,v
 retrieving revision 1.17
 diff -u -r1.17 winmm_res.rc
 --- winmm_res.rc	16 Aug 2004 20:02:09 -0000	1.17
-+++ winmm_res.rc	20 Oct 2004 17:54:32 -0000
++++ winmm_res.rc	7 Dec 2004 21:01:03 -0000
 @@ -34,7 +34,7 @@
  #include "winmm_Es.rc"
  #include "winmm_Fr.rc"

reactos/lib/winmm
winmm.c 1.14 -> 1.15
diff -u -r1.14 -r1.15
--- winmm.c	20 Oct 2004 17:42:11 -0000	1.14
+++ winmm.c	7 Dec 2004 21:41:02 -0000	1.15
@@ -171,6 +171,15 @@
     ERR_TO_STR(MMSYSERR_BADERRNUM);
     ERR_TO_STR(MMSYSERR_INVALFLAG);
     ERR_TO_STR(MMSYSERR_INVALPARAM);
+    ERR_TO_STR(MMSYSERR_HANDLEBUSY);
+    ERR_TO_STR(MMSYSERR_INVALIDALIAS);
+    ERR_TO_STR(MMSYSERR_BADDB);
+    ERR_TO_STR(MMSYSERR_KEYNOTFOUND);
+    ERR_TO_STR(MMSYSERR_READERROR);
+    ERR_TO_STR(MMSYSERR_WRITEERROR);
+    ERR_TO_STR(MMSYSERR_DELETEERROR);
+    ERR_TO_STR(MMSYSERR_VALNOTFOUND);
+    ERR_TO_STR(MMSYSERR_NODRIVERCB);
     ERR_TO_STR(WAVERR_BADFORMAT);
     ERR_TO_STR(WAVERR_STILLPLAYING);
     ERR_TO_STR(WAVERR_UNPREPARED);
@@ -664,7 +673,7 @@
 /**************************************************************************
  * 				mixerMessage		[WINMM.@]
  */
-UINT WINAPI mixerMessage(HMIXER hmix, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
+DWORD WINAPI mixerMessage(HMIXER hmix, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
 {
     LPWINE_MLD		wmld;
 
@@ -2664,8 +2673,8 @@
  *			waveOutOpen			[WINMM.@]
  * All the args/structs have the same layout as the win16 equivalents
  */
-UINT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID,
-                       const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
+MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID,
+                       LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
                        DWORD_PTR dwInstance, DWORD dwFlags)
 {
     return WAVE_Open((HANDLE*)lphWaveOut, uDeviceID, MMDRV_WAVEOUT, lpFormat,
@@ -3049,8 +3058,8 @@
 /**************************************************************************
  * 				waveInOpen			[WINMM.@]
  */
-UINT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
-		       const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
+MMRESULT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
+		       LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
 		       DWORD_PTR dwInstance, DWORD dwFlags)
 {
     return WAVE_Open((HANDLE*)lphWaveIn, uDeviceID, MMDRV_WAVEIN, lpFormat,
CVSspam 0.2.8