13 years agoCreate a branch for network fixes.
Art Yerkes [Fri, 1 Aug 2008 11:32:26 +0000 (11:32 +0000)]
Create a branch for network fixes.

svn path=/branches/aicom-network-fixes/; revision=34994

13 years agoLars Martin Hambro <lars_martin4 AT hotmail DOT com>
Matthias Kupfer [Fri, 1 Aug 2008 10:17:41 +0000 (10:17 +0000)]
Lars Martin Hambro <lars_martin4 AT hotmail DOT com>
- Norwegian translation of magnify and downloader added.
- Fixed resource file (we request patches, not single changed files)
- See issue #3504 for more information.

svn path=/trunk/; revision=34993

13 years agoUpdated French translation for shell32. Also fixed typo, even if I thought I already...
Pierre Schweitzer [Fri, 1 Aug 2008 09:14:56 +0000 (09:14 +0000)]
Updated French translation for shell32. Also fixed typo, even if I thought I already did it!?

svn path=/trunk/; revision=34991

13 years ago- Preliminary implementation of SetWinEventHook and UnhookWinEvent.
James Tabor [Thu, 31 Jul 2008 23:48:35 +0000 (23:48 +0000)]
- Preliminary implementation of SetWinEventHook and UnhookWinEvent.
- Only wine cross test uses this and testing is not stable.
- Patches are welcome but all code is subject to change.
- All Hook code should be ready by Aug 4th.

svn path=/trunk/; revision=34988

13 years ago- Support relative callback proc with module base.
James Tabor [Thu, 31 Jul 2008 22:48:59 +0000 (22:48 +0000)]
- Support relative callback proc with module base.

svn path=/trunk/; revision=34985

13 years agoFix handle leaks in RtlCreateUserThread and SmExecPgm.
Jeffrey Morlan [Thu, 31 Jul 2008 21:33:17 +0000 (21:33 +0000)]
Fix handle leaks in RtlCreateUserThread and SmExecPgm.

svn path=/trunk/; revision=34984

13 years agoMario Kacmar <kario AT szm DOT sk>
Matthias Kupfer [Thu, 31 Jul 2008 19:53:49 +0000 (19:53 +0000)]
Mario Kacmar <kario AT szm DOT sk>
- Key remapping for qwertz applied.

svn path=/trunk/; revision=34983

13 years agoIn exit and _cexit, call atexit routines. (Bug 3432_)
Jeffrey Morlan [Thu, 31 Jul 2008 17:46:50 +0000 (17:46 +0000)]
In exit and _cexit, call atexit routines. (Bug 3432_)

svn path=/trunk/; revision=34980

13 years ago- Change an infinite loop to an assert to simplify debugging
Stefan Ginsberg [Thu, 31 Jul 2008 14:25:35 +0000 (14:25 +0000)]
- Change an infinite loop to an assert to simplify debugging

svn path=/trunk/; revision=34979

13 years ago- Fix ARM NTOS brekage (and amd64/ppc):
ReactOS Portable Systems Group [Thu, 31 Jul 2008 07:31:55 +0000 (07:31 +0000)]
- Fix ARM NTOS brekage (and amd64/ppc):
  - Only build kd/i386 on i386 builds since this code is x86-32 centric.
  - Only call KdpEnableSafeMem on i386 builds, since the code uses x86-32 centric defines.

svn path=/trunk/; revision=34977

13 years agommcreatevirtualmapping internal should accept process as input parameter, not assume...
ReactOS Portable Systems Group [Thu, 31 Jul 2008 07:09:28 +0000 (07:09 +0000)]
mmcreatevirtualmapping internal should accept process as input parameter, not assume null.

implement a broken version of mmcreateprocessaddressspace.

commit current checkpoint of arm mmu manager virtual mapping rewrite to sync with i386 code. the kernel part works fine and the kernel boots as far as it did before, but the code is still ugly.

svn path=/trunk/; revision=34976

13 years agodont include i386 headers in arm mmu manager headers.
ReactOS Portable Systems Group [Thu, 31 Jul 2008 07:07:00 +0000 (07:07 +0000)]
dont include i386 headers in arm mmu manager headers.

svn path=/trunk/; revision=34975

13 years agoimplement kiuserinitializeapc, and begin writing test code for kiswapprocess.
ReactOS Portable Systems Group [Thu, 31 Jul 2008 07:06:19 +0000 (07:06 +0000)]
implement kiuserinitializeapc, and begin writing test code for kiswapprocess.

svn path=/trunk/; revision=34974

13 years agofix formatting of i386 mmu code.
ReactOS Portable Systems Group [Thu, 31 Jul 2008 07:04:58 +0000 (07:04 +0000)]
fix formatting of i386 mmu code.

svn path=/trunk/; revision=34973

13 years agoPatch by Gregor Schneider a.k.a DosX
Matthias Kupfer [Wed, 30 Jul 2008 21:16:03 +0000 (21:16 +0000)]
Patch by Gregor Schneider a.k.a DosX
- use line breaks in debug output

svn path=/trunk/; revision=34966

13 years ago- center window only once
Matthias Kupfer [Wed, 30 Jul 2008 18:54:05 +0000 (18:54 +0000)]
- center window only once
- get path from executable module instead of current directory

svn path=/trunk/; revision=34964

13 years ago- don't display network propery dialog since it is not yet implemented
Johannes Anderwald [Wed, 30 Jul 2008 16:55:45 +0000 (16:55 +0000)]
- don't display network propery dialog since it is not yet implemented

svn path=/trunk/; revision=34963

13 years agouniform distribution of memory progress bars
Matthias Kupfer [Wed, 30 Jul 2008 15:12:09 +0000 (15:12 +0000)]
uniform distribution of memory progress bars

svn path=/trunk/; revision=34962

13 years agokernel32: Don't enter the ConsoleLock if it has already been deleted by DllMain....
Jeffrey Morlan [Wed, 30 Jul 2008 15:00:57 +0000 (15:00 +0000)]
kernel32: Don't enter the ConsoleLock if it has already been deleted by DllMain. Patch by hto (hto at dev dot null) (Bug 2308)

svn path=/trunk/; revision=34961

13 years agoRemove all translations for the "Paged Memory", "Nonpaged Memory" and "Free Memory...
Colin Finck [Wed, 30 Jul 2008 14:15:41 +0000 (14:15 +0000)]
Remove all translations for the "Paged Memory", "Nonpaged Memory" and "Free Memory" progress bars.
This is debug stuff, which should have never been translated. As the translated strings are also sometimes longer than the english ones, they led to unnecessary problems like text overlapping.

svn path=/trunk/; revision=34960

13 years ago- Fix Irp flags assignment in case of an IoAllocateIrp call with ChargeQuota set...
Aleksey Bragin [Wed, 30 Jul 2008 13:24:05 +0000 (13:24 +0000)]
- Fix Irp flags assignment in case of an IoAllocateIrp call with ChargeQuota set to TRUE. Reduces number of kmtest failures by 1.

svn path=/trunk/; revision=34959

13 years ago- dont double free an irp
Johannes Anderwald [Wed, 30 Jul 2008 13:13:52 +0000 (13:13 +0000)]
- dont double free an irp
- patch by bugboy
- bug 3530

svn path=/trunk/; revision=34958

13 years ago- fix a bug which made the label display 2x times the drive letter
Johannes Anderwald [Wed, 30 Jul 2008 13:09:49 +0000 (13:09 +0000)]
- fix a bug which made the label display 2x times the drive letter

svn path=/trunk/; revision=34957

13 years ago- fix wrong "ss" in German (Germany) ressource
Matthias Kupfer [Wed, 30 Jul 2008 12:34:00 +0000 (12:34 +0000)]
- fix wrong "ss" in German (Germany) ressource
- Swiss German version need own ressource file

svn path=/trunk/; revision=34956

13 years ago- SVN maintenance.
Aleksey Bragin [Wed, 30 Jul 2008 12:22:10 +0000 (12:22 +0000)]
- SVN maintenance.

svn path=/trunk/; revision=34955

13 years agoMario Kacmar <kario AT szm DOT sk>
Matthias Kupfer [Wed, 30 Jul 2008 12:14:30 +0000 (12:14 +0000)]
Mario Kacmar <kario AT szm DOT sk>
- Updated Slovak translation for eventvwr, win32 and new Slovak translation for regedit added.
- See issue #33610 for more details.

svn path=/trunk/; revision=34954

13 years ago- By default enable all tests. 0 failures in Windows XP SP3.
Aleksey Bragin [Wed, 30 Jul 2008 11:15:48 +0000 (11:15 +0000)]
- By default enable all tests. 0 failures in Windows XP SP3.

svn path=/trunk/; revision=34953

13 years agoDaniel Verkamp (
Colin Finck [Wed, 30 Jul 2008 11:12:25 +0000 (11:12 +0000)]
Daniel Verkamp (
- Sync "list.h" to Wine to fix a pointer to integer cast warning on 64-bit hosts

See issue #3579 for more details.

svn path=/trunk/; revision=34952

13 years ago- Add unloading ability.
Aleksey Bragin [Wed, 30 Jul 2008 11:11:25 +0000 (11:11 +0000)]
- Add unloading ability.
- Don't forget to wrap any testing module into StartTest / FinishTest.

svn path=/trunk/; revision=34951

13 years agoMario Kacmar <kario AT szm DOT sk>
Matthias Kupfer [Wed, 30 Jul 2008 10:18:34 +0000 (10:18 +0000)]
Mario Kacmar <kario AT szm DOT sk>
- Slovak, Polish and Ukrainian translations of packmgr updated/fixed.
- See #3601 for more details.

svn path=/trunk/; revision=34949

13 years agoRemove a change from our diff file for comctl32, which is in Wine HEAD as well.
Colin Finck [Wed, 30 Jul 2008 10:11:09 +0000 (10:11 +0000)]
Remove a change from our diff file for comctl32, which is in Wine HEAD as well.
See issue #2843 for more details.

svn path=/trunk/; revision=34948

13 years ago- Add IRP tests based on a Alexander Morozov's patch to Wine ("[try 3] Add tests...
Aleksey Bragin [Wed, 30 Jul 2008 09:23:45 +0000 (09:23 +0000)]
- Add IRP tests based on a Alexander Morozov's patch to Wine ("[try 3] Add tests for IoInitializeIrp and IoAllocateIrp").

svn path=/trunk/; revision=34947

13 years agoRevert r34344, the mess with GetEnvironmentStrings/GetEnvironmentStringsA is expected.
Hervé Poussineau [Wed, 30 Jul 2008 08:02:45 +0000 (08:02 +0000)]
Revert r34344, the mess with GetEnvironmentStrings/GetEnvironmentStringsA is expected.

svn path=/trunk/; revision=34946

13 years agounix define doesn't mean we're on a x86 compatible machine
Hervé Poussineau [Wed, 30 Jul 2008 07:29:55 +0000 (07:29 +0000)]
unix define doesn't mean we're on a x86 compatible machine

svn path=/trunk/; revision=34945

13 years agoFix GetEnvironmentStrings/GetEnvironmentStringsA mess
Hervé Poussineau [Wed, 30 Jul 2008 07:27:33 +0000 (07:27 +0000)]
Fix GetEnvironmentStrings/GetEnvironmentStringsA mess

svn path=/trunk/; revision=34944

13 years agoPatch by Cameron Gutman (aicommander (at) gmail (dot) com)
Art Yerkes [Wed, 30 Jul 2008 06:05:20 +0000 (06:05 +0000)]
Patch by Cameron Gutman (aicommander (at) gmail (dot) com)
- Remove a hack related to cancellation
- Make sure not to pass on a bad IRP on failure (in tdi)
- Remember connect irp
* Note: commit notes are arty's in this case

svn path=/trunk/; revision=34943

13 years agoPatch by Cameron Gutman (aicommander (at) gmail (dot) com)
Art Yerkes [Tue, 29 Jul 2008 21:52:09 +0000 (21:52 +0000)]
Patch by Cameron Gutman (aicommander (at) gmail (dot) com)
- Remove a hack from DispTdiSendDatagram
- Fix a couple of bugs that resulted in clearing the wrong request

svn path=/trunk/; revision=34938

13 years ago- fix an obvious bug (introduced by me)
Johannes Anderwald [Tue, 29 Jul 2008 18:54:28 +0000 (18:54 +0000)]
- fix an obvious bug (introduced by me)

See issue #3064 for more details.

svn path=/trunk/; revision=34936

13 years ago- Add Event handle type.
James Tabor [Tue, 29 Jul 2008 18:53:46 +0000 (18:53 +0000)]
- Add Event handle type.

svn path=/trunk/; revision=34935

13 years ago- Patch by Jeffrey Morlan: Fix bounds checking and change NtGdiDoPalette to use a...
James Tabor [Tue, 29 Jul 2008 18:11:18 +0000 (18:11 +0000)]
- Patch by Jeffrey Morlan: Fix bounds checking and change NtGdiDoPalette to use a temporary kmode buffer. See Bug 3383.

svn path=/trunk/; revision=34934

13 years ago- register network neighbourhood as a desktop namespace extension
Johannes Anderwald [Tue, 29 Jul 2008 18:03:23 +0000 (18:03 +0000)]
- register network neighbourhood as a desktop namespace extension

svn path=/trunk/; revision=34933

13 years ago- update polish translation by Olaf Siejka (Caemyr)
Johannes Anderwald [Tue, 29 Jul 2008 17:49:32 +0000 (17:49 +0000)]
- update polish translation by Olaf Siejka (Caemyr)

svn path=/trunk/; revision=34932

13 years ago- register shellink property sheet handler
Johannes Anderwald [Tue, 29 Jul 2008 17:42:35 +0000 (17:42 +0000)]
- register shellink property sheet handler
- should make shellink property page visible again

svn path=/trunk/; revision=34931

13 years ago- fix titles in folder property dialog
Johannes Anderwald [Tue, 29 Jul 2008 17:19:16 +0000 (17:19 +0000)]
- fix titles in folder property dialog
- translate title to native language when available

svn path=/trunk/; revision=34930

13 years ago- implement folder property dialog
Johannes Anderwald [Tue, 29 Jul 2008 16:52:39 +0000 (16:52 +0000)]
- implement folder property dialog
- sync chinese resource files

svn path=/trunk/; revision=34929

13 years ago- Remove unused hVScrollBar and hHScrollBar members in GUI_CONSOLE_DATA.
Jeffrey Morlan [Tue, 29 Jul 2008 16:10:38 +0000 (16:10 +0000)]
- Remove unused hVScrollBar and hHScrollBar members in GUI_CONSOLE_DATA.
- Remove ScreenBufferSize member from GUI_CONSOLE_DATA; when building the structure for console.dll, send the actual screen buffer size instead.
- GuiConsolePaint, GuiIntDrawRegion: Adjust coordinates based on buffer's scroll position.
- GuiConsolePaint: Use ConioCoordToPointer when finding attribute at top-left.
- GuiConsoleHandlePaint: Don't leak the DC when the paint rectangle is empty.
- GuiConsoleHandleScroll: Actually update the buffer's scroll position, not just the scrollbar's. Allow scrolling either horizontally or vertically. Fix typo in SB_THUMBTRACK case. Don't rely on GetScrollInfo for bound checking - any thread can sabotage the scrollbar ranges.
- CsrGetScreenBufferInfo: Return the visible area in srWindow.

svn path=/trunk/; revision=34928

13 years agoOdbccp32 dll doesn't have a DllMain function
Christoph von Wittich [Tue, 29 Jul 2008 07:30:49 +0000 (07:30 +0000)]
Odbccp32 dll doesn't have a DllMain function
reported by hto
See issue #3603 for more details.

svn path=/trunk/; revision=34924

13 years agoNtUserBeginPaint: Taking the bounding box of the update region first and clipping...
Jeffrey Morlan [Tue, 29 Jul 2008 02:08:56 +0000 (02:08 +0000)]
NtUserBeginPaint: Taking the bounding box of the update region first and clipping it to the client area afterwards was making rcPaint contain the entire client area when scrolling. It should be done the other way around: clip to the client area first, then box. Since there is already a clipped update region in the DC, this is easy; just use GdiGetClipBox.

svn path=/trunk/; revision=34923

13 years ago- Added more hook points, WH_FOREGROUNDIDLE and WH_KEYBOARD.
James Tabor [Tue, 29 Jul 2008 00:35:05 +0000 (00:35 +0000)]
- Added more hook points, WH_FOREGROUNDIDLE and WH_KEYBOARD.
- Fixed WH_CALLWNDPROC/RET, now the posted test program works as it should.
- Tested with Opera 9.51, FF, Seamonkey, Abiword, Miranda, Mirc and the rest of our applications.

svn path=/trunk/; revision=34922

13 years agoFix my error not noticing that queued spinlock functions return KIRQL through
Art Yerkes [Mon, 28 Jul 2008 22:33:11 +0000 (22:33 +0000)]
Fix my error not noticing that queued spinlock functions return KIRQL through
the actual function return, not through a parameter.

svn path=/trunk/; revision=34921

13 years ago- Reverse my previous (in retrospect) hack
Art Yerkes [Mon, 28 Jul 2008 22:05:56 +0000 (22:05 +0000)]
- Reverse my previous (in retrospect) hack
- Make MmProbeAndLockPages smart enough to work at DISPATCH_LEVEL
- At Alex' request, remove the stand alone spinlock for the page list, and
  use the queued spinlock in the prcb.

svn path=/trunk/; revision=34920

13 years ago- display volume label for disk drives. If there is no label, load default label
Johannes Anderwald [Mon, 28 Jul 2008 19:47:19 +0000 (19:47 +0000)]
- display volume label for disk drives. If there is no label, load default label

svn path=/trunk/; revision=34915

13 years ago- Don't strictly check NTDDI_VERSION to WINXP or WS03, since in case of e.g. NTDDI_WS...
Aleksey Bragin [Mon, 28 Jul 2008 18:38:11 +0000 (18:38 +0000)]
- Don't strictly check NTDDI_VERSION to WINXP or WS03, since in case of e.g. NTDDI_WS03SP1 the define would work incorrectly (skipping a structure member).

svn path=/trunk/; revision=34914

13 years ago- reenable drive properties dialog
Johannes Anderwald [Mon, 28 Jul 2008 18:23:42 +0000 (18:23 +0000)]
- reenable drive properties dialog

svn path=/trunk/; revision=34913

13 years agoShould fix the release build (sorry).
Art Yerkes [Mon, 28 Jul 2008 18:21:35 +0000 (18:21 +0000)]
Should fix the release build (sorry).

svn path=/trunk/; revision=34912

13 years ago- GuiConsoleInitScrollbar: Hide vertical scrollbar when not needed; use SB_VERT ...
Jeffrey Morlan [Mon, 28 Jul 2008 16:48:04 +0000 (16:48 +0000)]
- GuiConsoleInitScrollbar: Hide vertical scrollbar when not needed; use SB_VERT (not SB_HORZ) to set its information when it is; set sInfo.nPage according to window size in characters; calculate window pixel size, taking scrollbar width/height into account.
- GuiConsoleHandleNcCreate: Remove window sizing (now done in GuiConsoleInitScrollbar)
- GuiApplyUserSettings: Swap transposed min/max in cursor size calculation; don't assume that the physical top of the buffer is the same as the logical top; fix broken code where HAVE_WMEMSET isn't defined (wrong loop counts, Offset wasn't incremented); fix typo in calculating height difference. If either buffer or window size has changed, call GuiConsoleInitScrollbar.

svn path=/trunk/; revision=34911

13 years agoThis is a patch i've been keeping for a while. Yes, it's not "as nt does it",
Art Yerkes [Mon, 28 Jul 2008 14:47:17 +0000 (14:47 +0000)]
This is a patch i've been keeping for a while.  Yes, it's not "as nt does it",
but it solves a practical problem, and isn't particularly invasive (the main
change is the call to KdpEnableSafeMem ... everything else could be macroed
out if desired).

This provides armour for kdbg and gdb that avoid faulting on bad addresses by
implementing a simple poor-man's mmu and letting the debuggers use it.

svn path=/trunk/; revision=34904

13 years ago- Add console version Appwiz. It is not finished, but fully works
Dmitry Chapyshev [Mon, 28 Jul 2008 14:40:32 +0000 (14:40 +0000)]
- Add console version Appwiz. It is not finished, but fully works

svn path=/trunk/; revision=34902

13 years agoDmitry Gorbachev
Aleksey Bragin [Mon, 28 Jul 2008 14:32:50 +0000 (14:32 +0000)]
Dmitry Gorbachev
- PDT of CSRSS has no entry for TCB of the thread, fix this problem.
See issue #3591 for more details.

svn path=/trunk/; revision=34901

13 years agoFix (among other things) failure to boot when a CD is not inserted, caused by
Art Yerkes [Mon, 28 Jul 2008 12:38:47 +0000 (12:38 +0000)]
Fix (among other things) failure to boot when a CD is not inserted, caused by
the new (correct) ASSERT in mutex acquisition in MmProbeAndLockPages, which
was erroneously being called from IoBuildAsynchronousFsdRequest at

The only correct course of action when calling IoBuildAsynchronousFsdRequest
at DISPATCH_LEVEL is to MmBuildMdlForNonPagedPool since the buffer must be
nonpaged (if the IRP completes synchronously, we'll still be at DISPATCH_LEVEL)
This is the case when direct io is done at DISPATCH_LEVEL using

svn path=/trunk/; revision=34899

13 years ago- Silence crt's "wtf".
Aleksey Bragin [Mon, 28 Jul 2008 11:30:08 +0000 (11:30 +0000)]
- Silence crt's "wtf".

svn path=/trunk/; revision=34897

13 years ago- Don't check outside of the array bounds
Ged Murphy [Mon, 28 Jul 2008 08:45:38 +0000 (08:45 +0000)]
- Don't check outside of the array bounds
- Spotted by Marcelo Slomp <mslomp at linuxmail dot org>
See issue #3593 for more details.

svn path=/trunk/; revision=34892

13 years agoReplace '#ifdef __linux__' by '#ifndef WIN32', etc. to fix compilation on Mac OS...
Colin Finck [Mon, 28 Jul 2008 08:32:04 +0000 (08:32 +0000)]
Replace '#ifdef __linux__' by '#ifndef WIN32', etc. to fix compilation on Mac OS X (hint by Alex on ros-dev)

svn path=/trunk/; revision=34891

13 years ago- Don't use .spec file on ARM, it doesn't work.
ReactOS Portable Systems Group [Mon, 28 Jul 2008 03:07:50 +0000 (03:07 +0000)]
- Don't use .spec file on ARM, it doesn't work.
- For the first time, the entire ARM build of ReactOS builds (for the components we've defined)!
- Now the user-mode fun begins.

svn path=/trunk/; revision=34890

13 years ago- Fix build of NTOS and FreeLDR on ARM.
ReactOS Portable Systems Group [Mon, 28 Jul 2008 03:07:03 +0000 (03:07 +0000)]
- Fix build of NTOS and FreeLDR on ARM.

svn path=/trunk/; revision=34889

13 years ago- Fix FreeLDR for ARM build after some header changes that happen in NTOS.
ReactOS Portable Systems Group [Mon, 28 Jul 2008 02:18:43 +0000 (02:18 +0000)]
- Fix FreeLDR for ARM build after some header changes that happen in NTOS.

svn path=/trunk/; revision=34887

13 years ago- Define the "generic" versions of the ARM-specific HAL routines.
ReactOS Portable Systems Group [Mon, 28 Jul 2008 02:15:40 +0000 (02:15 +0000)]
- Define the "generic" versions of the ARM-specific HAL routines.
- Now the generic HAL builds without linker errors.

svn path=/trunk/; revision=34886

13 years ago- Fix the NTOS ARM build after the recent Mm changes.
ReactOS Portable Systems Group [Mon, 28 Jul 2008 02:13:56 +0000 (02:13 +0000)]
- Fix the NTOS ARM build after the recent Mm changes.

svn path=/trunk/; revision=34885

13 years ago- We finally figured out how to build the CRT! It seems on ARM, we have to add __MSVC...
ReactOS Portable Systems Group [Mon, 28 Jul 2008 02:13:39 +0000 (02:13 +0000)]
- We finally figured out how to build the CRT! It seems on ARM, we have to add __MSVCRT__ to all build targets.
- Thanks to the people who worked on the PPC port for making this obvious in the rbuild file :)

svn path=/trunk/; revision=34884

13 years agoNow that MADDRESS_SPACE became nearly an empty structure pointing only at the root...
ReactOS Portable Systems Group [Mon, 28 Jul 2008 01:49:23 +0000 (01:49 +0000)]
Now that MADDRESS_SPACE became nearly an empty structure pointing only at the root, it can completely go away. Now VadRoot really is a MM_AVL_TABLE structure.
The BalancedRoot.u1.Parent now points to what used to be MemoryAreaRoot. This isn't really the most proper fix out there -- the problem is that React starts with an no root, while Windows
starts with an empty balanced root. So for now we keep doing it the React way, which means we have about 10 ugly typecast hacks. On the other hand, we got rid of more than 100 of them.

svn path=/trunk/; revision=34881

13 years agoThe address space creation lock is a guarded mutex, not a pushlock, in NT 5.2. While...
ReactOS Portable Systems Group [Mon, 28 Jul 2008 01:11:19 +0000 (01:11 +0000)]
The address space creation lock is a guarded mutex, not a pushlock, in NT 5.2. While it is commendable to attempt using Vista optimizations (it is a push lock on Vista) in order to speed up
the kernel, it is entirely stupid to do so by completing ignoring the ramifications of this change, and furthermore, to pollute the kernel with typecasts, as well as to introduce non-standard
behavior. Ironically it is ion himself who made this change.

svn path=/trunk/; revision=34879

13 years agoThere is no point in saving the address of the address space lock in the address...
ReactOS Portable Systems Group [Mon, 28 Jul 2008 00:56:39 +0000 (00:56 +0000)]
There is no point in saving the address of the address space lock in the address space structure anymore, since this lock is always the address creation lock of the owner process,
and there's always an owner process now.

svn path=/trunk/; revision=34878

13 years agoLooks like this address space nonsense made even less sense than originally understoo...
ReactOS Portable Systems Group [Mon, 28 Jul 2008 00:43:57 +0000 (00:43 +0000)]
Looks like this address space nonsense made even less sense than originally understood. The kernel address space was something created very early-on, and associated with a global variable
that actually contained the address space itself (so it wasn't part of any process). Its locks however, were associated to the "current process", which, when this function is called, is the
idle process (which later is cloned into the initial system process). Shortly thereafter, the address space of the "current process" (still, at this point, the idle process) was initialized
with the function reserved for real processes (MmInitializeProcessAddressSpace), which among other things, performed a couple of user-mode mappings (which are irrelevant and should not be
part of the system process address space). This created a weird schism: the kernel address space was actually a global variable associated with no process at all, while the kernel process
had its own address space as well (which was not the kernel address space). It's a miracle this didn't screw anything up especially since whether or not the address space has an owner
determined the lowest address (which means that if the kernel process allocated a memory with its *own* address space, the code would think it was a user-mode process).
This patch gets rid of the kernel address space as a static structure, and instead makes it a pointer into the idle/system process' address space. It also gets rid of MmInitializeKernelAddresSpace
and instead makes use of the existing MmInitializeHandBuiltProcess, cleaning up the user-mode allocations previously made. Even though all address spaces now have an owner and are part of a
process, MmGetAddressSpaceOwner will still return NULL for now, to remain backwards compatible with legacy code.

svn path=/trunk/; revision=34876

13 years agoThe puzzle of the design decisions behind the React address space structure continues...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 23:53:04 +0000 (23:53 +0000)]
The puzzle of the design decisions behind the React address space structure continues to be troubling (perhaps there was no design?). Every time a process address space is initialized,
the owner process is stored (which we now use to figure out the lowest address). Recall that NULL means kernel, anything else means per-process. This is great, except that after some
painfull header groking, one understands that the PMADDRESS_SPACE structure is actually *not* a separate structure, but embedded within PEPROCESS itself. It is a React-specific structure
(hence the attempts to get rid of it), that seems to have been "overloaded" on top of the VadRoot structure that Windows uses for user-mode memory allocations. To clarify, this structure
is actually embedded inside the process that owns it, except for the kernel address space, which is a global variable. So there's absolutely *no* point in saving a reference to the owner
process, since we'll always be embedded inside it (except for kernel address space).
This patch creates the MmGetAddressSpaceOwner macro which either returns NULL for kernel address space, or uses the CONTAINING_RECORD macro to return the owner (embedded) process.

svn path=/trunk/; revision=34873

13 years ago- Remove MiGetUserPageDirectoryCount from the ARM Mm since this function is now usele...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 23:48:19 +0000 (23:48 +0000)]
- Remove MiGetUserPageDirectoryCount from the ARM Mm since this function is now useless after our cleanups.

svn path=/trunk/; revision=34872

13 years agoMore over-engineering: there really isn't any reason to keep track of the "LowestAddr...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 23:03:20 +0000 (23:03 +0000)]
More over-engineering: there really isn't any reason to keep track of the "LowestAddress" of the process' addres space. At first sight, this looked like a dynamic value that would define the
lowest address at which the process has allocated memory, but this isn't the case -- the variable actually defines the lowest valid address a process can allocate memory at. This is pretty
much a static value, that was compute by MmInitializeProcessAddressSpace, to either MM_LOWEST_USER_ADDRESS or MmSystemRangeStart, based on whether or not the address space has an owner process
(meaning it is a user-mode address space) or not (meaning it is a kernel mode address space).
This patch removes that value and all the complex code around checking it, and replaces it with a much simpler design: if there is an owner process, use MM_LOWEST_USER_ADDRESS during gap
calculations, otherwise, use MmSystemRangeStart. This is both faster, and wastes less space by not tracking static data.

svn path=/trunk/; revision=34869

13 years ago- implement changing drive volume name
Johannes Anderwald [Sun, 27 Jul 2008 22:58:19 +0000 (22:58 +0000)]
- implement changing drive volume name
- display default volume label "local disk" if there is no title
- verify that provided clsid is valid
- display drive property dialog
- note: changing volume label currently leads to a crash

svn path=/trunk/; revision=34867

13 years agoIt seems unclear as to what the point of the Page Reference Count Table in the React...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 22:39:54 +0000 (22:39 +0000)]
It seems unclear as to what the point of the Page Reference Count Table in the React Addres Space structure really was. It seems an over-engineered approach that actually causes more problems
then it attempts to solve. The idea is to be able to unmap PDEs when they are not required anymore (a noble idea), which saves you 4KB of non-paged pool whenever a process frees a chunk
of 4MB memory (oversimplification). The problem is that to keep track of this, an extremly expensive series of branches, comparisons, masks and shifts is applied every single time that
a page is mapped or unmapped. It also adds 8KB of non-paged pool to keep track of the references, which in some cases can be more wasteful than keeping the page tables around.
Finally, if the process quickly allocates and de-allocates memory in the same PDE range, we will effectively map and unmap the PDE continously, fragmenting hyperspace and slowing down perf.
This patch removes this functionality from the system and re-uses the code that was already present in Mmi386ReleaseMmInfo (with some optimizations and changes) to do this unmapping when the
process exists. This should make things faster, with a very small amount of increased memory footprint (we're talking about less than 100kb of non paged pool, in worse-case scenarios).

svn path=/trunk/; revision=34865

13 years ago- Fix a couple of bugs, and majorly refactor MmDeleteVirtualMapping to sync it to...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 20:58:23 +0000 (20:58 +0000)]
- Fix a couple of bugs, and majorly refactor MmDeleteVirtualMapping to sync it to the x86 version somewhat more.

svn path=/trunk/; revision=34859

13 years ago- Work with screen buffer data using pointers rather than offsets; remove confusing...
Jeffrey Morlan [Sun, 27 Jul 2008 20:08:18 +0000 (20:08 +0000)]
- Work with screen buffer data using pointers rather than offsets; remove confusing GET_CELL_BUFFER and SET_CELL_BUFFER macros.
- CsrFreeProcessData: Merge two ifs with the same condition.
- Use the pointer-to-pointer trick to simplify linked list handling in CsrFreeProcessData, IntInsertAliasHeader, IntInsertAliasEntry, and IntDeleteAliasEntry.

svn path=/trunk/; revision=34858

13 years ago- Major cleanup, refactoring, and bugfixing of ARM Mm code in preparation for user...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 19:52:41 +0000 (19:52 +0000)]
- Major cleanup, refactoring, and bugfixing of ARM Mm code in preparation for user-mode support.
- Sync the code a lot closer to its x86 counterpart, still more work to be done.
- Very soon, it should be possible to share upward of 50% of the new ARM code with the x86 version of React as well and unify the implementations.

svn path=/trunk/; revision=34857

13 years agoRevert r34848 and r34850, and replace them by a real fix (hinted by Colin Finck)
Hervé Poussineau [Sun, 27 Jul 2008 19:39:05 +0000 (19:39 +0000)]
Revert r34848 and r34850, and replace them by a real fix (hinted by Colin Finck)

svn path=/trunk/; revision=34856

13 years agoMaciej Bialas (
Colin Finck [Sun, 27 Jul 2008 19:10:44 +0000 (19:10 +0000)]
Maciej Bialas (
- Add '#include <cstring>', so newer gcc's don't complain about a missing memset function

See issue #3595 for more details.

svn path=/trunk/; revision=34855

13 years agoFix code to correctly handle first object file.
Hervé Poussineau [Sun, 27 Jul 2008 17:12:44 +0000 (17:12 +0000)]
Fix code to correctly handle first object file.
It was luckily working because first file was always conditional.

svn path=/trunk/; revision=34854

13 years agoFix typo
Hervé Poussineau [Sun, 27 Jul 2008 16:33:57 +0000 (16:33 +0000)]
Fix typo

svn path=/trunk/; revision=34853

13 years agoResolve <if> and <ifnot> elements during parsing time.
Hervé Poussineau [Sun, 27 Jul 2008 16:17:50 +0000 (16:17 +0000)]
Resolve <if> and <ifnot> elements during parsing time.
Backend don't have to deal anymore with if-able modules, defines, ...

svn path=/trunk/; revision=34852

13 years ago- ntdll should be the last library in the list, not the first or somewhere in the...
Aleksey Bragin [Sun, 27 Jul 2008 16:03:38 +0000 (16:03 +0000)]
- ntdll should be the last library in the list, not the first or somewhere in the middle ("as it imports from nothing and everything else should be resolved with it", by Herve). This fixes some base system DLLs dependency on msvcrt (which doesn't exist in Windows). Thanks Herve!

svn path=/trunk/; revision=34851

13 years agoDefine __LINUX__ for build tools if host is Linux
Hervé Poussineau [Sun, 27 Jul 2008 15:49:18 +0000 (15:49 +0000)]
Define __LINUX__ for build tools if host is Linux

svn path=/trunk/; revision=34850

13 years agoAdd a variable to include support for ELF format
Hervé Poussineau [Sun, 27 Jul 2008 15:48:00 +0000 (15:48 +0000)]
Add a variable to include support for ELF format

svn path=/trunk/; revision=34849

13 years agoDefine __LINUX__ for build tools if host is Linux
Hervé Poussineau [Sun, 27 Jul 2008 15:32:40 +0000 (15:32 +0000)]
Define __LINUX__ for build tools if host is Linux

svn path=/trunk/; revision=34848

13 years agoImprovements to cmd ConPrintfPaging:
Jeffrey Morlan [Sun, 27 Jul 2008 14:03:44 +0000 (14:03 +0000)]
Improvements to cmd ConPrintfPaging:
- Even if there is a console, don't do paging when output is redirected to a file; it would just confuse users with prompts they can't see.
- Instead of WriteFile, use WriteConsole (which has a convenient Unicode version).
- Rework the paging algorithm: don't treat end of string the same way as end-of-line (was causing nul bytes to be output after strings that didn't end with \n), and output multiple lines at once when possible.
- Use the screen buffer width, not the window width, to determine when wrapping will happen.
- Take the initial cursor position into account.

svn path=/trunk/; revision=34847

13 years agoFactorize code for simple module types
Hervé Poussineau [Sun, 27 Jul 2008 14:01:24 +0000 (14:01 +0000)]
Factorize code for simple module types

svn path=/trunk/; revision=34846

13 years agoDaniel Verkamp (
Colin Finck [Sun, 27 Jul 2008 13:34:53 +0000 (13:34 +0000)]
Daniel Verkamp (
- Fix buildno warnings when compiled with GCC 4.2.x or later
See issue #3578 for more details.

svn path=/trunk/; revision=34844

13 years agoUse hal.spec file for i386 build
Hervé Poussineau [Sun, 27 Jul 2008 09:56:21 +0000 (09:56 +0000)]
Use hal.spec file for i386 build

svn path=/trunk/; revision=34841

13 years agoAdd support for fastcall functions in .spec files
Hervé Poussineau [Sun, 27 Jul 2008 09:12:37 +0000 (09:12 +0000)]
Add support for fastcall functions in .spec files

svn path=/trunk/; revision=34837

13 years agoAdd a .spec file for HAL exports. Don't use it yet
Hervé Poussineau [Sun, 27 Jul 2008 09:07:59 +0000 (09:07 +0000)]
Add a .spec file for HAL exports. Don't use it yet

svn path=/trunk/; revision=34836

13 years agoPreprocess kernel .spec files
Hervé Poussineau [Sun, 27 Jul 2008 08:26:42 +0000 (08:26 +0000)]
Preprocess kernel .spec files

svn path=/trunk/; revision=34830

13 years agoPrevent code duplication when translating GCC platform defines to MSVC ones.
Hervé Poussineau [Sun, 27 Jul 2008 08:18:07 +0000 (08:18 +0000)]
Prevent code duplication when translating GCC platform defines to MSVC ones.

svn path=/trunk/; revision=34829

13 years agoMore specific error messages. More correct according to winetests.
Art Yerkes [Sun, 27 Jul 2008 08:12:12 +0000 (08:12 +0000)]
More specific error messages.  More correct according to winetests.

svn path=/trunk/; revision=34828

13 years ago- Build "smlib", "nt", and "smss" on ARM, since the kernel now tries to load the...
ReactOS Portable Systems Group [Sun, 27 Jul 2008 05:44:56 +0000 (05:44 +0000)]
- Build "smlib", "nt", and "smss" on ARM, since the kernel now tries to load the first user-mode process.
- MmCreateProcessAddressSpace is unimplemented.

svn path=/trunk/; revision=34825