Compare commits

...

9 Commits

Author SHA1 Message Date
Colin Finck
03dc76ef23 Merge 51053, 51069
svn path=/branches/ros-branch-0_3_13/; revision=51070
2011-03-16 16:57:58 +00:00
Colin Finck
43903288f4 Merge r51067
svn path=/branches/ros-branch-0_3_13/; revision=51068
2011-03-16 16:17:03 +00:00
Colin Finck
bdd21d454d Hackfix for Far 1.65.
Although the file manager didn't become fully usable with this patch, it works better than without and the patch doesn't seem to have negative side effects.

See issue #5503 for more details.

svn path=/branches/ros-branch-0_3_13/; revision=51066
2011-03-16 15:09:31 +00:00
Colin Finck
d4028b14b9 Merge 51058, 51062-51063
svn path=/branches/ros-branch-0_3_13/; revision=51064
2011-03-16 14:08:30 +00:00
Colin Finck
f7404c57db Merge r51046-r51048
svn path=/branches/ros-branch-0_3_13/; revision=51049
2011-03-14 14:58:36 +00:00
Colin Finck
867a0ff468 Merge r51043 and r51044
svn path=/branches/ros-branch-0_3_13/; revision=51045
2011-03-13 22:10:29 +00:00
Colin Finck
03c991f93b Revert r51031
[13:43]	<smiley1_>	fuck
[13:44]	<smiley1_>	INVALID_KERNEL_HANDLE ?!?
[13:45]	<smiley1_>	Caemyr: after my latest commit 5 tests end with this bugcheck

svn path=/branches/ros-branch-0_3_13/; revision=51040
2011-03-13 18:05:43 +00:00
Colin Finck
9cccfb8a2d Get rid of the "old boot method" entries.
In contrast to my previous commit, this should indeed be merged to Trunk, but please don't forget to get rid of the corresponding FreeLDR code as well then.

svn path=/branches/ros-branch-0_3_13/; revision=51038
2011-03-13 17:54:42 +00:00
Colin Finck
d2eb058174 - Change the version to 0.3.13
- Set "Angelus_02_ROSWP.bmp" as the default wallpaper
- Add a shortcut to RApps to the Desktop
- Change the boot logo to update the copyright year. Done with GIMP this time as it was one of the few tools to create proper 4-bit RLE files.
  This logo shall not be merged back to Trunk, because Aleksey wants to have another bitmap ready by the next release.

svn path=/branches/ros-branch-0_3_13/; revision=51037
2011-03-13 17:49:31 +00:00
39 changed files with 280 additions and 259 deletions

View File

@@ -8,45 +8,37 @@ Description = The most popular and one of the best free Web Browsers out there.
Size = 5.8M
Category = 5
URLSite = http://www.mozilla.com/en-US/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/en-US/Firefox%20Setup%202.0.0.20.exe
URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%202.0.0.20.exe
CDPath = none
[Section.0405]
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
URLSite = http://www.mozilla-europe.org/cs/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/cs/Firefox%20Setup%202.0.0.20.exe
[Section.0407]
Description = Der populärste und einer der besten freien Webbrowser.
URLSite = http://www.mozilla-europe.org/de/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/de/Firefox%20Setup%202.0.0.20.exe
[Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
URLSite = http://www.mozilla-europe.org/es/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/es-ES/Firefox%20Setup%202.0.0.20.exe
[Section.040c]
Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs.
URLSite = http://www.mozilla-europe.org/fr/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/fr/Firefox%20Setup%202.0.0.20.exe
[Section.0414]
Description = Mest populære og best også gratis nettleserene der ute.
URLSite = http://www.mozilla-europe.org/no/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/nb-NO/Firefox%20Setup%202.0.0.20.exe
[Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
URLSite = http://www.mozilla-europe.org/pl/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/pl/Firefox%20Setup%202.0.0.20.exe
[Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров.
URLSite = http://www.mozilla-europe.org/ru/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/ru/Firefox%20Setup%202.0.0.20.exe
[Section.0422]
Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
URLSite = http://www.mozilla-europe.org/uk/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/2.0.0.20/win32/uk/Firefox%20Setup%202.0.0.20.exe

View File

@@ -8,52 +8,44 @@ Description = The most popular and one of the best free Web Browsers out there.
Size = 7.2M
Category = 5
URLSite = http://www.mozilla.com/en-US/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe
URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%203.0.19.exe
CDPath = none
[Section.0405]
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
Size = 7.0M
URLSite = http://www.mozilla-europe.org/cs/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/cs/Firefox%20Setup%203.0.19.exe
[Section.0407]
Description = Der populärste und einer der besten freien Webbrowser.
Size = 7.0M
URLSite = http://www.mozilla-europe.org/de/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/de/Firefox%20Setup%203.0.19.exe
[Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
Size = 7.0M
URLSite = http://www.mozilla-europe.org/es/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/es-ES/Firefox%20Setup%203.0.19.exe
[Section.040c]
Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs.
URLSite = http://www.mozilla-europe.org/fr/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/fr/Firefox%20Setup%203.0.19.exe
[Section.0414]
Description = Mest populære og best også gratis nettleserene der ute.
Size = 7.0M
URLSite = http://www.mozilla-europe.org/no/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/nb-NO/Firefox%20Setup%203.0.19.exe
[Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
Size = 7.9M
URLSite = http://www.mozilla-europe.org/pl/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/pl/Firefox%20Setup%203.0.19.exe
[Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров.
Size = 7.8M
URLSite = http://www.mozilla-europe.org/ru/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/ru/Firefox%20Setup%203.0.19.exe
[Section.0422]
Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
Size = 7.4M
URLSite = http://www.mozilla-europe.org/uk/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.0.19-real-real/win32/uk/Firefox%20Setup%203.0.19.exe

View File

@@ -8,47 +8,47 @@ Description = The most popular and one of the best free Web Browsers out there.
Size = 8.2M
Category = 5
URLSite = http://www.mozilla.com/en-US/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/en-US/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/en-US/Firefox%20Setup%203.6.15.exe
CDPath = none
[Section.0407]
Description = Der populärste und einer der besten freien Webbrowser.
Size = 8.1M
URLSite = http://www.mozilla-europe.org/de/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/de/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/de/Firefox%20Setup%203.6.15.exe
[Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
Size = 8.1M
URLSite = http://www.mozilla-europe.org/es/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/es-ES/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/es-ES/Firefox%20Setup%203.6.15.exe
[Section.040c]
Description = Le navigateur web gratuit le plus populaire et l'un des meilleurs.
Size = 8.1M
URLSite = http://www.mozilla-europe.org/fr/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/fr/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/fr/Firefox%20Setup%203.6.15.exe
[Section.0414]
Description = Mest populære og best også gratis nettleserene der ute.
Size = 8.1M
URLSite = http://www.mozilla-europe.org/no/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/nb-NO/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/nb-NO/Firefox%20Setup%203.6.15.exe
[Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
Size = 8.9M
URLSite = http://www.mozilla-europe.org/pl/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/pl/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/pl/Firefox%20Setup%203.6.15.exe
[Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров.
Size = 8.5M
URLSite = http://www.mozilla-europe.org/ru/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/ru/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/ru/Firefox%20Setup%203.6.15.exe
[Section.0422]
Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
Size = 8.5M
URLSite = http://www.mozilla-europe.org/uk/
URLDownload = ftp://ftp.mozilla.org/pub/firefox/releases/3.6.15/win32/uk/Firefox%20Setup%203.6.15.exe
URLDownload = http://mozilla.cdn.leaseweb.com/firefox/releases/3.6.15/win32/uk/Firefox%20Setup%203.6.15.exe

View File

@@ -8,36 +8,36 @@ Description = THE Open Source Office Suite.
Size = 127MB
Category = 6
URLSite = http://www.openoffice.org/
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/stable/2.4.3/OOo_2.4.3_Win32Intel_install_en-US.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/stable/2.4.3/OOo_2.4.3_Win32Intel_install_en-US.exe
CDPath = none
[Section.0407]
Description = DIE Open Source Office Suite.
URLSite = http://de.openoffice.org/
Size = 114.2MB
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/localized/de/2.4.3/OOo_2.4.3_Win32Intel_install_de.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/localized/de/2.4.3/OOo_2.4.3_Win32Intel_install_de.exe
[Section.040a]
Description = La suite de ofimática de código abierto.
URLSite = http://es.openoffice.org/
Size = 113.9MB
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/localized/es/2.4.3/OOo_2.4.3_Win32Intel_install_es.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/localized/es/2.4.3/OOo_2.4.3_Win32Intel_install_es.exe
[Section.040c]
Version = 2.4.2
Description = LA suite bureautique open source.
URLSite = http://fr.openoffice.org/
Size = 113.9MB
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/localized/fr/2.4.2/OOo_2.4.2_Win32Intel_install_fr.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/localized/fr/2.4.2/OOo_2.4.2_Win32Intel_install_fr.exe
[Section.0415]
URLSite = http://pl.openoffice.org/
Description = Otwarty pakiet biurowy.
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/localized/pl/2.4.2/OOo_2.4.2_Win32Intel_install_pl.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/localized/pl/2.4.2/OOo_2.4.2_Win32Intel_install_pl.exe
Size = 113.9M
[Section.0422]
URLSite = http://ua.openoffice.org/
Description = Відкритий офісний пакет.
URLDownload = ftp://archive.services.openoffice.org/pub/openoffice-archive/localized/ru/2.4.3/OOo_2.4.3_Win32Intel_install_ru.exe
URLDownload = http://archive.services.openoffice.org/pub/openoffice-archive/localized/ru/2.4.3/OOo_2.4.3_Win32Intel_install_ru.exe
Size = 114.8M

View File

@@ -8,30 +8,30 @@ Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Ch
Size = 10.2MB
Category = 5
URLSite = http://www.seamonkey-project.org/
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/en-US/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/en-US/SeaMonkey%20Setup%202.0.12.exe
CDPath = none
[Section.0407]
Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen.
Size = 10.1MB
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/de/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/de/SeaMonkey%20Setup%202.0.12.exe
[Section.040a]
Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás.
Size = 10.1MB
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/es-ES/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/es-ES/SeaMonkey%20Setup%202.0.12.exe
[Section.040c]
Description = La suite Mozilla est en vie. Ceci est le seul et l'unique package navigateur, client mail, client chat et composer dont vous aurez besoin.
Size = 10.1MB
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/fr/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/fr/SeaMonkey%20Setup%202.0.12.exe
[Section.0415]
Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz.
Size = 11.0MB
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/pl/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/pl/SeaMonkey%20Setup%202.0.12.exe
[Section.0419]
Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор.
Size = 10.5MB
URLDownload = ftp://ftp.mozilla.org/pub/seamonkey/releases/2.0.12/win32/ru/SeaMonkey%20Setup%202.0.12.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.12/win32/ru/SeaMonkey%20Setup%202.0.12.exe

View File

@@ -8,41 +8,41 @@ Description = The most popular and one of the best free Mail Clients out there.
Size = 9.0M
Category = 5
URLSite = http://www.mozilla-europe.org/en/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/en-US/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/en-US/Thunderbird%20Setup%203.1.9.exe
CDPath = none
[Section.0407]
Description = Der populärste und einer der besten freien Mail-Clients.
Size = 8.8M
URLSite = http://www.mozilla-europe.org/de/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/de/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/de/Thunderbird%20Setup%203.1.9.exe
[Section.040a]
Description = El más popular y uno de los mejores clientes mail que hay.
Size = 8.8M
URLSite = http://www.mozilla-europe.org/es/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/es-ES/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/es-ES/Thunderbird%20Setup%203.1.9.exe
[Section.040c]
Description = Le plus populaire et l'un des meilleurs clients mail gratuits disponible.
Size = 8.8M
URLSite = http://www.mozilla-europe.org/fr/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/fr/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/fr/Thunderbird%20Setup%203.1.9.exe
[Section.0415]
Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty.
Size = 9.7M
URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/pl/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/pl/Thunderbird%20Setup%203.1.9.exe
[Section.0419]
Description = Один из самых популярных и лучших бесплатных почтовых клиентов.
Size = 9.2M
URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/ru/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/ru/Thunderbird%20Setup%203.1.9.exe
[Section.0422]
Description = Найпопулярніший та один з кращих поштових клієнтів.
Size = 9.2M
URLSite = http://www.mozillamessaging.com/uk/thunderbird/
URLDownload = ftp://ftp.mozilla.org/pub/thunderbird/releases/3.1.9/win32/uk/Thunderbird%20Setup%203.1.9.exe
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.9/win32/uk/Thunderbird%20Setup%203.1.9.exe

View File

@@ -8,7 +8,7 @@ Description = WinBoard is a graphical chessboard for the Windows/ReactOS that ca
Size = 5.9MB
Category = 4
URLSite = http://www.gnu.org/software/xboard/
URLDownload = ftp://ftp.gnu.org/old-gnu/xboard/winboard/winboard-4_2_7b.exe
URLDownload = http://ftp.gnu.org/old-gnu/xboard/winboard/winboard-4_2_7b.exe
CDPath = none
[Section.0407]

View File

@@ -29,22 +29,22 @@ BOOL
CreateAudioDeviceList(DWORD max_size);
VOID
DestroyAudioDeviceList(VOID);
DestroyAudioDeviceList();
/* Plug and Play (pnp.c) */
BOOL
ProcessExistingDevices(VOID);
ProcessExistingDevices();
DWORD
ProcessDeviceArrival(DEV_BROADCAST_DEVICEINTERFACE* device);
BOOL
RegisterForDeviceNotifications(VOID);
RegisterForDeviceNotifications();
VOID
UnregisterDeviceNotifications(VOID);
UnregisterDeviceNotifications();
DWORD
HandleDeviceEvent(
@@ -52,7 +52,7 @@ HandleDeviceEvent(
LPVOID lpEventData);
BOOL
StartSystemAudioServices(VOID);
StartSystemAudioServices();
/* Debugging */

View File

@@ -35,8 +35,8 @@ extern volatile BOOL bShutdown;
extern volatile BOOL bPause;
/* logging functions */
BOOL InitLogging(VOID);
VOID UninitLogging(VOID);
BOOL InitLogging();
VOID UninitLogging();
VOID LogEvent(LPCWSTR lpMsg, DWORD errNum, DWORD exitCode, UINT flags);
/* skelserver functions */

View File

@@ -146,16 +146,16 @@ struct data15
};
//Functions
void runProg(void);
void runProg();
void processRequest(LPVOID lpParam);
char* myGetToken(char*, BYTE);
void init(void);
void init();
bool cleanReq(request*);
bool getSection(const char*, char*, BYTE, char*);
bool isIP(char*s);
char* myLower(char*);
char* myUpper(char*);
char* IP2String(char*, DWORD);
void printWindowsError(void);
void printWindowsError();
void logMess(request*, BYTE);
void logMess(char*, BYTE);

View File

@@ -513,18 +513,6 @@ CreateFreeLoaderIniForReactos(PWCHAR IniPath,
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /RDIMAGEPATH=reactos.img /RDIMAGEOFFSET=32256");
#endif
/* ReactOS_old */
CreateFreeLoaderEntry(IniCache, IniSection,
L"ReactOS_old", L"\"ReactOS (old boot method)\"",
L"ReactOS", ArcPath,
L"");
/* ReactOS_Debug_old */
CreateFreeLoaderEntry(IniCache, IniSection,
L"ReactOS_Debug_old", L"\"ReactOS (Debug, old boot method)\"",
L"ReactOS", ArcPath,
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS");
/* Save the ini file */
IniCacheSave(IniCache, IniPath);
IniCacheDestroy(IniCache);

View File

@@ -166,9 +166,9 @@ typedef VOID (*PCABINET_DISK_CHANGE)(PWCHAR CabinetName,
/* Classes */
/* Default constructor */
VOID CabinetInitialize(VOID);
VOID CabinetInitialize();
/* Default destructor */
VOID CabinetCleanup(VOID);
VOID CabinetCleanup();
/* Returns a pointer to the filename part of a fully qualified filename */
PWCHAR CabinetGetFileName(PWCHAR Path);
/* Removes a filename from a fully qualified filename */
@@ -176,19 +176,19 @@ VOID CabinetRemoveFileName(PWCHAR Path);
/* Normalizes a path */
BOOL CabinetNormalizePath(PWCHAR Path, ULONG Length);
/* Returns name of cabinet file */
PWCHAR CabinetGetCabinetName(VOID);
PWCHAR CabinetGetCabinetName();
/* Sets the name of the cabinet file */
VOID CabinetSetCabinetName(PWCHAR FileName);
/* Sets destination path for extracted files */
VOID CabinetSetDestinationPath(PWCHAR DestinationPath);
/* Returns destination path */
PWCHAR CabinetGetDestinationPath(VOID);
PWCHAR CabinetGetDestinationPath();
/* Returns zero-based current disk number */
ULONG CabinetGetCurrentDiskNumber(VOID);
ULONG CabinetGetCurrentDiskNumber();
/* Opens the current cabinet file */
ULONG CabinetOpen(VOID);
ULONG CabinetOpen();
/* Closes the current open cabinet file */
VOID CabinetClose(VOID);
VOID CabinetClose();
/* Locates the first file in the current cabinet file that matches a search criteria */
ULONG CabinetFindFirst(PWCHAR FileName, PCAB_SEARCH Search);
/* Locates the next file in the current cabinet file */

View File

@@ -45,7 +45,7 @@ extern TCHAR textline[BATCH_BUFFSIZE]; /* Buffer for reading Batch file lines */
LPTSTR FindArg (TCHAR, BOOL *);
LPTSTR BatchParams (LPTSTR, LPTSTR);
VOID ExitBatch (VOID);
VOID ExitBatch ();
INT Batch (LPTSTR, LPTSTR, LPTSTR, PARSED_COMMAND *);
LPTSTR ReadBatchLine(VOID);
LPTSTR ReadBatchLine();
VOID AddBatchRedirection(REDIRECTION **);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -21,10 +21,6 @@ SelectedColor=Gray
[Operating Systems]
Setup="Setup"
Setup_old="Setup (old boot method)"
[Setup]
BootType=ReactOSSetup2
[Setup_old]
BootType=ReactOSSetup

View File

@@ -21,14 +21,8 @@ SelectedColor=Gray
[Operating Systems]
ReactOS="ReactOS"
Reactos_old="ReactOS (old boot method)"
[ReactOS]
BootType=Windows2003
SystemPath=LiveCD\reactos
Options=/DEBUGPORT=COM1 /SOS /MININT
[Reactos_old]
BootType=ReactOS
SystemPath=LiveCD\reactos
Options=/DEBUGPORT=COM1 /SOS

View File

@@ -47,7 +47,7 @@ IsLayoutExists(LPTSTR szLayoutID, LPTSTR szLangID);
INT_PTR CALLBACK
KeySettingsDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
VOID
UpdateKeySettingsList(VOID);
UpdateKeySettingsList();
/* add.c */
INT_PTR CALLBACK

View File

@@ -125,8 +125,8 @@ VOID Cleanup(LPDDRAWI_DIRECTDRAW_INT iface);
/******** Main Object ********/
/* Public interface */
VOID WINAPI AcquireDDThreadLock(VOID);
VOID WINAPI ReleaseDDThreadLock(VOID);
VOID WINAPI AcquireDDThreadLock();
VOID WINAPI ReleaseDDThreadLock();
ULONG WINAPI DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface);
HRESULT WINAPI DirectDrawClipper_Initialize( LPDIRECTDRAWCLIPPER iface, LPDIRECTDRAW lpDD, DWORD dwFlags);

View File

@@ -79,16 +79,16 @@ typedef DWORD (*PipeSendFunc)( COMM_DHCP_REPLY *Reply );
void AdapterInit(VOID);
HANDLE StartAdapterDiscovery(VOID);
void AdapterStop(VOID);
extern PDHCP_ADAPTER AdapterGetFirst(VOID);
extern PDHCP_ADAPTER AdapterGetFirst();
extern PDHCP_ADAPTER AdapterGetNext(PDHCP_ADAPTER);
extern PDHCP_ADAPTER AdapterFindIndex( unsigned int AdapterIndex );
extern PDHCP_ADAPTER AdapterFindInfo( struct interface_info *info );
extern PDHCP_ADAPTER AdapterFindByHardwareAddress( u_int8_t haddr[16], u_int8_t hlen );
extern HANDLE PipeInit(VOID);
extern VOID ApiInit(VOID);
extern VOID ApiFree(VOID);
extern VOID ApiLock(VOID);
extern VOID ApiUnlock(VOID);
extern HANDLE PipeInit();
extern VOID ApiInit();
extern VOID ApiFree();
extern VOID ApiLock();
extern VOID ApiUnlock();
extern DWORD DSQueryHWInfo( PipeSendFunc Send, COMM_DHCP_REQ *Req );
extern DWORD DSLeaseIpAddress( PipeSendFunc Send, COMM_DHCP_REQ *Req );
extern DWORD DSRenewIpAddressLease( PipeSendFunc Send, COMM_DHCP_REQ *Req );

View File

@@ -28,7 +28,7 @@ typedef struct _IPHLP_RES_INFO {
/* Get resolver info. This currently is limited to a list of IP addresses
* that name our DNS server list. */
PIPHLP_RES_INFO getResInfo(VOID);
PIPHLP_RES_INFO getResInfo();
/* Release any resources used in acquiring the resolver information */
VOID disposeResInfo( PIPHLP_RES_INFO InfoPtr );

View File

@@ -12,7 +12,7 @@
#include <ndk/ntndk.h>
/* FIXME USP10 api that does not have prototype in any include file */
VOID WINAPI LpkPresent(VOID);
VOID WINAPI LpkPresent();
/* FIXME move _LPK_LPEDITCONTROL_LIST to global place so user32 can access it */
typedef struct _LPK_LPEDITCONTROL_LIST

View File

@@ -85,7 +85,7 @@ HRESULT WINAPI ISF_NetConnect_Constructor (IUnknown * pUnkOuter, REFIID riid, LP
/* enumlist.c */
IEnumIDList * IEnumIDList_Constructor(void);
LPITEMIDLIST _ILCreateNetConnect(void);
LPITEMIDLIST _ILCreateNetConnect();
LPITEMIDLIST ILCreateNetConnectItem(INetConnection * pItem);
BOOL _ILIsNetConnect (LPCITEMIDLIST pidl);
BOOL AddToEnumList(IEnumIDList * iface, LPITEMIDLIST pidl);

View File

@@ -5,8 +5,8 @@
#include <sfc.h>
#include <srrestoreptapi.h>
DWORD WINAPI sfc_8(VOID);
DWORD WINAPI sfc_9(VOID);
DWORD WINAPI sfc_8();
DWORD WINAPI sfc_9();
typedef BOOL (WINAPI *PSRSRPA)(PRESTOREPOINTINFOA, PSTATEMGRSTATUS);
typedef BOOL (WINAPI *PSRSRPW)(PRESTOREPOINTINFOW, PSTATEMGRSTATUS);

View File

@@ -47,52 +47,56 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
{
UINT i;
int rootlen = 0,size = 0;
WCHAR wszRootPath[MAX_PATH];
int size = 0;
WCHAR wszFileName[MAX_PATH];
HGLOBAL hGlobal;
HGLOBAL hGlobal = NULL;
DROPFILES *pDropFiles;
int offset;
LPITEMIDLIST *pidls;
TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
pidls = HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls));
if (!pidls)
goto cleanup;
/* get the size needed */
size = sizeof(DROPFILES);
SHGetPathFromIDListW(pidlRoot, wszRootPath);
PathAddBackslashW(wszRootPath);
rootlen = wcslen(wszRootPath);
for (i=0; i<cidl;i++)
{
_ILSimpleGetTextW(apidl[i], wszFileName, MAX_PATH);
size += (rootlen + wcslen(wszFileName) + 1) * sizeof(WCHAR);
pidls[i] = ILCombine(pidlRoot, apidl[i]);
SHGetPathFromIDListW(pidls[i], wszFileName);
size += (wcslen(wszFileName) + 1) * sizeof(WCHAR);
}
size += sizeof(WCHAR);
/* Fill the structure */
hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
if(!hGlobal) return hGlobal;
if(!hGlobal)
goto cleanup;
pDropFiles = (DROPFILES *)GlobalLock(hGlobal);
offset = (sizeof(DROPFILES) + sizeof(WCHAR) - 1) / sizeof(WCHAR);
pDropFiles->pFiles = offset * sizeof(WCHAR);
pDropFiles->fWide = TRUE;
wcscpy(wszFileName, wszRootPath);
for (i=0; i<cidl;i++)
{
_ILSimpleGetTextW(apidl[i], wszFileName + rootlen, MAX_PATH - rootlen);
SHGetPathFromIDListW(pidls[i], wszFileName);
wcscpy(((WCHAR*)pDropFiles)+offset, wszFileName);
offset += wcslen(wszFileName) + 1;
ILFree(pidls[i]);
}
((WCHAR*)pDropFiles)[offset] = 0;
GlobalUnlock(hGlobal);
cleanup:
if(pidls)
HeapFree(GetProcessHeap(), 0, pidls);
return hGlobal;
}

View File

@@ -773,6 +773,7 @@ CreateShortcuts(VOID)
/* Create desktop shortcuts */
CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_CMD, _T("%SystemRoot%\\system32\\cmd.exe"), IDS_CMT_CMD, TRUE);
CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_DOWNLOADER, _T("%SystemRoot%\\system32\\rapps.exe"), IDS_CMT_DOWNLOADER, TRUE);
/* Create program startmenu shortcuts */
CreateShortcut(CSIDL_PROGRAMS, NULL, IDS_SHORT_EXPLORER, _T("%SystemRoot%\\explorer.exe"), IDS_CMT_EXPLORER, TRUE);

View File

@@ -123,7 +123,7 @@ typedef struct _USER32_THREAD_DATA
USER32_TRACKINGLIST tracking_info; /* TrackMouseEvent stuff */
} USER32_THREAD_DATA, *PUSER32_THREAD_DATA;
PUSER32_THREAD_DATA User32GetThreadData(VOID);
PUSER32_THREAD_DATA User32GetThreadData();
/* FIXME: Belongs to some header. */
BOOL WINAPI GdiDllInitialize(HANDLE, DWORD, LPVOID);

View File

@@ -250,9 +250,7 @@ WdmAudGetCapabilitiesByLegacy(
}
MMRESULT
WdmAudOpenSoundDeviceByLegacy(
IN PSOUND_DEVICE SoundDevice,
OUT PVOID *Handle)
WdmAudOpenSoundDeviceByLegacy()
{
/* Only open this if it's not already open */
if ( KernelHandle == INVALID_HANDLE_VALUE )

View File

@@ -15,16 +15,19 @@
#include <debug.h>
BOOL
WdmAudInitUserModeMixer(VOID);
WdmAudInitUserModeMixer();
ULONG
WdmAudGetWaveOutCount(VOID);
WdmAudGetWaveOutCount();
ULONG
WdmAudGetWaveInCount(VOID);
WdmAudGetWaveInCount();
ULONG
WdmAudGetMixerCount(VOID);
WdmAudGetMixerCount();
MMRESULT
WdmAudOpenSoundDeviceByLegacy();
MMRESULT
WdmAudGetNumWdmDevsByMMixer(
@@ -147,12 +150,12 @@ WdmAudCommitWaveBufferByMMixer(
IN LPOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine);
MMRESULT
WdmAudCleanupByMMixer(VOID);
WdmAudCleanupByMMixer();
/* legacy.c */
MMRESULT
WdmAudCleanupByLegacy(VOID);
WdmAudCleanupByLegacy();
MMRESULT
WdmAudGetCapabilitiesByLegacy(
@@ -162,10 +165,7 @@ WdmAudGetCapabilitiesByLegacy(
IN DWORD CapabilitiesSize);
MMRESULT
WdmAudOpenSoundDeviceByLegacy(
IN PSOUND_DEVICE SoundDevice,
OUT PVOID *Handle
);
WdmAudOpenSoundDeviceByLegacy();
MMRESULT
WdmAudCloseSoundDeviceByLegacy(

View File

@@ -858,14 +858,14 @@ WsAsyncGlobalInitialize(VOID);
FORCEINLINE
PWSPROCESS
WsGetProcess(VOID)
WsGetProcess()
{
return CurrentWsProcess;
}
FORCEINLINE
DWORD
WsQuickProlog(VOID)
WsQuickProlog()
{
/* Try to see if we're initialized. If not, do the full prolog */
return WsGetProcess() ? ERROR_SUCCESS : WsSlowProlog();

View File

@@ -402,28 +402,6 @@ IoCompletion (
/* sanity check */
ASSERT(Header);
/* iterate through all stream headers and collect size */
do
{
if (Context->Function == IOCTL_KS_READ_STREAM)
{
/* length is stored in DataUsed */
Length += Header->DataUsed;
}
else
{
/* length stored in frameextend */
Length += Header->FrameExtent;
}
/* subtract size */
Context->Length -= Header->Size;
/* move to next stream header */
Header = (PKSSTREAM_HEADER)((ULONG_PTR)Header + Header->Size);
}while(Context->Length);
/* time to free all allocated mdls */
Mdl = Irp->MdlAddress;
@@ -454,12 +432,7 @@ IoCompletion (
DPRINT("IoCompletion Irp %p IoStatus %lx Information %lx Length %lu\n", Irp, Irp->IoStatus.Status, Irp->IoStatus.Information, Length);
if (Irp->IoStatus.Status == STATUS_SUCCESS)
{
/* store the length */
Irp->IoStatus.Information = Length;
}
else
if (!NT_SUCCESS(Irp->IoStatus.Status))
{
/* failed */
Irp->IoStatus.Information = 0;
@@ -471,7 +444,6 @@ IoCompletion (
return STATUS_SUCCESS;
}
NTSTATUS
NTAPI
WdmAudReadWrite(

View File

@@ -22,7 +22,7 @@ typedef ULONG CSR_API_NUMBER;
#define MAKE_CSR_API(Number, Server) \
((Server) << 16) + Number
#define CSR_CSRSS_SECTION_SIZE (65536)
#define CSR_CSRSS_SECTION_SIZE (131072) //(65536)
typedef VOID (CALLBACK *PCONTROLDISPATCHER)(DWORD);

View File

@@ -18,13 +18,13 @@
#define __VERSION_H
#define KERNEL_VERSION_MAJOR 0
#define KERNEL_VERSION_MINOR 4
#define KERNEL_VERSION_PATCH_LEVEL 0
#define KERNEL_VERSION_MINOR 3
#define KERNEL_VERSION_PATCH_LEVEL 13
#define COPYRIGHT_YEAR "2011"
/* KERNEL_VERSION_BUILD_TYPE is L"SVN", L"RC1", L"RC2" or L"" (for the release) */
#define KERNEL_VERSION_BUILD_TYPE L"SVN"
#define KERNEL_VERSION_BUILD_TYPE L""
#endif

View File

@@ -16,13 +16,6 @@
#ifdef _UNICODE
# define streamout wstreamout
# define format_float format_floatw
# define _flsbuf _flswbuf
int __cdecl _flswbuf(int ch, FILE *stream);
#endif
#ifdef _LIBCNT_
# undef _flsbuf
# define _flsbuf(chr, stream) _TEOF
#endif
#define MB_CUR_MAX 10
@@ -234,25 +227,19 @@ static
int
streamout_char(FILE *stream, int chr)
{
#if defined(_USER32_WSPRINTF) || defined(_LIBCNT_)
/* Check if the buffer is full */
if (stream->_cnt < sizeof(TCHAR))
{
#ifdef _USER32_WSPRINTF
return _TEOF;
#else
/* Strings are done now */
if (stream->_flag & _IOSTRG) return _TEOF;
/* Flush buffer for files */
return _flsbuf(chr, stream) != _TEOF;
#endif
}
return 0;
*(TCHAR*)stream->_ptr = chr;
stream->_ptr += sizeof(TCHAR);
stream->_cnt -= sizeof(TCHAR);
return 1;
#else
return _fputtc((TCHAR)chr, stream) != _TEOF;
#endif
}
static

View File

@@ -2175,12 +2175,33 @@ size_t CDECL fwrite(const void *ptr, size_t size, size_t nmemb, FILE* file)
/*********************************************************************
* fputwc (MSVCRT.@)
*/
wint_t CDECL fputwc(wint_t wc, FILE* file)
wint_t CDECL fputwc(wchar_t c, FILE* stream)
{
wchar_t mwc=wc;
if (fwrite( &mwc, sizeof(mwc), 1, file) != 1)
return WEOF;
return wc;
/* If this is a real file stream (and not some temporary one for
sprintf-like functions), check whether it is opened in text mode.
In this case, we have to perform an implicit conversion to ANSI. */
if (!(stream->_flag & _IOSTRG) && fdesc[stream->_file].wxflag & WX_TEXT)
{
/* Convert to multibyte in text mode */
char mbc[MB_LEN_MAX];
int mb_return;
mb_return = wctomb(mbc, c);
if(mb_return == -1)
return WEOF;
/* Output all characters */
if (fwrite(mbc, mb_return, 1, stream) != 1)
return WEOF;
}
else
{
if (fwrite(&c, sizeof(c), 1, stream) != 1)
return WEOF;
}
return c;
}
/*********************************************************************

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -708,7 +708,6 @@ KeyboardThreadMain(PVOID StartContext)
if (ModifierState == 0)
{
UserEnterExclusive();
if (fsModifiers == MOD_WIN)
IntKeyboardSendWinKeyMsg();
else if (fsModifiers == MOD_ALT)
@@ -724,7 +723,6 @@ KeyboardThreadMain(PVOID StartContext)
}
co_IntKeyboardSendAltKeyMsg();
}
UserLeave();
continue;
}
@@ -733,8 +731,6 @@ KeyboardThreadMain(PVOID StartContext)
}
}
UserEnterExclusive();
for (;NumKeys;memcpy(&KeyInput, &NextKeyInput, sizeof(KeyInput)),
NumKeys--)
{
@@ -864,8 +860,6 @@ KeyboardThreadMain(PVOID StartContext)
*/
co_MsqPostKeyboardMessage(msg.message,msg.wParam,msg.lParam);
}
UserLeave();
}
KeyboardEscape:
@@ -1249,11 +1243,17 @@ IntKeyboardInput(KEYBDINPUT *ki)
LARGE_INTEGER LargeTickCount;
KBDLLHOOKSTRUCT KbdHookData;
WORD flags, wVkStripped, wVkL, wVkR, wVk = ki->wVk, vk_hook = ki->wVk;
BOOLEAN Entered = FALSE;
Msg.lParam = 0;
// Condition may arise when calling MsqPostMessage and waiting for an event.
ASSERT (UserIsEntered());
// Condition may arise when calling MsqPostMessage and waiting for an event.
if (!UserIsEntered())
{
// Fixme: Not sure ATM if this thread is locked.
UserEnterExclusive();
Entered = TRUE;
}
wVk = LOBYTE(wVk);
Msg.wParam = wVk;
@@ -1352,7 +1352,7 @@ IntKeyboardInput(KEYBDINPUT *ki)
{
DPRINT1("Kbd msg %d wParam %d lParam 0x%08x dropped by WH_KEYBOARD_LL hook\n",
Msg.message, vk_hook, Msg.lParam);
if (Entered) UserLeave();
return FALSE;
}
@@ -1380,7 +1380,7 @@ IntKeyboardInput(KEYBDINPUT *ki)
if (FocusMessageQueue == NULL)
{
DPRINT("No focus message queue\n");
if (Entered) UserLeave();
return FALSE;
}
@@ -1401,6 +1401,8 @@ IntKeyboardInput(KEYBDINPUT *ki)
DPRINT("Invalid focus window handle\n");
}
if (Entered) UserLeave();
return TRUE;
}

View File

@@ -1447,7 +1447,7 @@ co_IntSendMessageWithCallBack( HWND hWnd,
if(!(Message = ExAllocatePoolWithTag(NonPagedPool, sizeof(USER_SENT_MESSAGE), TAG_USRMSG)))
{
DPRINT1("MsqSendMessage(): Not enough memory to allocate a message");
RETURN( FALSE);
return STATUS_INSUFFICIENT_RESOURCES;
}
Message->Msg.hwnd = hWnd;
@@ -1459,21 +1459,19 @@ co_IntSendMessageWithCallBack( HWND hWnd,
Message->lResult = 0;
Message->QS_Flags = 0;
Message->SenderQueue = NULL; // mjmartin, you are right! This is null.
IntReferenceMessageQueue(Win32Thread->MessageQueue);
Message->CallBackSenderQueue = Win32Thread->MessageQueue;
IntReferenceMessageQueue(Window->head.pti->MessageQueue);
Message->CompletionCallback = CompletionCallback;
Message->CompletionCallbackContext = CompletionCallbackContext;
Message->HookMessage = MSQ_NORMAL; // | MSQ_SENTNOWAIT
Message->HookMessage = MSQ_NORMAL | MSQ_SENTNOWAIT;
Message->HasPackedLParam = (lParamBufferSize > 0);
Message->DispatchingListEntry.Flink = NULL;
Message->QS_Flags = QS_SENDMESSAGE;
IntReferenceMessageQueue(Window->head.pti->MessageQueue);
MsqWakeQueue(Window->head.pti->MessageQueue, QS_SENDMESSAGE, FALSE);
InsertTailList(&Window->head.pti->MessageQueue->SentMessagesListHead, &Message->ListEntry);
//IntDereferenceMessageQueue(Window->head.pti->MessageQueue);
IntDereferenceMessageQueue(Window->head.pti->MessageQueue);
RETURN(TRUE);

View File

@@ -279,12 +279,18 @@ co_MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
MSG Msg;
LARGE_INTEGER LargeTickCount;
KBDLLHOOKSTRUCT KbdHookData;
BOOLEAN Entered = FALSE;
DPRINT("MsqPostKeyboardMessage(uMsg 0x%x, wParam 0x%x, lParam 0x%x)\n",
uMsg, wParam, lParam);
// Condition may arise when calling MsqPostMessage and waiting for an event.
ASSERT(UserIsEntered());
if (!UserIsEntered())
{
// Fixme: Not sure ATM if this thread is locked.
UserEnterExclusive();
Entered = TRUE;
}
FocusMessageQueue = IntGetFocusMessageQueue();
@@ -314,12 +320,14 @@ co_MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
DPRINT1("Kbd msg %d wParam %d lParam 0x%08x dropped by WH_KEYBOARD_LL hook\n",
Msg.message, Msg.wParam, Msg.lParam);
if (Entered) UserLeave();
return;
}
if (FocusMessageQueue == NULL)
{
DPRINT("No focus message queue\n");
if (Entered) UserLeave();
return;
}
@@ -338,6 +346,7 @@ co_MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
DPRINT("Invalid focus window handle\n");
}
if (Entered) UserLeave();
return;
}
@@ -406,42 +415,6 @@ MsqDestroyMessage(PUSER_MESSAGE Message)
ExFreeToPagedLookasideList(&MessageLookasideList, Message);
}
VOID FASTCALL
MsqDestroySentMessage(PUSER_MESSAGE_QUEUE MessageQueue, PUSER_SENT_MESSAGE SentMessage)
{
/* remove the message from the dispatching list if needed */
if (SentMessage->DispatchingListEntry.Flink != NULL)
{
RemoveEntryList(&SentMessage->DispatchingListEntry);
}
/* wake the sender's thread */
if (SentMessage->CompletionEvent != NULL)
{
KeSetEvent(SentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE);
}
/* dereference message queues */
IntDereferenceMessageQueue(MessageQueue);
if (SentMessage->SenderQueue)
{
IntDereferenceMessageQueue(SentMessage->SenderQueue);
}
if (SentMessage->CallBackSenderQueue)
{
IntDereferenceMessageQueue(SentMessage->CallBackSenderQueue);
}
/* free lParam if needed */
if (SentMessage->HasPackedLParam == TRUE && SentMessage->Msg.lParam)
{
ExFreePool((PVOID)SentMessage->Msg.lParam);
}
/* free the message */
ExFreePoolWithTag(SentMessage, TAG_USRMSG);
}
BOOLEAN FASTCALL
co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue)
{
@@ -505,10 +478,13 @@ co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue)
RemoveEntryList(&Message->ListEntry);
/* remove the message from the dispatching list if needed, so lock the sender's message queue */
if (Message->DispatchingListEntry.Flink != NULL)
if (!(Message->HookMessage & MSQ_SENTNOWAIT))
{
RemoveEntryList(&Message->DispatchingListEntry);
Message->DispatchingListEntry.Flink = NULL;
if (Message->DispatchingListEntry.Flink != NULL)
{
/* only remove it from the dispatching list if not already removed by a timeout */
RemoveEntryList(&Message->DispatchingListEntry);
}
}
/* still keep the sender's message queue locked, so the sender can't exit the
MsqSendMessage() function (if timed out) */
@@ -524,11 +500,16 @@ co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue)
*Message->Result = Result;
}
if (Message->HasPackedLParam == TRUE)
{
if (Message->Msg.lParam)
ExFreePool((PVOID)Message->Msg.lParam);
}
/* Notify the sender. */
if (Message->CompletionEvent != NULL)
{
KeSetEvent(Message->CompletionEvent, IO_NO_INCREMENT, FALSE);
Message->CompletionEvent = NULL; /* prevent MsqDestroySentMessage from setting this event again */
}
/* Call the callback if the message was sent with SendMessageCallback */
@@ -541,7 +522,15 @@ co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue)
Result);
}
MsqDestroySentMessage(MessageQueue, Message);
/* Only if it is not a no wait message */
if (!(Message->HookMessage & MSQ_SENTNOWAIT))
{
IntDereferenceMessageQueue(Message->SenderQueue);
IntDereferenceMessageQueue(MessageQueue);
}
/* free the message */
ExFreePoolWithTag(Message, TAG_USRMSG);
/* do not hangup on the user if this is reentering */
if (!SaveMsg) pti->pcti->CTI_flags &= ~CTI_INSENDMESSAGE;
@@ -571,14 +560,16 @@ MsqRemoveWindowMessagesFromQueue(PVOID pWindow)
{
PostedMessage = CONTAINING_RECORD(CurrentEntry, USER_MESSAGE,
ListEntry);
/* set CurrentEntry to next before destroying message */
CurrentEntry = CurrentEntry->Flink;
if (PostedMessage->Msg.hwnd == Window->head.h)
{
RemoveEntryList(&PostedMessage->ListEntry);
ClearMsgBitsMask(MessageQueue, PostedMessage->QS_Flags);
MsqDestroyMessage(PostedMessage);
CurrentEntry = MessageQueue->PostedMessagesListHead.Flink;
}
else
{
CurrentEntry = CurrentEntry->Flink;
}
}
@@ -589,9 +580,6 @@ MsqRemoveWindowMessagesFromQueue(PVOID pWindow)
{
SentMessage = CONTAINING_RECORD(CurrentEntry, USER_SENT_MESSAGE,
ListEntry);
/* set CurrentEntry to next before destroying message */
CurrentEntry = CurrentEntry->Flink;
if(SentMessage->Msg.hwnd == Window->head.h)
{
DPRINT("Notify the sender and remove a message from the queue that had not been dispatched\n");
@@ -599,7 +587,41 @@ MsqRemoveWindowMessagesFromQueue(PVOID pWindow)
RemoveEntryList(&SentMessage->ListEntry);
ClearMsgBitsMask(MessageQueue, SentMessage->QS_Flags);
MsqDestroySentMessage(MessageQueue, SentMessage);
/* remove the message from the dispatching list if neede */
if ((!(SentMessage->HookMessage & MSQ_SENTNOWAIT))
&& (SentMessage->DispatchingListEntry.Flink != NULL))
{
RemoveEntryList(&SentMessage->DispatchingListEntry);
}
/* wake the sender's thread */
if (SentMessage->CompletionEvent != NULL)
{
KeSetEvent(SentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE);
}
if (SentMessage->HasPackedLParam == TRUE)
{
if (SentMessage->Msg.lParam)
ExFreePool((PVOID)SentMessage->Msg.lParam);
}
/* Only if it is not a no wait message */
if (!(SentMessage->HookMessage & MSQ_SENTNOWAIT))
{
/* dereference our and the sender's message queue */
IntDereferenceMessageQueue(MessageQueue);
IntDereferenceMessageQueue(SentMessage->SenderQueue);
}
/* free the message */
ExFreePoolWithTag(SentMessage, TAG_USRMSG);
CurrentEntry = MessageQueue->SentMessagesListHead.Flink;
}
else
{
CurrentEntry = CurrentEntry->Flink;
}
}
}
@@ -633,7 +655,7 @@ co_MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
Timeout.QuadPart = (LONGLONG) uTimeout * (LONGLONG) -10000;
/* FIXME - increase reference counter of sender's message queue here - isn't it done? */
/* FIXME - increase reference counter of sender's message queue here */
Message->Msg.hwnd = Wnd;
Message->Msg.message = Msg;
@@ -643,9 +665,9 @@ co_MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
Message->Result = &Result;
Message->lResult = 0;
Message->QS_Flags = 0;
IntReferenceMessageQueue(ThreadQueue);
Message->SenderQueue = ThreadQueue;
Message->CallBackSenderQueue = NULL;
IntReferenceMessageQueue(ThreadQueue);
Message->CompletionCallback = NULL;
Message->CompletionCallbackContext = 0;
Message->HookMessage = HookMessage;
@@ -1414,7 +1436,35 @@ MsqCleanupMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
DPRINT("Notify the sender and remove a message from the queue that had not been dispatched\n");
MsqDestroySentMessage(MessageQueue, CurrentSentMessage);
/* remove the message from the dispatching list if needed */
if ((!(CurrentSentMessage->HookMessage & MSQ_SENTNOWAIT))
&& (CurrentSentMessage->DispatchingListEntry.Flink != NULL))
{
RemoveEntryList(&CurrentSentMessage->DispatchingListEntry);
}
/* wake the sender's thread */
if (CurrentSentMessage->CompletionEvent != NULL)
{
KeSetEvent(CurrentSentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE);
}
if (CurrentSentMessage->HasPackedLParam == TRUE)
{
if (CurrentSentMessage->Msg.lParam)
ExFreePool((PVOID)CurrentSentMessage->Msg.lParam);
}
/* Only if it is not a no wait message */
if (!(CurrentSentMessage->HookMessage & MSQ_SENTNOWAIT))
{
/* dereference our and the sender's message queue */
IntDereferenceMessageQueue(MessageQueue);
IntDereferenceMessageQueue(CurrentSentMessage->SenderQueue);
}
/* free the message */
ExFreePool(CurrentSentMessage);
}
/* notify senders of dispatching messages. This needs to be cleaned up if e.g.
@@ -1425,9 +1475,36 @@ MsqCleanupMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
CurrentSentMessage = CONTAINING_RECORD(CurrentEntry, USER_SENT_MESSAGE,
ListEntry);
/* remove the message from the dispatching list */
if(CurrentSentMessage->DispatchingListEntry.Flink != NULL)
{
RemoveEntryList(&CurrentSentMessage->DispatchingListEntry);
}
DPRINT("Notify the sender, the thread has been terminated while dispatching a message!\n");
MsqDestroySentMessage(MessageQueue, CurrentSentMessage);
/* wake the sender's thread */
if (CurrentSentMessage->CompletionEvent != NULL)
{
KeSetEvent(CurrentSentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE);
}
if (CurrentSentMessage->HasPackedLParam == TRUE)
{
if (CurrentSentMessage->Msg.lParam)
ExFreePool((PVOID)CurrentSentMessage->Msg.lParam);
}
/* Only if it is not a no wait message */
if (!(CurrentSentMessage->HookMessage & MSQ_SENTNOWAIT))
{
/* dereference our and the sender's message queue */
IntDereferenceMessageQueue(MessageQueue);
IntDereferenceMessageQueue(CurrentSentMessage->SenderQueue);
}
/* free the message */
ExFreePool(CurrentSentMessage);
}
/* tell other threads not to bother returning any info to us */
@@ -1438,7 +1515,6 @@ MsqCleanupMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
DispatchingListEntry);
CurrentSentMessage->CompletionEvent = NULL;
CurrentSentMessage->Result = NULL;
CurrentSentMessage->DispatchingListEntry.Flink = NULL; // yeah!
/* do NOT dereference our message queue as it might get attempted to be
locked later */