Commit in reactos/lib/winmm on MAIN
winmm_De.rc+126added 1.1
winmm_Ja.rc+126added 1.1
driver.c+18-11.3 -> 1.4
mci.c+57-921.3 -> 1.4
winehq2ros.patch+154-71.4 -> 1.5
winemm.h-11.4 -> 1.5
winmm.c+1-11.8 -> 1.9
winmm_res.rc+3-11.2 -> 1.3
+485-103
2 added + 6 modified, total 8 files
Sync to Wine-20040716:
Henning Gerhardt <henning.gerhardt@web.de>
- More German translations.
Hajime Segawa <winetips@sidenet.ddo.jp>
- Added some Japanese translations.
Dimitrie O. Paun <dpaun@rogers.com>
- Lookup driver information in registry and system.ini.
- Make the code inspect the registry/system.ini at call time, rather
  then initialization time.
- Code cleanups.

reactos/lib/winmm
winmm_De.rc added at 1.1
diff -N winmm_De.rc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ winmm_De.rc	8 Aug 2004 21:36:20 -0000	1.1
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2004 Henning Gerhardt
+ *
+ * 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
+ */
+
+STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
+BEGIN
+
+/* MMSYS errors */
+MMSYSERR_NOERROR, 		"Der angeforderte Befehl wurde ausgef�hrt."
+MMSYSERR_ERROR, 		"Unbekannter externer Fehler."
+MMSYSERR_BADDEVICEID, 		"Die derzeit verwendete Ger�tekennung ist au�erhalb des zul�ssigen Bereichs f�r Ihr System."
+MMSYSERR_NOTENABLED, 		"Der Treiber konnte nicht gestartet werden."
+MMSYSERR_ALLOCATED, 		"Das Ger�t wird bereits verwendet. Warten Sie, bis es freigegeben ist, und versuchen Sie es erneut."
+MMSYSERR_INVALHANDLE, 		"Das angegebende Ger�tehandle ist ung�ltig."
+MMSYSERR_NODRIVER, 		"Es ist kein Treiber auf Ihrem System installiert !\n"
+MMSYSERR_NOMEM, 		"Nicht gen�gend Speicher f�r diesen Befehl. Beenden Sie eine oder mehrere Anwendungen, und versuchen Sie es erneut."
+MMSYSERR_NOTSUPPORTED,		"Diese Funktion wird nicht unterst�tzt. Benutzen Sie die Funktion 'Capabilities', um zu ermitteln, welche Funktion dieser Treiber unterst�tzt."
+MMSYSERR_BADERRNUM, 		"Die angegebene Fehlernummer ist f�r dieses System nicht definiert."
+MMSYSERR_INVALFLAG, 		"Ein ung�ltiges Flag wurde an eine Systemfunktion �bergeben."
+MMSYSERR_INVALPARAM, 		"Ein ung�ltiger Parameter wurde an eine Systemfunktion �bergeben."
+
+/* WAVE errors */
+WAVERR_BADFORMAT, 		"Dieses Format wird nicht unterst�tzt oder kann nicht �bersetzt werden. Benutzen Sie die Funktion 'Capabilities', um die unterst�tzten Formate zu ermitteln."
+WAVERR_STILLPLAYING, 		"Die Funktion kann nicht durchgef�hrt werden, wenn noch Mediendateien wiedergegeben werden. Starten Sie das Ger�t neu, oder warten Sie bis keine Daten mehr wiedergegeben werden."
+WAVERR_UNPREPARED, 		"Der WAVE - Header wurde nicht vorbereitet. Benutzen Sie die Funktion 'Prepare' zum Vorbereiten des Headers und versuchen Sie es erneut."
+WAVERR_SYNC, 			"Das Ger�t kann nicht ohne das WAVE_ALLOWSYNC - Flag ge�ffnet werden. Benutzen Sie dieses Flag und versuchen Sie es erneut."
+
+/* MIDI errors */
+MIDIERR_UNPREPARED, 		"Der MIDI - Header wurde nicht vorbereitet. Benutzen Sie die Funktion 'Prepare' zum Vorbereiten des Headers und versuchen Sie es erneut."
+MIDIERR_STILLPLAYING, 		"Die Funktion kann nicht durchgef�hrt werden, wenn noch Mediendateien wiedergegeben werden. Starten Sie das Ger�t neu, oder warten Sie bis keine Daten mehr wiedergegeben werden."
+MIDIERR_NOMAP, 		"Es wurde keine MIDI - Map gefunden. Es k�nnte ein Problem mit dem Treiber geben oder die Datei MIDIMAP.CFG fehlt oder ist besch�digt."
+MIDIERR_NOTREADY, 		"Der Anschluss ist mit der Datenausgabe belegt. Warten Sie, bis die Daten �bertragen wurden und versuchen Sie es erneut."
+MIDIERR_NODEVICE, 		"Das gegenw�rtige MIDI - Mapper Setup benutzt ein MIDI - Ger�t, das nicht installiert ist. Benutzen Sie den MIDI - Mapper, um das Setup zu �ndern."
+MIDIERR_INVALIDSETUP, 		"Das aktuelle MIDI Setup ist besch�digt. Kopieren sie die urspr�ngliche Datei MIDIMAP.CFG ind das Windows - Systemverzeichnis und versuchen Sie es erneut."
+
+/* MCI errors */
+MCIERR_INVALID_DEVICE_ID, 	"Ung�ltige MCI - Ger�tekennung. Benutzen Sie die zur�ckgegebene ID, wenn Sie das MCI - Ger�t �ffnen."
+MCIERR_UNRECOGNIZED_KEYWORD, 	"Der Treiber kann den angegebenen Befehlsparameter nicht anerkennen."
+MCIERR_UNRECOGNIZED_COMMAND,	"Der Treiber kann den angegebenen Befehl nicht anerkennen."
+MCIERR_HARDWARE, 		"Es gibt ein Problem mit Ihrem Media - Ger�t. Stellen Sie sicher, dass es richtig arbeitet oder fragen Sie den Ger�tehersteller."
+MCIERR_INVALID_DEVICE_NAME, 	"Das angegebene Ger�t ist nicht ge�ffnet oder wird vom MCI nicht erkannt."
+MCIERR_OUT_OF_MEMORY, 		"Nicht gen�gend Speicher f�r den angeforderten Vorgang. \nBeenden Sie eine oder mehrere Anwendungen, und versuchen Sie es erneut."
+MCIERR_DEVICE_OPEN, 		"Der Ger�tename wird von dieser Anwendung bereits als Alias benutzt. Benutzen Sie einen eindeutigen Alias"
+MCIERR_CANNOT_LOAD_DRIVER, 	"Es gibt ein unbekanntes Problem beim Laden des angegebenen Ger�tetreibers."
+MCIERR_MISSING_COMMAND_STRING, "Kein Befehl wurde angegeben."
+MCIERR_PARAM_OVERFLOW, 	"Die Ausgabezeichenkennte war zu lang f�r den R�ckgabepuffer. Erh�hen Sie die Puffergr��e."
+MCIERR_MISSING_STRING_ARGUMENT, "Der Befehl erfordert einen Zeichenkettenparameter. Bitte stellen Sie einen bereit."
+MCIERR_BAD_INTEGER, 		"Die Angabe einer ganzen Zahl ist f�r diesen Befehl ung�ltig."
+MCIERR_PARSER_INTERNAL, 	"Der Ger�tetreiber hat einen ung�ltigen R�ckgabewert geliefert. Fragen Sie den Ger�tehersteller nach einem neuen Treiber."
+MCIERR_DRIVER_INTERNAL, 	"Ein Treiberfehler ist aufgetreten. Fragen Sie den Ger�tehersteller nach einem neuen Treiber."
+MCIERR_MISSING_PARAMETER, 	"Der angegebene Befehl erfordert einen Parameter. Bitte geben Sie einen an."
+MCIERR_UNSUPPORTED_FUNCTION, 	"Das verwendete MCI - Ger�t unterst�tzt diesen Befehl nicht."
+MCIERR_FILE_NOT_FOUND, 	"Die angeforderte Datei wurde nicht gefunden. Stellen Sie sicher, dass Pfad- und Dateiname richtig sind."
+MCIERR_DEVICE_NOT_READY, 	"Der Ger�tetreiber ist nicht bereit."
+MCIERR_INTERNAL, 		"Ein Fehler ereignete sich beim Starten von MCI. Versuche Windows neu zu starten."
+MCIERR_DRIVER, 		"Es gibt ein Problem mit dem Ger�tetreiber. Der Treiber wird geschlossen. Ein Fehler kann nicht gemeldet werden."
+MCIERR_CANNOT_USE_ALL, 	"Der Ger�tename 'all' ist nicht in diesem Befehl erlaubt."
+MCIERR_MULTIPLE, 		"Es traten Fehler in mehr als einem Ger�t auf. Geben Sie jeden Befehl f�r jedes Ger�t einzeln an, um zu bestimmen, welches Ger�t die Fehler verursachte."
+MCIERR_EXTENSION_NOT_FOUND, 	"Kann keinen Ger�tetyp aus der angegebenen Dateinamenerweiterung ermitteln."
+MCIERR_OUTOFRANGE, 		"Der angegebene Paramter liegt au�erhalb des zul�ssigen Bereichs f�r diesen Befehl."
+MCIERR_FLAGS_NOT_COMPATIBLE, 	"Die Paramter k�nnen nicht zusammen verwendet werden."
+MCIERR_FILE_NOT_SAVED, 	"Die Datei kann nicht gespeichert werden. Stellen Sie sicher, dass gen�gend Platz auf dem Datentr�ger verf�gbar ist oder Ihre Netzwerkverbindung noch besteht."
+MCIERR_DEVICE_TYPE_REQUIRED, 	"Das angegebene Ger�t wurde nicht gefunden. Stellen Sie sicher, dass es installiert ist oder der Ger�tename richtig geschrieben ist."
+MCIERR_DEVICE_LOCKED, 		"Das angegebene Ger�t wird geschlossen. Warten Sie einige Sekunden, und versuchen Sie es erneut."
+MCIERR_DUPLICATE_ALIAS, 	"Der angegebene Alias wird von dieser Anwendung bereits verwendet. W�hlen Sie einen eindeutigen Alias."
+MCIERR_BAD_CONSTANT, 		"Der angegebene Parameter f�r diesen Befehl ung�ltig."
+MCIERR_MUST_USE_SHAREABLE, 	"Das Ger�t ist bereits ge�ffnet. Benutzen Sie den 'shareable' - Parameter bei jedem 'open' - Befehl."
+MCIERR_MISSING_DEVICE_NAME, 	"Der angegebene Befehl erfordert einen Alias-,  Datei-, Treiber- oder Ger�tenamen. Bitte geben Sie einen an."
+MCIERR_BAD_TIME_FORMAT, 	"Der angegebene Wert f�r das Zeitformat ist ung�ltig. Lesen Sie in der MCI - Dokumentation nach g�ltigen Formaten nach."
+MCIERR_NO_CLOSING_QUOTE, 	"Ein abschlie�endes Anf�hrungszeichen fehlt im Parameter. Bitte geben Sie eins an."
+MCIERR_DUPLICATE_FLAGS, 	"Ein Parameter oder Wert wurde zweimal angegeben. Geben Sie in nur einzeln an."
+MCIERR_INVALID_FILE, 		"Die angegebene Datei kann auf dem MCI - Ger�t nicht wiedergegeben werden. Die Datei ist wahrscheinlich besch�digt oder in einem ung�ltigen Format."
+MCIERR_NULL_PARAMETER_BLOCK, 	"Der Parameterblock, der zu MCI �bergeben wurde, war NULL."
+MCIERR_UNNAMED_RESOURCE, 	"Es kann keine unbenannte Datei gespeichert werden. Geben Sie einen Dateinamen an."
+MCIERR_NEW_REQUIRES_ALIAS, 	"Sie m�ssen einen Alias mit dem 'new' - Parameter angeben."
+MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Das 'notify' Flag ist unzul�ssig f�r selbst�ffnende Ger�te."
+MCIERR_NO_ELEMENT_ALLOWED, 	"Ein Dateiname kann mit diesem Ger�t nicht verwendet werden."
+MCIERR_NONAPPLICABLE_FUNCTION, "Die Befehle sind in der angegebenen Reihenfolge nicht ausf�hrbar. �ndern Sie die Reihenfolge, und versuchen Sie es erneut."
+MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Der Befehl kann nicht auf ein selbst�ffnedes Ger�t angewandt werden. Warten Sie, bis das Ger�t geschlossen wurde und versuchen Sie es erneut."
+MCIERR_FILENAME_REQUIRED, 	"Der Dateiname ist ung�ltig. Der Dateiname muss aus maximal 8 Zeichen, gefolgt von einem Punkt und einer Dateinamenerweiterung bestehen."
+MCIERR_EXTRA_CHARACTERS, 	"Zus�tzliche Zeichen nach einer Zeichenkette mit Anf�hrungszeichen sind nicht erlaubt."
+MCIERR_DEVICE_NOT_INSTALLED, 	"Das angegebene Ger�t ist nicht auf Ihren System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um das Ger�t zu installieren."
+MCIERR_GET_CD, 		"Auf die angegebene Datei oder das MCI - Ger�t kann nicht zugegriffen werden. Versuchen Sie, das Verzeichnis zu wechseln oder das System neu zu starten."
+MCIERR_SET_CD, 		"Auf die angegebene Datei oder das MCI - Ger�t kann nicht zugegriffen werden, weil die Anwendung nicht das Verzeichnis wechseln kann."
+MCIERR_SET_DRIVE, 		"Auf die angegebene Datei oder das MCI - Ger�t kann nicht zugegriffen werden, weil die Anwendung nicht das Laufwerk wechseln kann."
+MCIERR_DEVICE_LENGTH, 		"Geben Sie einen Ger�te- oder Treibernamen mit weniger als 79 Zeichen an."
+MCIERR_DEVICE_ORD_LENGTH, 	"Geben Sie einen Ger�te- oder Treibernamen mit weniger als 69 Zeichen an."
+MCIERR_NO_INTEGER, 		"Der angegebene Befehl erfordert einen ganzzahligen Parameter. Bitte geben Sie einen an."
+MCIERR_WAVE_OUTPUTSINUSE, 	"Alle Waveformger�te, die diese Dateien in dem gegenw�rtigen Format wiedergeben k�nnten, sind in Benutzung. Warten Sie, bis ein Waveformger�t frei ist, und wiederholen Sie den Vorgang."
+MCIERR_WAVE_SETOUTPUTINUSE, 	"Das gegenw�rtige Waveformger�t kann nicht wiedergeben, weil es gerade benutzt wird. Warten Sie, bis das Ger�t frei ist, und wiederholen Sie den Vorgang."
+MCIERR_WAVE_INPUTSINUSE, 	"Es ist kein Waveformger�t frei, das das gegenw�rtige Format aufzeichnen k�nnte. Warten Sie, bis ein Waveformger�t frei ist, und wiederholen Sie den Vorgang."
+MCIERR_WAVE_SETINPUTINUSE, 	"Das gegenw�rtige Waveformger�t kann nicht aufzeichnen, weil es gerade verwendet wird. Warten Sie, bis das Ger�t frei ist, und wiederholen Sie den Vorgang."
+MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Jedes kompatible Waveform - Wiedergabeger�t kann verwendet werden."
+MCIERR_WAVE_INPUTUNSPECIFIED, 	"Jedes kompatible Waveform - Aufnahmeger�t kann verwendet werden."
+MCIERR_WAVE_OUTPUTSUNSUITABLE, "Es ist kein Waveformger�t installiert, das Dateien im aktuellen Format wiedergeben kann. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein Waveformger�t zu installieren."
+MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Das Wiedergabeger�t erkennt das gegenw�rtige Dateiformat nicht."
+MCIERR_WAVE_INPUTSUNSUITABLE, 	"Es ist kein Waveformger�t installiert, das Dateien im aktuellen Format aufnehmen kann. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein Waveformger�t zu installieren."
+MCIERR_WAVE_SETINPUTUNSUITABLE, "Das Ger�t, mit dem Sie aufzeichnen m�chten, erkennt das gegenw�rtige Dateiformat nicht."
+MCIERR_NO_WINDOW, 		"Es gibt kein Anzeigefenster."
+MCIERR_CREATEWINDOW, 		"Fenster konnte nicht erzeugt oder verwendet werden."
+MCIERR_FILE_READ, 		"Die Datei konnte nicht gelesen werden. Stellen Sie sicher, dass die Datei existiert oder Ihre Netzwerkverbindung noch besteht."
+MCIERR_FILE_WRITE, 		"Die Datei konnte nicht geschrieben werden. Stellen Sie sicher, dass gen�gend Platz auf dem Datentr�ger verf�gbar ist, oder dass die Netzwerkverbindung noch besteht."
+MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Die Zeitformate von ""song pointer"" und SMPTE schliessen sich gegenseitig aus. Sie k�nnen sie nicht zusammen verwenden."
+MCIERR_SEQ_NOMIDIPRESENT, 	"Es sind keine MIDI - Ger�te auf dem System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um einen MIDI - Treiber zu installieren."
+MCIERR_SEQ_PORT_INUSE, 	"Der angegebene MIDI - Anschluss wird bereits verwendet. Warten Sie bis der Anschluss frei ist, und versuchen Sie es erneut."
+MCIERR_SEQ_PORT_MAPNODEVICE, 	"Das gegenw�rtige MIDI - Mapper Setup benutzt ein MIDI - Ger�t, dass nicht auf Ihren System installiert ist. Benutzen Sie den MIDI - Mapper in der Systemsteuerung, um das Setup zu �ndern."
+MCIERR_SEQ_PORT_MISCERROR, 	"Beim Benutzen des angegebenen Anschlusses trat ein Fehler auf."
+MCIERR_SEQ_PORT_NONEXISTENT, 	"Es sind keine angegebnen MIDI - Ger�te auf dem System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein MIDI - Ger�t zu installieren."
+MCIERR_SEQ_PORTUNSPECIFIED, 	"Es gibt keinen aktuellen MIDI - Anschluss auf dem System."
+MCIERR_SEQ_TIMER, 		"Alle Multimediazeitgeber werden von anderen Anwendungen verwendet. Beenden Sie eine dieser Anwendungen, und versuchen Sie es erneut."
+
+END

reactos/lib/winmm
winmm_Ja.rc added at 1.1
diff -N winmm_Ja.rc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ winmm_Ja.rc	8 Aug 2004 21:36:20 -0000	1.1
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2004 Hajime Segawa
+ *
+ * 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
+ */
+
+STRINGTABLE LANGUAGE LANG_JAPANESE, SUBLANG_NEUTRAL
+BEGIN
+
+/* MMSYS errors */
+MMSYSERR_NOERROR, 		"�w���������R�}���h�����s�����������������B"
+MMSYSERR_ERROR, 		"�s�����O���G���[�����B"
+MMSYSERR_BADDEVICEID, 		"�������f�o�C�XID�����B"
+MMSYSERR_NOTENABLED, 		"�h���C�o���L�������������������B"
+MMSYSERR_ALLOCATED, 		"�w���������f�o�C�X���g�p�������B�f�o�C�X�������������������������������������������B"
+MMSYSERR_INVALHANDLE, 		"�������f�o�C�X�n���h�������B"
+MMSYSERR_NODRIVER, 		"�V�X�e�����h���C�o���C���X�g�[����������������!\n"
+MMSYSERR_NOMEM, 		"�������������s�������������������s�������������B�����������A�v���P�[�V�������I�������������������������������������������B"
+MMSYSERR_NOTSUPPORTED, 		"�����@�\���T�|�[�g���������������BCapabilities�������g�p�����h���C�o���T�|�[�g�����@�\�����b�Z�[�W���m�F�����������B"
+MMSYSERR_BADERRNUM, 		"�w���������G���[���������`���������������B"
+MMSYSERR_INVALFLAG, 		"�V�X�e���������������t���O���n�����������B"
+MMSYSERR_INVALPARAM, 		"�V�X�e���������������p�����[�^���n�����������B"
+
+/* WAVE errors */
+WAVERR_BADFORMAT, 		"�w���������t�H�[�}�b�g���T�|�[�g���������������A���������������BCapabilities�������g�p�����T�|�[�g�����������t�H�[�}�b�g���m�F�����������B"
+WAVERR_STILLPLAYING, 		"���f�B�A�����������������������s�����������B�f�o�C�X�����Z�b�g�������������I���������������������B"
+WAVERR_UNPREPARED, 		"wave�w�b�_���������������������BPrepare�������g�p�����w�b�_���������������������������B"
+WAVERR_SYNC, 			"WAVE_ALLOWSYNC�t���O���������f�o�C�X���I�[�v�������������B�t���O���w�����������������������B"
+
+/* MIDI errors */
+MIDIERR_UNPREPARED, 		"MIDI�w�b�_���������������������BPrepare�������g�p�����w�b�_���������������������������B"
+MIDIERR_STILLPLAYING, 		"���f�B�A�����������������������s�����������B�f�o�C�X�����Z�b�g�������������I���������������������B"
+MIDIERR_NOMAP, 			"MIDI�}�b�v�����������������B�h���C�o���������AMIDIMAP.CFG�t�@�C�����j�������������������������\�������������B"
+MIDIERR_NOTREADY, 		"�|�[�g���f�o�C�X���f�[�^�����M�������B�f�[�^�����M���I�����������������������������������B"
+MIDIERR_NODEVICE, 		"MIDI�}�b�p���������V�X�e���������������������f�o�C�X���Q�������������B���������X���������R���g���[���p�l�����uMIDI�}�b�p�v�A�v���b�g���g�p�����������B"
+MIDIERR_INVALIDSETUP, 		"MIDI���������j�������������B�I���W�i����MIDIMAP.CFG�t�@�C����Windows��SYSTEM�f�B���N�g�������R�s�[���������������������B"
+
+/* MCI errors */
+MCIERR_INVALID_DEVICE_ID, 	"������MCI�f�o�C�XID�����BMCI�f�o�C�X���I�[�v��������������������ID���g�p�����������B"
+MCIERR_UNRECOGNIZED_KEYWORD, 	"�h���C�o���w���������R�}���h���p�����[�^���F�������������������B"
+MCIERR_UNRECOGNIZED_COMMAND,	"�h���C�o���w���������R�}���h���F�������������������B"
+MCIERR_HARDWARE, 		"���f�B�A�f�o�C�X���������������������B�f�o�C�X�����������������������m�F�������A���������������������������B"
+MCIERR_INVALID_DEVICE_NAME, 	"�w���������f�o�C�X���I�[�v�����������������AMCI���F�����������������B"
+MCIERR_OUT_OF_MEMORY, 		"�������������s�������������������s�������������B\n�����������A�v���P�[�V�������I�������������������������������������������B"
+MCIERR_DEVICE_OPEN, 		"�f�o�C�X���������A�v���P�[�V�������������G�C���A�X�������g�p�������������B�������G�C���A�X���g�p�����������B"
+MCIERR_CANNOT_LOAD_DRIVER, 	"�w���������f�o�C�X�h���C�o�����[�h�����s�����G���[���������������B"
+MCIERR_MISSING_COMMAND_STRING, 	"�R�}���h���w�����������������B"
+MCIERR_PARAM_OVERFLOW, 		"�o�����������������o�b�t�@�����������������B�o�b�t�@���T�C�Y�����������������B"
+MCIERR_MISSING_STRING_ARGUMENT, "�w���������R�}���h�������������p�����[�^���K�v�����B"
+MCIERR_BAD_INTEGER, 		"�w�������������l�������R�}���h�������������B"
+MCIERR_PARSER_INTERNAL, 	"�f�o�C�X�h���C�o���������`�����l�������������B���������V�����h���C�o���������������������������B"
+MCIERR_DRIVER_INTERNAL, 	"�f�o�C�X�h���C�o���������������������B���������V�����h���C�o���������������������������B"
+MCIERR_MISSING_PARAMETER, 	"�w���������R�}���h�����p�����[�^���K�v�����B"
+MCIERR_UNSUPPORTED_FUNCTION, 	"�g�p��������MCI�f�o�C�X���w���������R�}���h���T�|�[�g�������������B"
+MCIERR_FILE_NOT_FOUND, 		"�w���������t�@�C�������������������B�t�@�C�������p�X���m�F�����������B"
+MCIERR_DEVICE_NOT_READY, 	"�f�o�C�X�h���C�o�����������������������B"
+MCIERR_INTERNAL, 		"MCI�������������������������������BWindows�����N�������������B"
+MCIERR_DRIVER, 			"�f�o�C�X�h���C�o���������������������B�h���C�o���N���[�Y�������������B�G���[���A�N�Z�X�����������B"
+MCIERR_CANNOT_USE_ALL, 		"�w���������R�}���h���uall�v���f�o�C�X���������g�p���������������������B"
+MCIERR_MULTIPLE, 		"�������f�o�C�X���G���[���������������B�����f�o�C�X���G���[�������������m�F���������A�R�}���h���f�o�C�X���������w�������������B"
+MCIERR_EXTENSION_NOT_FOUND, 	"�w���������t�@�C�����g���q�����f�o�C�X�����������������������B"
+MCIERR_OUTOFRANGE, 		"�w���������R�}���h���������w���������p�����[�^�������O�����B"
+MCIERR_FLAGS_NOT_COMPATIBLE, 	"�w���������p�����[�^���������g�p�����������B"
+MCIERR_FILE_NOT_SAVED, 		"�w���������t�@�C�������������������������B�f�B�X�N���\���������e�����������A���������l�b�g���[�N�������������������m�F�����������B"
+MCIERR_DEVICE_TYPE_REQUIRED, 	"�w���������f�o�C�X�����������������������B�f�o�C�X�����������������A�f�o�C�X���������������������m�F�����������B"
+MCIERR_DEVICE_LOCKED, 		"�w���������f�o�C�X���N���[�Y�����������B���b���������������������������B"
+MCIERR_DUPLICATE_ALIAS, 	"�w���������G�C���A�X�������A�v���P�[�V�������������G�C���A�X�������g�p�������������B�������G�C���A�X���g�p�����������B"
+MCIERR_BAD_CONSTANT, 		"�w���������p�����[�^�������R�}���h�������������B"
+MCIERR_MUST_USE_SHAREABLE, 	"�f�o�C�X�h���C�o���g�p�������B�f�o�C�X�����L���������uopen�v�R�}���h�������ushareable�v�p�����[�^���w�������������B"
+MCIERR_MISSING_DEVICE_NAME, 	"�w���������R�}���h�����G�C���A�X�A�t�@�C���A�h���C�o�������f�o�C�X�����w�������K�v�����������B"
+MCIERR_BAD_TIME_FORMAT, 	"�w���������������t�H�[�}�b�g�����������B�g�p�������t�H�[�}�b�g����������MCI���h�L�������g���Q�������������B"
+MCIERR_NO_CLOSING_QUOTE, 	"�_�u���N�I�[�e�[�V���������������������B"
+MCIERR_DUPLICATE_FLAGS, 	"�p�����[�^�����d���w���������������B"
+MCIERR_INVALID_FILE, 		"�w���������t�@�C�����w��������MCI�f�o�C�X�������������������B�t�@�C�����j�������������A�t�H�[�}�b�g���s�������B"
+MCIERR_NULL_PARAMETER_BLOCK, 	"�k���p�����[�^��MCI���n�����������B"
+MCIERR_UNNAMED_RESOURCE, 	"�t�@�C�������w���������������������������������B�t�@�C�������w�������������B"
+MCIERR_NEW_REQUIRES_ALIAS, 	"�unew�v�p�����[�^���g�p�����������G�C���A�X���w�������K�v�����������B"
+MCIERR_NOTIFY_ON_AUTO_OPEN, 	"�I�[�g�I�[�v���������f�o�C�X���unotify�v�t���O���g�p���������������������B"
+MCIERR_NO_ELEMENT_ALLOWED, 	"�w���������f�o�C�X���������t�@�C�������g�p���������������������B"
+MCIERR_NONAPPLICABLE_FUNCTION, 	"�w���������������R�}���h�����s�����������B�R�}���h�V�[�P���X���C�����������������������B"
+MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"�I�[�g�I�[�v���������f�o�C�X���������w���������R�}���h�����s�����������B�f�o�C�X���N���[�Y�����������������������������������B"
+MCIERR_FILENAME_REQUIRED, 	"�t�@�C���������������B�t�@�C���������p8�����������A�s���I�h���������g���q���t���������������m�F�����������B"
+MCIERR_EXTRA_CHARACTERS, 	"�N�I�[�e�[�V�����}�[�N�����������������������]�������������������������B"
+MCIERR_DEVICE_NOT_INSTALLED, 	"�w���������f�o�C�X���C���X�g�[�����������������B�f�o�C�X���C���X�g�[�����������R���g���[���p�l�������u�n�[�h�E�F�A�������������v�A�v���b�g���g�p�����������B"
+MCIERR_GET_CD, 			"�w���������t�@�C��������MCI�f�o�C�X���A�N�Z�X�����������B�f�B���N�g�������X�������A�R���s���[�^�����N�������������B"
+MCIERR_SET_CD, 			"�A�v���P�[�V�������f�B���N�g�������X�������������A�w���������t�@�C��������MCI�f�o�C�X���A�N�Z�X�����������B"
+MCIERR_SET_DRIVE, 		"�A�v���P�[�V�������h���C�u�����X�������������A�w���������t�@�C��������MCI�f�o�C�X���A�N�Z�X�����������B"
+MCIERR_DEVICE_LENGTH, 		"�f�o�C�X���������h���C�o�������p79�����������w�������������B"
+MCIERR_DEVICE_ORD_LENGTH, 	"�f�o�C�X���������h���C�o�������p69�����������w�������������B"
+MCIERR_NO_INTEGER, 		"�w���������R�}���h���������l���p�����[�^���K�v�����B"
+MCIERR_WAVE_OUTPUTSINUSE, 	"�t�@�C�����������t�H�[�}�b�g������������wave�f�o�C�X���S���g�p�������B�f�o�C�X�������������������������������������������B"
+MCIERR_WAVE_SETOUTPUTINUSE, 	"������wave�f�o�C�X���g�p���������������[�h�����������������B�f�o�C�X�������������������������������������������B"
+MCIERR_WAVE_INPUTSINUSE, 	"�������t�H�[�}�b�g���^�������\���S����wave�f�o�C�X���g�p�������B�f�o�C�X�������������������������������������������B"
+MCIERR_WAVE_SETINPUTINUSE, 	"������wave�f�o�C�X���g�p���������^�����[�h�����������������B�f�o�C�X�������������������������������������������B"
+MCIERR_WAVE_OUTPUTUNSPECIFIED,	"�����������������f�o�C�X�����������g�p���������B"
+MCIERR_WAVE_INPUTUNSPECIFIED, 	"�������������^���f�o�C�X�����������g�p���������B"
+MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"�������t�H�[�}�b�g���t�@�C��������������wave�f�o�C�X���C���X�g�[�����������������Bwave�f�o�C�X���C���X�g�[�����������R���g���[���p�l�������u�n�[�h�E�F�A�������������v�A�v���b�g���g�p�����������B"
+MCIERR_WAVE_SETOUTPUTUNSUITABLE,"���������������������f�o�C�X���������t�@�C���t�H�[�}�b�g���F�������������B"
+MCIERR_WAVE_INPUTSUNSUITABLE, 	"�������t�H�[�}�b�g���t�@�C�����^��������wave�f�o�C�X���C���X�g�[�����������������Bwave�f�o�C�X���C���X�g�[�����������R���g���[���p�l�������u�n�[�h�E�F�A�������������v�A�v���b�g���g�p�����������B"
+MCIERR_WAVE_SETINPUTUNSUITABLE, "�^�������������������f�o�C�X���������t�@�C���t�H�[�}�b�g���F�������������B"
+MCIERR_NO_WINDOW, 		"�\���E�B���h�E�������������B"
+MCIERR_CREATEWINDOW, 		"�E�B���h�E�������������g�p�������������B"
+MCIERR_FILE_READ, 		"�w�������t�@�C�������������������B�t�@�C���������������m�F�����������A���������f�B�X�N���l�b�g���[�N�������m�F�����������B"
+MCIERR_FILE_WRITE, 		"�w���������t�@�C�������������������B�f�B�X�N���\���������e�����������A���������l�b�g���[�N�������������������m�F�����������B"
+MCIERR_SEQ_DIV_INCOMPATIBLE, 	"�u�\���O�|�C���^�v��SMPTE�������t�H�[�}�b�g���������g�p���������������������B"
+MCIERR_SEQ_NOMIDIPRESENT, 	"MIDI�f�o�C�X���C���X�g�[�����������������BMIDI�h���C�o���C���X�g�[�����������R���g���[���p�l�������u�n�[�h�E�F�A�������������v�A�v���b�g���g�p�����������B"
+MCIERR_SEQ_PORT_INUSE, 		"�w��������MIDI�|�[�g���g�p�������BMIDI�|�[�g���J���������������������������������������B"
+MCIERR_SEQ_PORT_MAPNODEVICE, 	"MIDI�}�b�p���������V�X�e���������������������f�o�C�X���Q�������������B���������X���������R���g���[���p�l�����uMIDI�}�b�p�v�A�v���b�g���g�p�����������B"
+MCIERR_SEQ_PORT_MISCERROR, 	"�w���������|�[�g���G���[���������������B"
+MCIERR_SEQ_PORT_NONEXISTENT, 	"�w��������MIDI�f�o�C�X���V�X�e�����������������������BMIDI�f�o�C�X���C���X�g�[�����������R���g���[���p�l�������u�n�[�h�E�F�A�������������v�A�v���b�g���g�p�����������B"
+MCIERR_SEQ_PORTUNSPECIFIED, 	"�V�X�e����������MIDI�|�[�g���w�����������������B"
+MCIERR_SEQ_TIMER, 		"�S�����}���`���f�B�A�^�C�}�������A�v���P�[�V�������������g�p�������������B�^�C�}���g�p���������A�v���P�[�V�����������I���������������������������B"
+
+END

reactos/lib/winmm
driver.c 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- driver.c	25 Feb 2004 20:00:41 -0000	1.3
+++ driver.c	8 Aug 2004 21:36:20 -0000	1.4
@@ -29,12 +29,15 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winnls.h"
+#include "winreg.h"
 #include "mmddk.h"
 #include "winemm.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(driver);
 
+#define HKLM_BASE "Software\\Microsoft\\Windows NT\\CurrentVersion"
+
 static LPWINE_DRIVER   lpDrvItemList  /* = NULL */;
 
 WINE_MMTHREAD*  (*pFnGetMMThread16)(UINT16 h) /* = NULL */;
@@ -206,7 +209,21 @@
  */
 BOOL	DRIVER_GetLibName(LPCSTR keyName, LPCSTR sectName, LPSTR buf, int sz)
 {
-    /* should also do some registry diving */
+    HKEY	hKey, hSecKey;
+    DWORD	bufLen, lRet;
+
+    lRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE, HKLM_BASE, 0, KEY_QUERY_VALUE, &hKey);
+    if (lRet == ERROR_SUCCESS) {
+	lRet = RegOpenKeyExA(hKey, sectName, 0, KEY_QUERY_VALUE, &hSecKey);
+	if (lRet == ERROR_SUCCESS) {
+	    lRet = RegQueryValueExA(hSecKey, keyName, 0, 0, buf, &bufLen);
+	    RegCloseKey( hSecKey );
+	}
+        RegCloseKey( hKey );
+    }
+    if (lRet == ERROR_SUCCESS) return TRUE;
+    /* default to system.ini if we can't find it in the registry,
+     * to support native installations where system.ini is still used */
     return GetPrivateProfileStringA(sectName, keyName, "", buf, sz, "SYSTEM.INI");
 }
 

reactos/lib/winmm
mci.c 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- mci.c	16 Apr 2004 09:04:04 -0000	1.3
+++ mci.c	8 Aug 2004 21:36:20 -0000	1.4
@@ -57,9 +57,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(mci);
 
-static	int			MCI_InstalledCount;
-static  LPSTR                   MCI_lpInstallNames /* = NULL */;
-
 WINMM_MapType  (*pFnMciMapMsg16To32A)  (WORD,WORD,DWORD*) /* = NULL */;
 WINMM_MapType  (*pFnMciUnMapMsg16To32A)(WORD,WORD,DWORD) /* = NULL */;
 WINMM_MapType  (*pFnMciMapMsg32ATo16)  (WORD,WORD,DWORD,DWORD*) /* = NULL */;
@@ -68,6 +65,9 @@
 /* First MCI valid device ID (0 means error) */
 #define MCI_MAGIC 0x0001
 
+/* MCI settings */
+#define HKLM_MCI "Software\\Microsoft\\Windows NT\\CurrentVersion\\MCI"
+
 /* dup a string and uppercase it */
 inline static LPSTR str_dup_upper( LPCSTR str )
 {
@@ -1435,8 +1435,10 @@
  */
 static	DWORD MCI_SysInfo(UINT uDevID, DWORD dwFlags, LPMCI_SYSINFO_PARMSA lpParms)
 {
-    DWORD		ret = MCIERR_INVALID_DEVICE_ID;
+    DWORD		ret = MCIERR_INVALID_DEVICE_ID, cnt = 0;
+    CHAR		buf[2048], *s = buf, *p;
     LPWINE_MCIDRIVER	wmd;
+    HKEY		hKey;
 
     if (lpParms == NULL)			return MCIERR_NULL_PARAMETER_BLOCK;
 
@@ -1445,41 +1447,39 @@
 
     switch (dwFlags & ~MCI_SYSINFO_OPEN) {
     case MCI_SYSINFO_QUANTITY:
-	{
-	    DWORD	cnt = 0;
-
-	    if (lpParms->wDeviceType < MCI_DEVTYPE_FIRST ||
-		lpParms->wDeviceType > MCI_DEVTYPE_LAST) {
-		if (dwFlags & MCI_SYSINFO_OPEN) {
-		    TRACE("MCI_SYSINFO_QUANTITY: # of open MCI drivers\n");
-		    EnterCriticalSection(&WINMM_IData->cs);
-		    for (wmd = WINMM_IData->lpMciDrvs; wmd; wmd = wmd->lpNext) {
-			cnt++;
-		    }
-		    LeaveCriticalSection(&WINMM_IData->cs);
-		} else {
-		    TRACE("MCI_SYSINFO_QUANTITY: # of installed MCI drivers\n");
-		    cnt = MCI_InstalledCount;
+	if (lpParms->wDeviceType < MCI_DEVTYPE_FIRST || lpParms->wDeviceType > MCI_DEVTYPE_LAST) {
+	    if (dwFlags & MCI_SYSINFO_OPEN) {
+		TRACE("MCI_SYSINFO_QUANTITY: # of open MCI drivers\n");
+		EnterCriticalSection(&WINMM_IData->cs);
+		for (wmd = WINMM_IData->lpMciDrvs; wmd; wmd = wmd->lpNext) {
+		    cnt++;
 		}
+		LeaveCriticalSection(&WINMM_IData->cs);
 	    } else {
-		if (dwFlags & MCI_SYSINFO_OPEN) {
-		    TRACE("MCI_SYSINFO_QUANTITY: # of open MCI drivers of type %u\n",
-			  lpParms->wDeviceType);
-		    EnterCriticalSection(&WINMM_IData->cs);
-		    for (wmd = WINMM_IData->lpMciDrvs; wmd; wmd = wmd->lpNext) {
-			if (wmd->wType == lpParms->wDeviceType)
-			    cnt++;
-		    }
-		    LeaveCriticalSection(&WINMM_IData->cs);
-		} else {
-		    TRACE("MCI_SYSINFO_QUANTITY: # of installed MCI drivers of type %u\n",
-			  lpParms->wDeviceType);
-		    FIXME("Don't know how to get # of MCI devices of a given type\n");
-		    cnt = 1;
+		TRACE("MCI_SYSINFO_QUANTITY: # of installed MCI drivers\n");
+		if (RegOpenKeyExA( HKEY_LOCAL_MACHINE, HKLM_MCI,
+			  	   0, KEY_QUERY_VALUE, &hKey ) == ERROR_SUCCESS) {
+		    RegQueryInfoKeyA( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0);
+		    RegCloseKey( hKey );
+		}
+		if (GetPrivateProfileStringA("mci", 0, "", buf, sizeof(buf), "system.ini"))
+		    for(s = buf; *s; s += strlen(s) + 1) cnt++;
+	    }
+	} else {
+	    if (dwFlags & MCI_SYSINFO_OPEN) {
+		TRACE("MCI_SYSINFO_QUANTITY: # of open MCI drivers of type %u\n", lpParms->wDeviceType);
+		EnterCriticalSection(&WINMM_IData->cs);
+		for (wmd = WINMM_IData->lpMciDrvs; wmd; wmd = wmd->lpNext) {
+		    if (wmd->wType == lpParms->wDeviceType) cnt++;
 		}
+		LeaveCriticalSection(&WINMM_IData->cs);
+	    } else {
+		TRACE("MCI_SYSINFO_QUANTITY: # of installed MCI drivers of type %u\n", lpParms->wDeviceType);
+		FIXME("Don't know how to get # of MCI devices of a given type\n");
+		cnt = 1;
 	    }
-	    *(DWORD*)lpParms->lpstrReturn = cnt;
 	}
+	*(DWORD*)lpParms->lpstrReturn = cnt;
 	TRACE("(%ld) => '%ld'\n", lpParms->dwNumber, *(DWORD*)lpParms->lpstrReturn);
 	ret = MCI_INTEGER_RETURNED;
 	break;
@@ -1499,14 +1499,30 @@
 	if (dwFlags & MCI_SYSINFO_OPEN) {
 	    FIXME("Don't handle MCI_SYSINFO_NAME|MCI_SYSINFO_OPEN (yet)\n");
 	    ret = MCIERR_UNRECOGNIZED_COMMAND;
-	} else if (lpParms->dwNumber > MCI_InstalledCount) {
-	    ret = MCIERR_OUTOFRANGE;
 	} else {
-	    DWORD	count = lpParms->dwNumber;
-	    LPSTR	ptr = MCI_lpInstallNames;
-
-	    while (--count > 0) ptr += strlen(ptr) + 1;
-	    ret = MCI_WriteString(lpParms->lpstrReturn, lpParms->dwRetSize, ptr);
+	    DWORD lRet;
+	    s = 0;
+	    lRet = RegOpenKeyExA( HKEY_LOCAL_MACHINE, HKLM_MCI, 0, KEY_QUERY_VALUE, &hKey );
+	    if (lRet == ERROR_SUCCESS) {
+		lRet = RegQueryInfoKeyA( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0);
+		if (lRet == ERROR_SUCCESS && lpParms->dwNumber <= cnt) {
+    		    DWORD bufLen = sizeof(buf);
+		    lRet = RegEnumKeyExA(hKey, lpParms->dwNumber - 1, buf, &bufLen, 0, 0, 0, 0);
+		    if (lRet == ERROR_SUCCESS) s = buf;
+		}
+	        RegCloseKey( hKey );
+	    }
+	    if (!s) {
+		if (GetPrivateProfileStringA("mci", 0, "", buf, sizeof(buf), "system.ini")) {
+		    for(p = buf; *p; p += strlen(s) + 1, cnt++) {
+			if (cnt == lpParms->dwNumber - 1) {
+			    s = p;
+			    break;
+			}
+		    }
+		}
+	    }
+	    ret = s ? MCI_WriteString(lpParms->lpstrReturn, lpParms->dwRetSize, s) : MCIERR_OUTOFRANGE;
 	}
 	TRACE("(%ld) => '%s'\n", lpParms->dwNumber, lpParms->lpstrReturn);
 	break;
@@ -1724,54 +1740,3 @@
     }
     return LOWORD(dwRet);
 }
-
-/**************************************************************************
- * 			MCI_Init			[internal]
- *
- * Initializes the MCI internal variables.
- *
- */
-BOOL MCI_Init(void)
-{
-    LPSTR	ptr1, ptr2;
-    HKEY	hWineConf;
-    HKEY	hkey;
-    DWORD	err;
-    DWORD 	type;
-    DWORD 	count = 2048;
-
-    MCI_InstalledCount = 0;
-    ptr1 = MCI_lpInstallNames = HeapAlloc(GetProcessHeap(), 0, count);
-
-    if (!MCI_lpInstallNames)
-	return FALSE;
-
-    /* FIXME: should do also some registry diving here ? */
-    if (!(err = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\\Wine\\Wine\\Config", &hWineConf)) &&
-	!(err = RegOpenKeyA(hWineConf, "options", &hkey))) {
-	err = RegQueryValueExA(hkey, "mci", 0, &type, MCI_lpInstallNames, &count);
-	RegCloseKey(hkey);
-
-    }
-    if (!err) {
-	TRACE("Wine => '%s' \n", ptr1);
-	while ((ptr2 = strchr(ptr1, ':')) != 0) {
-	    *ptr2++ = 0;
-	    TRACE("---> '%s' \n", ptr1);
-	    MCI_InstalledCount++;
-	    ptr1 = ptr2;
-	}
-	MCI_InstalledCount++;
-	TRACE("---> '%s' \n", ptr1);
-	ptr1 += strlen(ptr1) + 1;
-    } else {
-	GetPrivateProfileStringA("mci", NULL, "", MCI_lpInstallNames, count, "SYSTEM.INI");
-	while (strlen(ptr1) > 0) {
-	    TRACE("---> '%s' \n", ptr1);
-	    ptr1 += strlen(ptr1) + 1;
-	    MCI_InstalledCount++;
-	}
-    }
-    RegCloseKey(hWineConf);
-    return TRUE;
-}

reactos/lib/winmm
winehq2ros.patch 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- winehq2ros.patch	16 Jun 2004 18:48:46 -0000	1.4
+++ winehq2ros.patch	8 Aug 2004 21:36:20 -0000	1.5
@@ -4,7 +4,7 @@
 retrieving revision 1.58
 diff -u -r1.58 lolvldrv.c
 --- lolvldrv.c	1 Jun 2004 19:40:48 -0000	1.58
-+++ lolvldrv.c	16 Jun 2004 18:56:14 -0000
++++ lolvldrv.c	8 Aug 2004 21:46:41 -0000
 @@ -510,10 +510,12 @@
      case DRV_QUERYDEVICEINTERFACESIZE:
          return MMDRV_Message(mld, uMsg, dwParam1, dwParam2, TRUE);
@@ -45,7 +45,7 @@
 retrieving revision 1.26
 diff -u -r1.26 time.c
 --- time.c	12 Jan 2004 21:03:10 -0000	1.26
-+++ time.c	16 Jun 2004 18:56:14 -0000
++++ time.c	8 Aug 2004 21:46:42 -0000
 @@ -175,14 +175,19 @@
      volatile HANDLE *pActive = (volatile HANDLE *)&TIME_hMMTimer;
      DWORD last_time, cur_time;
@@ -69,11 +69,22 @@
 Index: winmm.c
 ===================================================================
 RCS file: /home/wine/wine/dlls/winmm/winmm.c,v
-retrieving revision 1.37
-diff -u -r1.37 winmm.c
---- winmm.c	14 Jun 2004 16:53:59 -0000	1.37
-+++ winmm.c	16 Jun 2004 18:56:15 -0000
-@@ -126,10 +126,12 @@
+retrieving revision 1.38
+diff -u -r1.38 winmm.c
+--- winmm.c	30 Jun 2004 18:12:20 -0000	1.38
++++ winmm.c	8 Aug 2004 21:46:43 -0000
+@@ -102,8 +102,9 @@
+ 	 * inside WINMM_IData */
+         CloseHandle(WINMM_IData->psStopEvent);
+         CloseHandle(WINMM_IData->psLastEvent);
++        WINMM_IData->cs.DebugInfo = NULL;
+         DeleteCriticalSection(&WINMM_IData->cs);
+-	HeapFree(GetProcessHeap(), 0, WINMM_IData);
++        HeapFree(GetProcessHeap(), 0, WINMM_IData);
+         WINMM_IData = NULL;
+     }
+ }
+@@ -126,10 +127,12 @@
          loaded = -1;
          if (h)
          {
@@ -86,3 +97,139 @@
                  loaded = 1;
          }
      }
+@@ -2658,6 +2661,7 @@
+ 				 WAVEHDR* lpWaveOutHdr, UINT uSize)
+ {
+     LPWINE_MLD		wmld;
++    UINT		result;
+ 
+     TRACE("(%p, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
+ 
+@@ -2667,7 +2671,17 @@
+     if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, FALSE)) == NULL)
+ 	return MMSYSERR_INVALHANDLE;
+ 
+-    return MMDRV_Message(wmld, WODM_PREPARE, (DWORD_PTR)lpWaveOutHdr, uSize, TRUE);
++    if ((result = MMDRV_Message(wmld, WODM_PREPARE, (DWORD_PTR)lpWaveOutHdr,
++                                uSize, TRUE)) != MMSYSERR_NOTSUPPORTED)
++        return result;
++
++    if (lpWaveOutHdr->dwFlags & WHDR_INQUEUE)
++	return WAVERR_STILLPLAYING;
++
++    lpWaveOutHdr->dwFlags |= WHDR_PREPARED;
++    lpWaveOutHdr->dwFlags &= ~WHDR_DONE;
++
++    return MMSYSERR_NOERROR;
+ }
+ 
+ /**************************************************************************
+@@ -2677,6 +2691,7 @@
+ 				   LPWAVEHDR lpWaveOutHdr, UINT uSize)
+ {
+     LPWINE_MLD		wmld;
++    UINT		result;
+ 
+     TRACE("(%p, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
+ 
+@@ -2690,7 +2705,17 @@
+     if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, FALSE)) == NULL)
+ 	return MMSYSERR_INVALHANDLE;
+ 
+-    return MMDRV_Message(wmld, WODM_UNPREPARE, (DWORD_PTR)lpWaveOutHdr, uSize, TRUE);
++    if ((result = MMDRV_Message(wmld, WODM_UNPREPARE, (DWORD_PTR)lpWaveOutHdr,
++                                uSize, TRUE)) != MMSYSERR_NOTSUPPORTED)
++        return result;
++
++    if (lpWaveOutHdr->dwFlags & WHDR_INQUEUE)
++	return WAVERR_STILLPLAYING;
++
++    lpWaveOutHdr->dwFlags &= ~WHDR_PREPARED;
++    lpWaveOutHdr->dwFlags |= WHDR_DONE;
++
++    return MMSYSERR_NOERROR;
+ }
+ 
+ /**************************************************************************
+@@ -3173,4 +3198,50 @@
+ 
+ 
+     return MMDRV_Message(wmld, uMessage, dwParam1, dwParam2, TRUE);
++}
++
++struct mm_starter
++{
++    LPTASKCALLBACK      cb;
++    DWORD               client;
++    HANDLE              event;
++};
++
++DWORD WINAPI mmTaskRun(void* pmt)
++{
++    struct mm_starter mms;
++
++    memcpy(&mms, pmt, sizeof(struct mm_starter));
++    HeapFree(GetProcessHeap(), 0, pmt);
++    mms.cb(mms.client);
++    if (mms.event) SetEvent(mms.event);
++    return 0;
++}
++
++MMRESULT WINAPI mmTaskCreate(LPTASKCALLBACK cb, HANDLE* ph, DWORD client)
++{
++    HANDLE               hThread;
++    HANDLE               hEvent;
++    struct mm_starter   *mms;
++
++    mms = HeapAlloc(GetProcessHeap(), 0, sizeof(struct mm_starter));
++    if (mms == NULL) { return TASKERR_OUTOFMEMORY; }
++
++    mms->cb = cb;
++    mms->client = client;
++    if (ph) {
++        mms->event = hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
++    } else {
++        mms->event = NULL;
++    }
++
++    hThread = CreateThread(0, 0, mmTaskRun, (LPVOID)mms, 0, NULL);
++    if (!hThread) {
++        HeapFree(GetProcessHeap(), 0, mms);
++        CloseHandle(hEvent);
++        return TASKERR_OUTOFMEMORY;
++    }
++    if (ph) *ph = hEvent;
++    CloseHandle(hThread);
++    return 0;
+ }
+Index: winmm.spec
+===================================================================
+RCS file: /home/wine/wine/dlls/winmm/winmm.spec,v
+retrieving revision 1.20
+diff -u -r1.20 winmm.spec
+--- winmm.spec	15 Sep 2003 20:13:30 -0000	1.20
++++ winmm.spec	8 Aug 2004 21:46:43 -0000
+@@ -135,6 +135,7 @@
+ @ stdcall mmioStringToFOURCCW(wstr long)
+ @ stdcall mmioWrite(long ptr long)
+ @ stdcall mmsystemGetVersion()
++@ stdcall mmTaskCreate(ptr ptr long)
+ @ stdcall sndPlaySoundA(ptr long)
+ @ stdcall sndPlaySoundW(ptr long)
+ @ stdcall timeBeginPeriod(long)
+Index: winmm_res.rc
+===================================================================
+RCS file: /home/wine/wine/dlls/winmm/winmm_res.rc,v
+retrieving revision 1.15
+diff -u -r1.15 winmm_res.rc
+--- winmm_res.rc	13 Jul 2004 23:36:37 -0000	1.15
++++ winmm_res.rc	8 Aug 2004 21:46:43 -0000
+@@ -33,7 +33,7 @@
+ #include "winmm_Es.rc"
+ #include "winmm_Fr.rc"
+ #include "winmm_It.rc"
+-#include "winmm_Ja.rc"
++/* #include "winmm_Ja.rc" */ /* Gives error during ReactOS build */
+ #include "winmm_Nl.rc"
+ #include "winmm_Pt.rc"
+ #include "winmm_Ru.rc"

reactos/lib/winmm
winemm.h 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- winemm.h	16 Jun 2004 18:48:46 -0000	1.4
+++ winemm.h	8 Aug 2004 21:36:20 -0000	1.5
@@ -243,7 +243,6 @@
 void            MMDRV_InstallMap(unsigned int, MMDRV_MAPFUNC, MMDRV_UNMAPFUNC,
                                  MMDRV_MAPFUNC, MMDRV_UNMAPFUNC, LPDRVCALLBACK);
 
-BOOL    	MCI_Init(void);
 WINE_MCIDRIVER* MCI_GetDriver(UINT16 uDevID);
 UINT		MCI_GetDriverFromString(LPCSTR str);
 DWORD		MCI_WriteString(LPSTR lpDstStr, DWORD dstSize, LPCSTR lpSrcStr);

reactos/lib/winmm
winmm.c 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- winmm.c	18 Jul 2004 17:06:03 -0000	1.8
+++ winmm.c	8 Aug 2004 21:36:20 -0000	1.9
@@ -185,7 +185,7 @@
 
 	if (!WINMM_CreateIData(hInstDLL))
 	    return FALSE;
-        if (!MCI_Init() || !MMDRV_Init()) {
+        if (!MMDRV_Init()) {
             WINMM_DeleteIData();
             return FALSE;
 	}

reactos/lib/winmm
winmm_res.rc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- winmm_res.rc	16 Apr 2004 09:04:04 -0000	1.2
+++ winmm_res.rc	8 Aug 2004 21:36:20 -0000	1.3
@@ -28,12 +28,14 @@
 #include "winnls.h"
 
 /* Add your language specific defines here */
+#include "winmm_De.rc"
 #include "winmm_En.rc"
+#include "winmm_Es.rc"
 #include "winmm_Fr.rc"
 #include "winmm_It.rc"
+/* #include "winmm_Ja.rc" */ /* Gives error during ReactOS build */
 #include "winmm_Nl.rc"
 #include "winmm_Pt.rc"
-#include "winmm_Es.rc"
 #include "winmm_Ru.rc"
 #include "winmm_Si.rc"
 #include "winmm_Sk.rc"
CVSspam 0.2.8