From ReactOS Wiki
Revision as of 00:05, 23 November 2012 by Z98 (talk | contribs) (Created page with "This is the changelog for ReactOS™ version 0.3.15 (released CLASSIFIED), an open-source operating system designed to be binary executable - and device driver-compati…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This is the changelog for ReactOS™ version 0.3.15 (released CLASSIFIED), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was version 0.3.14.




Core Developers

  • Giannis Adamopoulos
  • Johannes Anderwald
  • Aleksey Bragin
  • Dmitry Chapyshev
  • Thomas Faber
  • Benedikt Freisen
  • Jérôme Gardou
  • Dmitry Gorbachev
  • Cameron Gutman
  • Rafał Harabień
  • Kamil Horníček
  • Gabriel Ilardi
  • Alex Ionescu
  • Amine Khaldi
  • Eric Kohl
  • Timo Kreuzer
  • Matthias Kupfer
  • Michael Martin
  • Roel Messiant
  • Ged Murphy
  • Sylvain Petreolle
  • ReactOS Portable Systems Group
  • Daniel Reimer
  • Gregor Schneider
  • Pierre Schweitzer
  • James Tabor
  • Christoph von Wittich
  • Art Yerkes

Patch Submitters

  • Carlo Bramini

Support Staff

  • Colin Finck
  • Ziliang Guo
  • Olaf Siejka

Generic 0.3.15 Changes

Known Issues

Core Functionality

Audio/Video Stack


Hardware Management


Memory Management

Network Stack




  • FreeLoader no longer maps the first MB of memory into kernel space, eliminating inconsistencies with page table entries.
  • A new heap implementation has been added, helping reduce wasted memory.
  • FreeLoader now has its own ASSERT implementation instead of requiring it link the one in the runtime library.
  • VESA graphics video mode is now set properly.
  • Disk signature information is now allocated from the heap instead of a static loader block. This eliminates memory corruption when a user has more than two harddrives installed.
  • FreeLoader now supports drives/partitions larger than 4GB.
  • The disk buffer is now fully used to help speed up reads.
  • Freeloader can now output debug information without needing a recompilation.
  • The kernel is now given an additional 4MB of memory by Freeloader in an attempt to hack around memory leak issues.





  • Update French translation. (Hermès Belusca - Maito; #7196)


  • Implement LoadSettings() and SaveSettings(). (Edijs Kolesnikovics with some minor changes by me; #6925)
  • CSRSRV][MOUNTMGR] (Dmitry Gorbachev)
  • Declare variables extern. (Dmitry Gorbachev)




  • When no file name is passed on the command line, open a file-open-dialog (milawynsrealm <spaceseel at gmail got com>; #6803)
  • Halfplement printing (milawynsrealm <spaceseel at gmail got com>; #6803)
  • Replace Quit button with install button (milawynsrealm <spaceseel at gmail got com>; #6803)
  • Update French translation. (Hermès Belusca - Maito; #6803)



  • Fix display of formerly trucated info text in German language. (Robert Naumann (robert dot naumann at ovgu dot de))
  • CORE-6218 #resolve (Robert Naumann (robert dot naumann at ovgu dot de))


  • Get the timeout correctly. (Edijs Kolesnikovics; #6964)
  • Correctly update the selected command line text. (Edijs Kolesnikovics; #6963)


  • Implement the 'View/Devices by Connection' feature. It runs very well on windows XP but fails on ReactOS. Needs to be investigated. (Eric Kohl)
  • Enable /KDSERIAL in bootcd. (Sylvain Petreolle)
  • This will allow debugging first stage on the KVM test bot. (Sylvain Petreolle)
  • Major improvements to the device manager experience (finally making it useful for users to gather information from) (Cameron Gutman)
  • Device manager now reports problem codes, shows unknown devices, and displays non-PnP drivers like Windows (Cameron Gutman)
  • Inspired by Eric's recent work (Cameron Gutman)
  • Finally (!!!) add support for showing devices with no drivers installed yet (Cameron Gutman)
  • Expand the class tree if one of the devices has a problem (Cameron Gutman)
  • Implement the "Show hidden devices" feature. (Eric Kohl)
  • Do not enumerate the root device. (Eric Kohl)
  • Fixes CORE-6592. (Eric Kohl)
  • MS-compatible but interface contract violating return value for QueryInterface with NULL ppvObject. (Mike Nordell)


  • CORE-6413 (Eric Kohl)
  • Convert the application to Unicode. (Eric Kohl)
  • Implement "net start" and "net stop" commands that use the service manager APIs. (Eric Kohl)
  • Correct copying of arguments into temporary buffer. (Roel Messiant)
  • Remove some debug prints. (Roel Messiant)
  • Fix a potential buffer overflow, fix a handle leak, fix an MSVC warning (Thomas Faber)
  • Add localization support. (Lee Schroeder)
  • CORE-6721 (Lee Schroeder)



  • Handle Ctrl-A in address bar. (Edijs Kolesnikovics (terminedijs at yahoo dot com); #5936)
  • Mmake regedit to save/load settings for: window placement, listview columns size, last opened key, status bar, splitter. (Grégori Macário Harbs <mysoft64bits at gmail dot com> and Edijs Kolesnikovics <terminedijs at yahoo dot com>; #6920)
  • Implement silent mode so the winetest can run. (Art Yerkes)
  • STDOLE32.TLB] (Amine Khaldi)
  • The previous msvc build fix wasn't proper. Back this out until we figure out a compatible one. (Amine Khaldi)
  • Acquire the necessary privileges when loading/unloading hives. (Hermes Belusca; #7159)
  • Improve permission acquirement for loading/unloading hives. (Hermes Belusca; #7159)
  • Apply the "Refresh" command to the ListView in addition to the TreeView (Hermes Belusca; #7180)
  • Use COUNT_OF where applicable; miscellaneous readability and consistency fixes (Hermes Belusca; #7180)
  • Space fixes in resource files; French translation fixes (Hermes Belusca; #7180)
  • Implement Import/Export of hive files. (Hermes Belusca (German translation by me); #7180)
  • Use COUNT_OF where appropriate. Miscellaneous code cleanup. (Hermès Bélusca; #7182)
  • Don't include these two headers twice for the resources. (Amine Khaldi)
  • Update informative messages (Edijs Kolesnikovičs (1/2))
  • CORE-6239 (Edijs Kolesnikovičs (1/2))
  • WCHAR ==> TCHAR in (before a REALLY conversion of regedit into UNICODE) (Edijs Kolesnikovičs (2/2) adapted by me)
  • Correct some mistakes in displayed strings (Edijs Kolesnikovičs (2/2) adapted by me)
  • Improve informative / warning / error messages when importing registry files (Edijs Kolesnikovičs (2/2) adapted by me)
  • Now, try to import each registry file specified in the command line and don't fail miserably when one of them is missing, but continue with the next one (as Windows' regedit does). (Edijs Kolesnikovičs (2/2) adapted by me)
  • CORE-6239 #comment Fixed in r57462 with some adaptations. Thanks ;) #resolve (Edijs Kolesnikovičs (2/2) adapted by me)
  • Don't forget to close the file handle. (Hermes BELUSCA - MAITO)
  • Convert the application's code to UNICODE (Hermes BELUSCA - MAITO)
  • But the regproc.c's code is untouched (apart from the pseudo-error messages issued with fprintf) (Hermes BELUSCA - MAITO)
  • Forgot to remove a comment (Hermes BELUSCA - MAITO)
  • and this line of code (I'm sorry for the generated noise :-( ) (Hermes BELUSCA - MAITO)
  • Re-number some resource IDs. (Hermes BELUSCA - MAITO)
  • Add key exportation message-box error (thus removing some fwprintf calls). (Hermes BELUSCA - MAITO)
  • Use IDS_MY_COMPUTER localized string instead of hardcoded one. (Hermes BELUSCA - MAITO)




  • Fix handles leaks (Pierre Schweitzer)
  • Make the handle to the shutdown event a global handle and set it when the service manager is being shut down. (Eric Kohl)
  • Close the start event properly. (Eric Kohl)
  • Log failed service starts and stops. (Eric Kohl)
  • Remove logically dead code. CID 513302. (Amine Khaldi)
  • Implement SERVICE_CONFIG_FAILURE_ACTIONS case in RQueryServiceConfig2W and RQueryServiceConfig2A. (Hermès Bélusca; #7101)
  • Fix a typo and an indentation. By Hermès Bélusca. (Amine Khaldi; #7104)
  • Removing some code defects discovered by Coverity. (Hermès Bélusca; #7105)
  • Implement REnumServiceGroupW. (Hermès Bélusca; #7106)
  • Removing the redundant function WaitForLSA() and use ScmWaitForLsa() instead. (Hermès Bélusca; #7110)
  • Automatically close handles and unlock database. (Hermès Bélusca; #7111)
  • This new patch corrects bugs introduced in the implementation of (Hermès Bélusca; #7101)
  • SERVICE_CONFIG_FAILURE_ACTIONS case in RQueryServiceConfig2W() and (Hermès Bélusca; #7101)
  • RQueryServiceConfig2A(). (Hermès Bélusca; #7101)
  • Implement SERVICE_CONFIG_FAILURE_ACTIONS case in RChangeServiceConfig2W. (Hermès Bélusca; #7122)
  • I moved the changes to RChangeServiceConfig2W into a new function (ScmSetFailureActions). I also removed the check for services that run in the services.exe process because ReactOS will not support this kind of services. We should use a separate process or svchost instead. (Hermès Bélusca; #7122)
  • Improve a check in RQueryServiceConfig2W and RQueryServiceConfig2A (Hermès Bélusca; #7123)
  • Correct behaviour of setting the service description. (Hermès Bélusca; #7124)
  • Code cleaning and bugs correction. (Hermès Bélusca; #7128)
  • Code cleaning and removing bugs. (Hermès Bélusca; #7127)
  • I did not include the changes to EnumServicesStatusW because it does not improve the code but introduces an unnecessary exception. (Hermès Bélusca; #7127)
  • Implement service database locking via RLockServiceDatabase / RUnlockServiceDatabase etc... and use this functionality. (Hermès Bélusca; #7131)
  • I did not rename the database lock functions because the functions names RLockServiceDatabase and RUnlockServiceDatabase are misleading. They do not lock any database but lock the service start function. The existing functions ScmLockDatabaseExclusive, ScmLockDatabaseShared and ScmUnlockDatabase do protect (lock) the service database (service, group and image lists) form concurrent access. That is also the reason for renaming the SC_LOCK_STRUCT to START_LOCK. (Hermès Bélusca; #7131)
  • Fix the build. (Eric Kohl)
  • Fix the copyright message. (Eric Kohl)
  • Hermès Bélusca is the owner of this file! (Eric Kohl)
  • Use Unicode functions instead of generic ones and replace all TEXT macros too. (Eric Kohl)
  • First step to support control sets. (Eric Kohl)
  • Implement LoadUserProfileA and DeleteProfileA. (Hermes Belusca; #7163)
  • Correct comments and code error introduced in rev 56844. (Hermes Belusca; #7172)
  • I used a helper variable to determine whether or not ScmDeleteNamedPipeCriticalSection must be called. Changing the order in which functions are called could cause a deadlock. (Hermes Belusca; #7172)
  • Implement check for SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS type. (Hermes Belusca; #7179)
  • SAMLIB: Implement SamQueryInformatioGroup and SamSetInformationGroup. (Eric Kohl)
  • SAMSRV: Implement SamrQueryInformatioGroup and SamrSetInformationGroup. (Eric Kohl)
  • Remove "size_t to DWORD/int..." conversion warnings in x64 build. (Hermes Belusca; #7149)
  • I replaced size_t by SIZE_T, as this is the proper Win32 type. And I also used the prefix 'cch' (count of characters) instead of the generic 'dw'. (Hermes Belusca; #7149)


  • Log files which are opened when the eventlog service is started are permanent files and will only be closed when the service is stopped. Other log files are closed when their handle is closed. (Eric Kohl)
  • Opening a non existing backup log file must fail. (Eric Kohl)
  • Opening an existing backup log files opens the file for reading only. (Eric Kohl)
  • Add mscoree winetest to the rbuild build too. (Amine Khaldi)
  • STDOLE2.TLB] (Amine Khaldi)
  • Sync to Wine 1.3.37. (Amine Khaldi)
  • Change LogfInitializeNew and LogfInitializeExisting to return an NTSTATUS code instead of a BOOL value. (Eric Kohl)
  • LogfInitializeExisting no longer calls LogfInitializeNew when reading a log file fails but returns a proper status code instead. (Eric Kohl)



  • Fix an off-by-one bug in the drive letter assignment code that prevented the 4th partition on a disk from being assigned a drive letter (Cameron Gutman)
  • Allow removable media to be selected as an installation target (Cameron Gutman)
  • Fix broken unpartitioned space calculation if the first partition starts below the disk's track size (such as a 1MB aligned partition) (Cameron Gutman)
  • Add a small keyboard class installation hack (Cameron Gutman)
  • USB keyboards now load during 1st stage (Cameron Gutman)
  • Print a bit more information when failing. (Jérôme Gardou)
  • Fix installation directories set into unattend.inf, (Sylvain Petreolle)
  • they were ignored and installed always into \ReactOS. (Sylvain Petreolle)
  • Enable ext2 as an option in setup (Cameron Gutman)
  • Formatting and building file copy list works but setup stalls shortly after starting to copy files (NewCC on) (Cameron Gutman)
  • Turn off debugging (Cameron Gutman)
  • Fix the checkpoint print so it doesn't happen anytime a usetup progress bar reaches 50% (Cameron Gutman)
  • Treat REG_DWORD values in inf files as unsigned values. (Eric Kohl)
  • Fix a little layout issue. (Eric Kohl)



  • Fix MSVC / 64 bit warnings (Timo Kreuzer)
  • Fix several bugs in the copy command: (Timo Kreuzer; #5709)
  • x:" is not a valid source path () (Timo Kreuzer; #5709)
  • when appending files using "+", cmd must distinguish between + as operator and + as part of the source file, when being put in "". For that reason the tokenizer was modified to make + a seperate token, which is replaced with | when creating the string of multiple files (since + is a valid file character) (Timo Kreuzer; #5709)
  • was not correctly handled when passed in the output file name (Timo Kreuzer; #5709)
  • factor out the code to create the file name from wildcards and make it readable (no, p, q, r are NOT reasonable variable names!) (Timo Kreuzer; #5709)
  • Move code out of the loop that doesn't belong there (Timo Kreuzer; #5709)
  • Make sure the file names are printed when multiple files are copied or appended (Timo Kreuzer; #5709)
  • write the count of written files (which is 1 when appending), not source files after the copy process is done (Timo Kreuzer; #5709)
  • Remove an excessive newline when writing strings with ConPuts() (Timo Kreuzer; #5709)
  • Improve readability a bit (Timo Kreuzer; #5709)
  • Remove confusing comments (Timo Kreuzer)
  • Handle the + character only optionally as a token seperator, so that other commands like rename are not affected. (Timo Kreuzer)
  • Add quotes to autocompleted names, when certain characters are present, not only spaces. Not sure if that's really all, but should be the most common. (Timo Kreuzer)
  • Add a newline to the output of the echo command (Timo Kreuzer)
  • Remove debug stuff (Timo Kreuzer)
  • Fix a typo (Timo Kreuzer)
  • Terminate lines that show environment results from the SET command. (Art Yerkes)
  • Fix first argument of the target program so that paths with spaces aren't (Art Yerkes)
  • reparsed by the c runtime as multiple arguments. (Art Yerkes)
  • Fix build with VS 2012 (Timo Kreuzer)
  • Fix typos (Timo Kreuzer)
  • Fix missing new line in the timer command results. Spotted by Mikael Lyngvig. (Aleksey Bragin; #7140)
  • Clarify the code, no functional changes. (Hermes BELUSCA - MAITO)


  • Broadcast WM_SETTINGCHANGE message to shell view window (Rafał Harabień)
  • Fixes Ctrl-Esc, . (Rodion; #968, #6239)
  • Fixes minimize all windows, . (Rodion; #968, #6239)
  • Expand the environment variables when running startup programs (Edijs Kolesnikovics, slightly modified by me; #6953)
  • Handle the /select cmd option. (Edijs Kolesnikovics; #6096)
  • Missed this in my previous commit. (Amine Khaldi)
  • Execute HKCU RunOnce entries as well. (Edijs Kolesnikovics; #7062)
  • Edijs Kolesnikovics: Expand environment strings during processing startup items in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run. (Aleksey Bragin; #6053)


  • Do not define GUID which is already defined in PSDK. (Dmitry Gorbachev)
  • Add more items to taskbar popup menu. (Edijs Kolesnikovičs <terminedijs at yahoo dot com>; #6242)



  • Rewrite argument parsing. (Lee Schroeder; #7170)
  • Correct command processing following the first command in interactive mode. (Roel Messiant)
  • Correct invocation of command-specific help functions. (Roel Messiant)


  • Handle read only devices and report them unsupported. (Mikael Lyngvig; #2081)
  • Forbid the formatting of the system drive. (Mikael Lyngvig; #2081)


  • Load samsrv.dll and call SamIInitialize when lsass is started. (Eric Kohl)



  • Add a new SMSS2 with the goal of having a Windows-compatible LPC API that will work with the new CSRSS that's already in the tree. So far, it launches the old SMSS and quits. (Alex Ionescu)
  • Add a new header which precisely documents the SB and SM packet structure and protocol. These match the Server 2003 SP1 definitions and sizes and would allow a ReactOS SMSS to talk to a Windows CSRSS and vice-versa. (Alex Ionescu)
  • Oh, right, compilation units. I had forgotten how much I hate rbuild. (Alex Ionescu)
  • Co-exist with SMSS2 by using OBJ_OPENIF when creating object directories and sections, in case SMSS2 has already done so (which now it probably will). (Alex Ionescu)
  • No longer initialize the registry, let SMSS2 do that now. (Alex Ionescu)
  • Neuter away most of the code and only keep SMSS around for managing the API port. (Alex Ionescu)
  • Next step is to make the SMSS2 API port go into use. (Alex Ionescu)
  • ÇNTOSKRNL] (Timo Kreuzer)
  • modify MiResolveDemandZeroFault to take the page protection as a parameter instead of the PTE. This will be used soon. (Timo Kreuzer)
  • Move increment of counters into the region where the pfn lock is held to avoid race conditions and make heavy locked operations unneccessary (Timo Kreuzer)
  • Add some ASSERTs (Timo Kreuzer)
  • Nuke the environment code and instead inherit SMSS2's, which does all the right things. #if 0 all the non-used code, and nuke support for the "debug" subsystem as well as the custom "SmQuery" APIs. (Alex Ionescu)
  • Turn off all code other than setting up the pagefile. (Alex Ionescu)
  • There's a lot of debug prints, as soon as things seem stable after a few days, SMSS will be gone and SMSS2 will take over and DPRINT1s will mostly be gone. (Alex Ionescu)
  • No longer fail on invalid known DLL checksum until I can fix the loader API. (Alex Ionescu)
  • Fix an NTSTATUS vs boolean issue (Thomas Faber)
  • Fix an MSVC warning (Thomas Faber)
  • Move this condition up to the commented-out part (where it belongs). (Amine Khaldi)
  • Rename the folder back to smss now. (Amine Khaldi; #7278)




  • Register CLSIDs for MSI (Pierre Schweitzer)
  • Don't create paging files on livecd. Verified by Alex Ionescu. (Rafał Harabień)
  • Enable drop shadows by default (this option was hardcoded to 1 before) (Rafał Harabień)
  • Include unattend.inf by default (as it was almost done in r28835). No need to have it "disabled" twice. (Kamil Hornicek)
  • reactos.dff was superseded by (Kamil Hornicek)
  • Add FailureActions to some services. (Hermès Bélusca; #7125)
  • Disable /KDSERIAL for a quick test (Thomas Faber)
  • CORE-6678 (Thomas Faber)
  • Re-enable /KDSERIAL (Thomas Faber)
  • Correct the version signature of some inf files. (Hermes BELUSCA - MAITO)
  • CORE-6549 #comment Committed in rev.57401 #resolved (Hermes BELUSCA - MAITO)
  • HACK: Add artificially a symbolic link to the first COM port, because it happens for (Hermes BELUSCA - MAITO)
  • whatever reason that the serial.sys driver doesn't create it when it creates the Serial0 (Hermes BELUSCA - MAITO)
  • device. When this functionality is repaired, the HACK shall disappear. (Hermes BELUSCA - MAITO)
  • Revert rev.57413. Indeed, when one boots ReactOS without debugging (selecting the first entry in the boot menu), the COM1 symbolic link (corresponding to \Device\Serial0) is created automatically by the serial driver. However, when one boots in debugging mode (selecting the second entry -- ReactOS (Debug) --), then for some reason the COM1 link isn't created (albeit \Device\Serial0 is). Therefore the real problem is elsewhere. Seems that it has something to share with (Hermes BELUSCA - MAITO)
  • Remove unneeded %SystemRoot%\bin\data value in PATH environment variable. (Hermes BELUSCA - MAITO)
  • Correct the SP number (==> SP1) we are reporting (currently SP1 of Windows Server 2003). The SP6 thingie was a remainder from our previous target, Windows NT 4 SP6. (Hermes BELUSCA - MAITO)
  • Clean up svn properties. (Sylvain Petreolle)
  • Add setupapi.dll to the KnownDlls list. (Lee Schroeder. #resolve)
  • CORE-6732 #comment Quake II setup fixed in rev 57576. (Lee Schroeder. #resolve)


  • Convert the cab generation into a custom command + custom target. (Amine Khaldi)

  • Add pSetupGuidFromString(), pSetupIsGuidNull() and pSetupStringFromGuid() to the PSDK header setupapi.h and remove a local declaration. (Eric Kohl)
  • Update glext.h to latest version (Jérôme Gardou)
  • Update gl.h from Mesa 8.0.4 (Jérôme Gardou)
  • Add some more C99 math functions (Jérôme Gardou)
  • Fix definition of __forceinline and FORCEINLINE for C99 (Jérôme Gardou)
  • Fix and add definition of _aligned_malloc and _aligned_free (Jérôme Gardou)
  • Fix definition of is(w)blank, as a C99 function, it is not in msvcrt.dll and has to be implemented in msvcrtex (Jérôme Gardou)
  • All of this taken from the mingw-w64 project (Jérôme Gardou)
  • Fix the declarations of LsarQueryTrustedDomainInfoByName and LsarSetTrustedDomainInfoByName. (Eric Kohl)
  • Add missing account right strings and system account flags. (Eric Kohl)
  • Reimplement RtlSetCurrentDirectory_U. This fixes bugs & implements references count (Pierre Schweitzer)
  • Fix the FIXME in RtlpDosPathNameToRelativeNtPathName_Ustr by incrementing references count (Pierre Schweitzer)
  • Document, define, implement, and export RtlSetThreadIsCritical. (Alex Ionescu)
  • Work around Wine's misuse of critical section debug flags. Hopefully fixes KVM (Thomas Faber)
  • Fix RtlLengthSecurityDescriptor (Timo Kreuzer)
  • Implement amd64 version of Implement RtlInitializeContext (Timo Kreuzer)
  • Add unwind info to amd64 debug asm functions (Timo Kreuzer)
  • Fix 64 bit HEAP_COMMON_ENTRY structure The resulting version doesn't exactly match the original windows one, but its compatible, as every field, except the dummy fields - which are omitted - is at its correct position. (Timo Kreuzer)
  • Fix64 bit warnings (Timo Kreuzer)
  • Add missing parameter checks to RtlAreBitsClear and RtlAreBitsSet (Timo Kreuzer)
  • Fix a bug I introduced in r55527 (Timo Kreuzer)
  • Force RtlIpToString APIs to behave inexplicably like on Windows, returning -1 instead of crashing when sprintfing to a NULL pointer. (Alex Ionescu)
  • Fix use of uninitialized variables in failure case of RtlSetCurrentDirectory_U. CID 15339, 15340 (Thomas Faber)
  • Handles should be NULL, not 0 (Thomas Faber)
  • Formatting, no code changes. (Eric Kohl)
  • Rbuild, our build system, has served us well so far, but its usefulness has since been vastly overshadowed by its awfulness. It's time to fix it. (Amine Khaldi)
  • Sorry, forgot this critical part of the VAD commit. (sir_richard)
  • Add some temp AVL debugging code: In case an AVL table gets unbalanced, dump the table and a backtrace. (Timo Kreuzer)
  • Fix build (Timo Kreuzer)
  • fx build second try (Timo Kreuzer)
  • Remove pointless ASSERTs, instead set the balance of the new node to balanced, before inserting it. (Timo Kreuzer)
  • Dedicated to Alex. (Timo Kreuzer)
  • DESK.CPL] (Edijs Kolesnikovics (terminedijs at yahoo dot com))
  • Simplify code, (Edijs Kolesnikovics (terminedijs at yahoo dot com))
  • Implement RtlCreateBootStatusDataFile, RtlGetSetBootStatusData, RtlLockBootStatusData and RtlUnlockBootStatusData. (Eric Kohl)
  • Accept NULL Buffer/Size in RtlGetFullPathName_Ustr (Thomas Faber)
  • Fix NULL dereference in RtlGetFullPathName_UstrEx if no StaticString was given (Thomas Faber)
  • Various other corrections to path functions. 17 test failures fixed overall. (Thomas Faber)
  • Do not null terminate buffer before initializing its length in RtlDosSearchPath_Ustr. Use unicode string functions made for this purpose instead. (Thomas Faber; #7010)
  • Use RtlAnsiStringToUnicodeString instead of mbstowcs to correctly handle manifests that aren't null-terminated (Thomas Faber; #6743)
  • Really implement RtlRandomEx and add its values table (Pierre Schweitzer)
  • Rename SavedValue to RtlpRandomConstantVector to allow RtlRandom & RtlRandomEx to have two different values tables (Pierre Schweitzer)
  • Complete and fix documentation (Pierre Schweitzer)
  • Stop using magic values (Pierre Schweitzer)
  • bitmap.c: (Timo Kreuzer)
  • hack away ASSERT() for now to fix tests (Timo Kreuzer)
  • Optimize 64 bit builds (Timo Kreuzer)
  • add BSD license (Timo Kreuzer)
  • Fix a bug in RtlNumberOfSetBits (Timo Kreuzer)
  • Fix a mistake in RtlNumberOfSetBits, check for index out of range in RtlFindNextForwardRun* (Timo Kreuzer)
  • Implement RtlConvertVariantToProperty, RtlConvertPropertyToVariant, PropertyLengthAsVariant (Pierre Schweitzer)
  • Those are just wrappers around Ole32 functions. (Pierre Schweitzer)
  • Fix c/p mistake in PropertyLengthAsVariant (Pierre Schweitzer)
  • Fix a really stupid mistake in RtlNumberOfSetBits (Timo Kreuzer)
  • Fix remainung RtlBitmapApi tests (Timo Kreuzer)
  • Properly enable validity check in RtlLeaveCriticalSection for debug builds (Thomas Faber)
  • Check the correct return status in RtlCreateUserProcess (CID 715961) (Thomas Faber)
  • Implement RtlpSafeCopyMemory, which uses SEH to copy the memory (not in freeldr) (Timo Kreuzer)
  • Make RtlLargeIntegerToChar use RtlpSafeCopyMemory to copy the string to the target buffer. (Timo Kreuzer)
  • CORE-3767 #resolve (Timo Kreuzer)
  • Cleanup all the ACL functions. Mostly refactoring, commenting and styling, but there are a few important changes. First, RtlValidateAcl actually does the whole ACL validation algorithm. Second, mandatory label ACEs are not supported, because we shouldn't lie about Vista features in ntdll/kernel code. (Alex Ionescu)
  • Separate condition calculation in RtlVerifyVersionInfo into an extra function. (Hermès Bélusca (2/X))
  • Don't make the Hungarian more ridiculous than it needs to be (Hermès Bélusca (2/X))
  • CORE-6611 (Hermès Bélusca (2/X))
  • Make CMAKE_BUILD_TYPE default to Debug for all our builds. (Amine Khaldi)
  • Exclude host tools when setting the default build type. (Amine Khaldi)
  • Reformat, rewrite, comment, and fix when relevant the Rtl*SecurityDescriptor* APIs, as well as fix one wrong prototype and implement some unimplemented ones. (Alex Ionescu)
  • Fix bugs in SD rewrite, bringing tests back to 73 failures instead of 117 (back to their normal). (Alex Ionescu)
  • CORE-6713 #resolve #time 10m #comment Use explicit checks when checking for present and default flags, just like Windows. Fixes winetest regressions. (Alex Ionescu)
  • Cleanup, comment, and fix SID functions. For example, RtlEqualPrefixSid actually checks only the prefix, not the entire SID. (Alex Ionescu)
  • Add all the missing Rtl*Security*Object APIs and put them all in security.c. Move privilege functions into a new file, priv.c. No functional/code changes, just more stubs/exports and moving things around. (Alex Ionescu)
  • Implement and half-plement the Object Security APIs. In most cases, ultimately forward to an internal (unimplemented) worker function, but some APIs were implemented fully. Also add missing RtlCreateAndSetSD and export it (unimplemented). (Alex Ionescu)
  • Fix typo in RtlValidAcl. (Alex Ionescu)
  • Fix a bug in RtlAreAnyAccessesGranted (Timo Kreuzer)
  • Fix an MSVC warning in RtlEqualPrefixSid (Timo Kreuzer)
  • Fix RtlEnumResources prototype (Timo Kreuzer)
  • Implement LdrEnumResources (Timo Kreuzer)


  • Define _inline to __inline when cross compiling. Dedicated to Alex. (Amine Khaldi)
  • Add wallpaper optional module to CMake build (Rafał Harabień)
  • use relative paths for reactos.dff generation. (Jérôme Gardou)
  • May fix Pierre's issue, but a deeper fix is needed. (Jérôme Gardou)
  • use quotes in reactos.dff for every platform. (Jérôme Gardou)
  • Paths beginning with '.' are no longer seen as directives (Jérôme Gardou)
  • Simplify the way we handle importlib targets by taking control of the importlib name. (Amine Khaldi)
  • Alter the current base addresses, and introduce all the missing ones. (Amine Khaldi)
  • We have a much better way to assign them, thanks to Timo's excellent suggestions. (Amine Khaldi)
  • Big thanks go to Geir Hauge for making us an awesome script that conveniently and automagically generates baseaddress.cmake. (Amine Khaldi)
  • Dedicated to Alex. (Amine Khaldi)
  • generate 'real' libraries for import libraries (Jérôme Gardou)
  • This way only the link step relies on them. (Jérôme Gardou)
  • Should avoid rebuilding half of the tree next time Alex changes ntdll.spec (Jérôme Gardou)
  • A relinking orgy is more than enough (Jérôme Gardou)
  • fix MSVC build (Jérôme Gardou)
  • get rid of the no longer needed importlibs directory (Jérôme Gardou)
  • exclude importlibs from all target in MSVC build (Jérôme Gardou)
  • fix build, sorry... (Jérôme Gardou)
  • fix copy-paste typo (Jérôme Gardou)
  • Reorder the modules addresses based on their dependencies. (Amine Khaldi)
  • Specify C4700 (uninitialized variable usage) to cause an error on compile as this is very likely to result in broken code. (Stefan Ginsberg)
  • Get GCC version and add some compiler flags conditionally based on it. Dedicated to Dmitry. (Amine Khaldi)
  • Introduce a way to compile GCC builds with PDB style debug info (isolated into .dbg files). This will reduce the memory footprint considerably, among other benefits. (Amine Khaldi)
  • Remove some accidental changes. (Amine Khaldi)
  • reduce debug spam (only tested on windows) (Christoph von Wittich)
  • fix for unix/linux (Christoph von Wittich)
  • fix for the fix (Christoph von Wittich)
  • thanks Alex for testing (Christoph von Wittich)
  • this should reduce testman log size by at least 500KB (Christoph von Wittich)
  • it looks like IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") return TRUE on MacOS/Linux when cross compiling (Christoph von Wittich)
  • file(TO_NATIVE_PATH) is broken as well (Christoph von Wittich)
  • next try (Christoph von Wittich)
  • this should work according to Amine (Christoph von Wittich)
  • Fix GCC warnings when building cmlib (Rafał Harabień)
  • unify spec2def and add_importlib_target (Jérôme Gardou)
  • use module name instead of spec file name for deciding importlib target name (Jérôme Gardou)
  • Fix a typo. (Amine Khaldi)
  • Make use of the cmake rc handling. As a result we don't need set_rc_compiler() anymore, among other benefits. (Amine Khaldi)
  • There's one minor issue mentioned as a FIXME, we'll get that sorted out as soon as the bug report we filed upstream gets resolved. (Amine Khaldi)
  • Set set_rc_compiler() to be a dummy, to be removed later. (Amine Khaldi)
  • Temporarily work around the cmake rc handling bug (mentioned previously). (Amine Khaldi)
  • Addendum to my previous commit. (Amine Khaldi)
  • Allow to build with link-time code generation. (Dmitry Gorbachev)
  • Temporarily work around the cmake rc handling bug. (Amine Khaldi)
  • Temporarily work around the cmake rc handling bug when it comes to allowing warnings. (Amine Khaldi)
  • add a small functions for preprocessing files with C compiler. (Jérôme Gardou)
  • unused/untested (Jérôme Gardou)
  • Properly handle the dep file creation for resource files. (Amine Khaldi)
  • Try to fix some midl dependency and concurrency issues (Timo Kreuzer)
  • Pass /no_def_idir to midl, to search only in the include folders that we specify (through /I). (Amine Khaldi)
  • Seperate midl and widl files (currently files are simply copied) (Timo Kreuzer)
  • Move common macros from *idl-support.cmake to CMakeMacros.cmake, remove obsolete definitions (Timo Kreuzer)
  • Cleanup *idl-support.cmake files a bit more (Timo Kreuzer)
  • Attempt to fix a concurrency issue with midl. Regarding to the MSVC builder output, midl failed when compiling wine/itss.h due to a concurrent access to itss_i.c. Although the command to generate itss.h doesn't seem to geenrate itss_i.c (at least not on my wdk buld), I added a switch to rename that file. (Timo Kreuzer)
  • Fix generation of _i.c iid files with midl. Simplify code, use better naming (Timo Kreuzer)
  • Make sure to pass the full path of the idl file in generate_idl_iids(). (Amine Khaldi)
  • include wincodec_i.c into uuid on MSVC builds (Timo Kreuzer)
  • Improve midl support (Timo Kreuzer)
  • Recognize the extra client/server files in add_rpc_files() that Mr. midl generates regardless of the passed flags, and mark them as dummy files so that they don't break the msvc parallel build. (Amine Khaldi)
  • Make use of /client none and /server none to tell midl not to generate them. (Amine Khaldi)
  • Add dummy proxy file generation in generate_idl_iids(). (Amine Khaldi)
  • The def file is also an external object (that should be added to the link command directly). (Amine Khaldi)
  • Set the def file as an external object in msvc builds too. (Amine Khaldi)
  • Revert back to the old def handling for now, we'll get to tackle that later. (Amine Khaldi)
  • Implement the _clean targets for the ninja generator. (Amine Khaldi)
  • CMake automatically handles def files when they're added to the source list, so we don't need to mark it as an external object here. (Amine Khaldi)
  • Rename CreateBootSectorTarget2 to CreateBootSectorTarget and remove the old rbuild version (Timo Kreuzer)
  • Enable MSVC build for Wine DirectX libraries, which mostly work just fine. (Thomas Faber)
  • seperate generation of importlibs from spec2def (generate_import_lib function) (Timo Kreuzer)
  • Autogenerate oldnames for MSVC as well. (Timo Kreuzer)
  • Currently on gcc builds we use a special def file syntax and use dlltool to create the lib, while on MSVC builds we use an asm file with aliases. (Timo Kreuzer)
  • Remove the toolchain libs since they are no longer needed, now that we have the updated RosBE. (Amine Khaldi)
  • WIN32 subsystem and the kernel deserve their own projects. (Jérôme Gardou)
  • Fix issues with newer cmake versions (brought to you by Amine) (Timo Kreuzer)
  • Add support for ninja to configure script (Timo Kreuzer)
  • Fix MSVC+Ninja support, sync some stuff from the original cmake file (Timo Kreuzer)
  • Globally disable SSE when compiling with VS 11 or newer. (Timo Kreuzer; #7174)
  • Don't make the cab generation in the default build. (Amine Khaldi)
  • Generate the dbg files next to the binary files. (Amine Khaldi)
  • Make use of the TARGET_PDB variable to consistently group the separate debug files into a symbols folder. (Amine Khaldi)
  • Revert r56892 and r56889. (Jérôme Gardou)
  • Add a comment as to why this should be this way. (Jérôme Gardou)
  • Add support for MSVC ARM (Timo Kreuzer)
  • Configuration script works as usual from VS 11 ARM command prompt, host tools is configured for x86 and must be compiled from a VS x86 command prompt. (Timo Kreuzer)
  • Fix configure script for arm (Timo Kreuzer)
  • Add ARM architecture support (Timo Kreuzer)
  • disable makefile debugging (Timo Kreuzer)
  • Align the stack on a 16-byte boundary for x86 like any sensible compiler would, anyway. Should fix weird GCC 4.7 behavior. (Thomas Faber)
  • Revert 56985 for now, as it apparently breaks syscalls (Thomas Faber; #7218)
  • Add macro to add flags to a specific language. (Jérôme Gardou)
  • Tackle the VS solutions case when handling importlibs. (Amine Khaldi)
  • Get rid of __ROS_CMAKE__ definition (Jérôme Gardou)
  • Fix build, sorry (Jérôme Gardou)
  • Escape the source folder here. (Amine Khaldi)
  • Prefer STREQUAL over MATCHES since we're comparing with strings here. Brought to you by Hermès Bélusca. (Amine Khaldi; #7306)
  • Remove the importlibs folder. It's not needed anymore. While we're here, it's worth noting that the use of link_directories is not recommended, you should use target_link_libraries with absolute paths for example. (Amine Khaldi)
  • Refer to the PSEH lib using its variable. (Amine Khaldi)
  • Don't add the whole absolute path to GCC for preprocessing when creating RC dependency files in Ninja builds.. that complicates the already complicated quoting needs here. (Amine Khaldi)




  • Sync up to 1.5.9. (Amine Khaldi)
  • Do not duplicate headers. Update out-of-sync public headers. (Vincenzo Cotugno)
  • Fix MSVC build. (Amine Khaldi)
  • Sync to 1.5.12. (Vincenzo Cotugno; #7202)





  • Send WM_SETTINGCHANGE with wParam = 0 when applying changes (Rafał Harabień)
  • Fix a typo. Part of an old (Carlo Bramini; #3158)
  • Enhance 8-bit spectrum bitmap. (Lee Schroeder)
  • CORE-6069 #resolve (Lee Schroeder)




  • Add a simple control panel applet for WineD3D runtime configuration. (Kamil Hornicek)





  • We already have the correct rgs data in place. Fix build. (Amine Khaldi)







  • Implement amd64 version of LdrInitializeThunk and KiUserApcDispatcher (Timo Kreuzer)
  • Export ExpInterlockedPopEntrySList* on amd64, too (Timo Kreuzer)
  • Fix some 64 bit issues (Timo Kreuzer)
  • Fix (although I'm not sure quite why) LdrpCheckForLoadedDll which was crashing now that I've fixed PAGE_EXECUTE sections with only FILE_EXECUTE handles. Ironically, this meant that LdrpCheckForLoadedDll never worked until my previous fix some revisions ago, it always returned FALSE. (Alex Ionescu)
  • This should fix KVM/QEMU crashes... (Alex Ionescu)
  • Fix uninitialized variable usage causing first chance exceptions during SMSS2 loading on livecd (Rafał Harabień)
  • Fix MSVC build. (Amine Khaldi)
  • Enable support for server-to-server calls! (Alex Ionescu)
  • Server-to-server calls work now, and one of the multiple mapping hacks is gone. User32 and kernel32 still need a bit of fixes to get rid of the other hacks, though. Also, Perf++. (Alex Ionescu)
  • Disable ASSERT in LdrpSearchPath that could be reading an uninitialized variable. The routine is not fully implemented so this should likely be re-enabled once it is. (Stefan Ginsberg)
  • Mark _chkstk as extern to avoid duplication with msvcrtex library (using alloca will cause _alloca_probe to be linked, which aliases _chkstk) (Timo Kreuzer)
  • Fix Cookie for loader locking generation (Jérôme Gardou)
  • Silences "LdrUnlockLoaderLock() called with an invalid cookie!" debug messages (Jérôme Gardou)







  • Missed this change in my previous commit. (Amine Khaldi)
  • Add or fix parameter checks. (Eric Kohl)
  • Don't export Vista+, unused and unimplemented APIs. (Sylvain Petreolle)
  • Some apps / tests detect their presence and try to use them. (Sylvain Petreolle)
  • Fix buffer overflow in LookupAccountSidA (Thomas Faber; #6752)
  • Formatting, no code changes. (Eric Kohl)
  • The third parameter of LsaCreateAccount and LsaOpenAccount is an ACCESS_MASK. (Eric Kohl)
  • Fix broken commit. (Eric Kohl)
  • Do not add the "SeUnsolicitedInputPrivilege" privilege to the administrators privilege set because it has been superseded by the "SeMachineAccountPrivilege" privilege and the later has already been added to the privilege set. (Eric Kohl)
  • Use LSA functions to query the account domain SID. (Eric Kohl)
  • Get the logon user SID using the new SAM keys and values. This is still a hack. (Eric Kohl)
  • Fixed broken build. (Eric Kohl)
  • RegCreateKeyExA/W and RegOpenKeyExA/W: Handle Option REG_OPTION_OPEN_LINK properly. This fixes four wine tests. (Eric Kohl)
  • USER32][ROSSYM_NEW] (Thomas Faber)
  • Fix misuse of RtlCreateUnicodeStringFromAsciiz (Thomas Faber)
  • Fix a double free (Thomas Faber)
  • Fix a potential memory leak. Spotted by Hermès (Thomas Faber)
  • Implement and export RegDeleteKeyEx{A,W} (Thanks Alex). (Amine Khaldi)
  • Implemented the beginnings of InitiateShutdownA/W (nothing works yet, and it's not exported). (milawynsrealm:; #7245)
  • Running InitiateSystemShutdownA/W invokes InitiateSystemShutdownExA/W while (milawynsrealm:; #7245)
  • using "Other (Planned)" as the reason code. (milawynsrealm:; #7245)
  • The "Other (Planned)" reason code seemed to be the best default (milawynsrealm:; #7245)
  • option so far. (milawynsrealm:; #7245)
  • Let me know if you feel otherwise. (milawynsrealm:; #7245)
  • Added the shutdown flags that are used for InitiateShutdownA/W inside of (milawynsrealm:; #7245)
  • winreg.h. (milawynsrealm:; #7245)
  • Include the reason.h header inside the winreg.h header so that the reason (milawynsrealm:; #7245)
  • codes can be (milawynsrealm:; #7245)
  • properly called. This conforms to the VC2010 method of adding this support. (milawynsrealm:; #7245)
  • Added the declarations for InitiateSystemShutdownExA/W and InitiateShutdownA/W inside of winreg.h. (milawynsrealm:; #7245)
  • In winuser.h, change the definitions for EWX_* to conform to MSDN (milawynsrealm:; #7245)
  • documentation (milawynsrealm:; #7245)
  • (milawynsrealm:; #7245)
  • Added definition support for EWX_HYBRID_SHUTDOWN which is found in Windows 8. (milawynsrealm:; #7245)
  • Calling InitiateSystemShutdownExA will convert strings to UNICODE and send it (milawynsrealm:; #7245)
  • over to InitiateSystemShutdownExW. The same is also for InitiateShutdownA. (milawynsrealm:; #7245)
  • Cleanup and update source code header. (Aleksey Bragin)
  • Correctly handle NULL passwords for services. (Hermès Bélusca. Fixes crash in advapi32_winetest:service. , bug 7293; #7239)
  • Implement LsaClearAuditLog. (Eric Kohl)
  • Sort functions, update function headers and trace-messages. (Eric Kohl)
  • Implement LsaGetUserName and LsaOpenTrustedDomain. (Eric Kohl)
  • Implement LsaCreateTrustedDomainEx and LsaEnumerateAccounts. (Eric Kohl)
  • Implement LsaEnumerateAccountsWithUserRight, LsaEnumeratePrivileges, LsaGetQuotasForAccount and LsaSetQuotasForAccount. (Eric Kohl)
  • Implement LsaQuerySecurityObject and LsaSetSecurityObject. (Eric Kohl)
  • Implement LsaRemovePrivilegesFromAccount. (Eric Kohl)
  • Add stubs for LsaGetRemoteUserName, LsaLookupPrivilegeDisplayName, LsaOpenPolicySce and LsaSetInformationTrustedDomain. (Eric Kohl)
  • Fix some issues in the spec file. (Eric Kohl)
  • Implement LsaGetRemoteUserName, LsaQueryDomainInformationPolicy and LsaSetDomainInformationPolicy. (Eric Kohl)
  • Implement LsaQueryForestTrustInformation and LsaSetForestTrustInformation. (Eric Kohl)
  • Pre-implement InitiateSystemShutdownExW. (Lee Schroeder. See CORE-6613 for more details)
  • Cosmetic formatting code (by me). (Lee Schroeder. See CORE-6613 for more details)
  • CORE-6613 #comment Committed shutdown.c. (Lee Schroeder. See CORE-6613 for more details)






  • Add missing call to BuildRebarBandInfo, or we would end up with an unitialized variable sent to SendMessage. (Stefan Ginsberg)
  • Make DllInstall export private to silence an MSVC warning (Timo Kreuzer)
  • Remove useless diff file. (Timo Kreuzer)



  • Partial sync to wine 1.3.37 without the ComCtl32 diff applied. This fixes the hangs and the exceptions during testing. Researching DrawFocusRect issues. Please Developers, note any information for the diff other than what is posted on svn, also this is open to anyone to be synced. (James Tabor)
  • Sync more of header.c with Wine 1.3.37. Fixes build. (Amine Khaldi)
  • Fix MSVC build. Already sent upstream (Thomas Faber)
  • Fix the fix for MSVC build (r55306). This is the version accepted by Wine. (Thomas Faber)
  • Sync to Wine 1.3.37 (Rafał Harabień)
  • Fix rbuild build (Rafał Harabień)
  • Add DrawShadowText implementation (Rafał Harabień)
  • Fix MSVC build ( (Thomas Fabber reverted by me in previous commit))
  • Fix MSVC build (Rafał Harabień)
  • Really fix MSVC build... (Rafał Harabień)
  • Add support for LVS_EX_TRANSPARENTSHADOWTEXT style (Rafał Harabień)
  • Draw shadow if item has focus but isn't selected (Rafał Harabień)
  • Build fix. (Alex Ionescu)
  • If no control or one of wizard buttons has focus in PROPSHEET_SetWizButtons, set focus to default wizard button. Tested in Win2k3. Worse fix was already in diff but wasn't applied. (Rafał Harabień)
  • When installing dll copy manifest to winsxs\manifests directory as comctl32 before sync did. Fixes Firefox 10 regression. (Rafał Harabień; #6910)
  • Update diff file (Rafał Harabień)




  • Create an import lib (needed for upcoming test) (Timo Kreuzer)







  • DeviceAdvancedProperties: Show the details page of a device property sheet in extended mode only. (Eric Kohl)
  • Actually fail on error in AllocAndLoadStringsCat (CID 716793/716794) (Thomas Faber)
  • Replace $1 by %1 in message strings. (Hermes BELUSCA - MAITO)
  • Fixes CORE-6638. (Hermes BELUSCA - MAITO)














  • Forward ICMP function calls to icmp.dll (for XP and higher) (Cameron Gutman)
  • Dmitry Timoshkov : user32: RealChildWindowFromPoint should skip invisible windows. (James Tabor)
  • Alexandre Julliard : Draw the mask with SRCCOPY in DrawIcon when the image isn't being drawn. (James Tabor)
  • Fix a use after free in getNthInterfaceEntity (CID 716795 - partly reverts r53190). Fix a possible double free in getArpTable (CID 716796). (Thomas Faber)



  • Fix MSVC build (Thomas Faber)
  • Fix IntReadConsoleOutputCharacter to copy the correct count of characters. Its 3rd parameter is a character count and not buffer size. (Giannis Adamopoulos)
  • Should fix infinite loop when kernel32:console test runs (Giannis Adamopoulos)
  • Changes to proc.c: (Alex Ionescu)
  • ReadProcessMemory/WriteProcessMemory only write to *lpNumberOfBytesRead/Written if user-mode passed in the parameter, as its an optional argument in Win32, but not in NT. Instead, use a local variable. This means that anyone calling ReadProcessMemory/WriteProcessMemory in ReactOS before with a NULL output argument (totally valid) was getting an error before! (Alex Ionescu)
  • WriteProcessMemory actually returns STATUS_ACCESS_VIOLATION in a few cases, even if it's defined as a BOOL function. Code on Google shows major applications depending on this, which we weren't doing. (Alex Ionescu)
  • Rewrite InitCommandLines to be much simpler. No normalization or copying or ANSi/OEM logic is needed. (Alex Ionescu)
  • GetProcessAffinityMask should use the BaseStaticServerData from CSRSS instead of querying system information each time. (Alex Ionescu)
  • GetProcessShutdownParameters and SetProcessShutdownParameters should use the LPC status code from CSRSS, not the LPC API status code. (Alex Ionescu)
  • GetProcessWorkingSetSize now calls GetProcessWorkingSetSizeEx. (Alex Ionescu)
  • Implement GetProcessWorkingSetSizeEx. (Alex Ionescu)
  • SetProcessWorkingSetSize now calls SetProcessWorkingSetSizeEx. (Alex Ionescu)
  • Implement SetProcessWorkingSetSizeEx. (Alex Ionescu)
  • Acquire the required privilege in SetProcessWorkingSetSize(Ex). (Alex Ionescu)
  • Fail with correct status code in SetProcessWorkingSetSize(Ex). (Alex Ionescu)
  • GetExitCodeProcess should check if this is a VDM process and get the exit code that way. (Alex Ionescu)
  • GetStartupInfoW should not fail if the input is NULL. It should crash. (Alex Ionescu)
  • GetStartupInfoW was not filling out the lpReserved field, which should contain the ShellInfo buffer. (Alex Ionescu)
  • GetStartupInfoW was always setting standard handles -- it should not do so if those are console handles. (Alex Ionescu)
  • GetStartupInfoA was not thread-safe. (Alex Ionescu)
  • GetStartupInfoA was assuming all Unicode->ANSI conversions will be successful. (Alex Ionescu)
  • GetStartupInfoA was not filling out lpReserved either. (Alex Ionescu)
  • ExitProcess was not using SEH and was not using the PEB lock. (Alex Ionescu)
  • TerminateProcess was not setting ERROR_INVALID_HANDLE last error code. (Alex Ionescu)
  • FatalAppExitA was not using static TEB buffer, and was always assuming success. (Alex Ionescu)
  • FatalAppExitW was doing some sort of bizarre hack. It now raises as a hard error as it should. (Alex Ionescu)
  • FatalExit now displays a debugger input interface on checked builds, just like Windows. (Alex Ionescu)
  • SetPriorityClass now tries to acquire the real time privilege when needed, and handles failure to do so. (Alex Ionescu)
  • GetProcessVersion rewritten to be cleaner and simpler. (Alex Ionescu)
  • Annotate and reformat functions where needed. (Alex Ionescu)
  • Rename lpfnGlobalRegisterWaitForInputIdle to UserWaitForInputIdleRoutine (Alex Ionescu)
  • GetProcessPriorityBoost is now BOOL-safe. (Alex Ionescu)
  • IsWow64Process now sets NT error code using only one API. (Alex Ionescu)
  • CommandLineStringA/W -> BaseAnsiCommandLine/BaseUnicodeCommandLine. (Alex Ionescu)
  • Fix a copy-pasta (and a regression). Thanks vicmarcal/testbot. (Alex Ionescu)
  • Fix error status of GetQueuedCompletionStatus, which should set the error to WAIT_TIMEOUT (Samuel Serapion (samcharly_hotmail_com); #6907)
  • Fixes 4 failing winetests (Samuel Serapion (samcharly_hotmail_com); #6907)
  • Try to connect to the Console Server when initializing console support. For normal apps, won't do anything since ConnectionInfo == NULL (to hack around the fact there's no server in ReactOS for this), but for DLLs running inside of CSRSS, because we now support Server-to-Server, the call will detect that and not fail. This fixes the "failed to give us console" error when kernel32 inside of csrss tries to get a console (which it shouldn't). There's still user32 to cleanup. (Alex Ionescu)
  • Get rid of $Id$ usage and the related svn property. (Amine Khaldi)
  • Add support for NO_DEBUG_INHERIT in CreateProcess. Fixes a winetest. (Alex Ionescu)
  • CreateHardLinkW was not setting last error on failure. (Alex Ionescu)
  • Cleanup/format/comment/annotate CreateHardLink*. (Alex Ionescu)
  • Use macro for CreateMailSlotA->CreateMailSlotW. (Alex Ionescu)
  • Format, comment, annotate, cleanup the I/O completion APIs. (Alex Ionescu)
  • Lock/UnlockFile APIs should not allow console handles. Also remove superflous parameter check. (Alex Ionescu)
  • Lock/UnlockFile APIs should handle STATUS_PENDING/ERROR_IO_PENDING situations instead of always assuming the Nt functions return synchronously. (Alex Ionescu)
  • Other stylying changes + commenting/annotations. (Alex Ionescu)
  • revert r55794, the problem is elsewhere (Jérôme Gardou)
  • Rewrite the File Change Notification APIs since they were pretty much wrong (not surprising as we don't implement the functionality in the kernel/filesystems). (Alex Ionescu)
  • Enable support for asynchronous I/O callbacks with SxS/Fusion activation context support. Right now only added to the file Change notification APIs, but ReadFileEx and WriteFileEx should use them too. (Alex Ionescu)
  • CopyLoop was requesting 2 zero bits when calling NtAllocateVirtualMemory. Not sure if this was really the intent or not, but both the new as well as the old NtAllocateVirtualMemory do not support this (the new one will ASSERT). Since this functionality never worked, request 0 bits instead to avoid hitting the ASSERT. (sir_richard)
  • Any problems with what the VAD system will introduce should be revealed by now. From this build until the one which will have the VAD-based system in place, no further VM-related issues should crop up. (sir_richard)
  • Do not use Zw functions from user mode (Thomas Faber)
  • Fix SetCurrentDirectoryA to return success when setting the current directory again (Thomas Faber; #6874)
  • Swap GetFullPathName success/failure cases in BasePushProcessParameters. Fixes kernel32:GetModuleFileName test. (Thomas Faber; #6786)
  • Reimplement DeleteFileA and W to handle the new ansi-Unicode functions, as well as to handle the same cases that Pierre implemented in the directory functions (dealing with reparse points and tags). (Alex Ionescu)
  • Formatting cleanups and annotations. (Alex Ionescu)
  • Simplify QueueWorkItem since the trampoline is in Rtl. (Alex Ionescu)
  • Add SxS support to QueueUserApc. (Alex Ionescu)
  • Add some extra sanity checks/assertions in certain places. (Alex Ionescu)
  • WIP User32 SxS] (James Tabor)
  • Add SxS for classes, still not plugged in for a year now. (James Tabor)
  • Need more information on global headers to support class contexts. ATM the headers are local, for noting what is needed. (James Tabor)
  • Add wine netsh, . (James Tabor; #6758)
  • Enable SxS support in CreateRemoteThread, and other misc. cleanups. (Alex Ionescu)
  • Wine doesn't prepend \registry\ to any registry path, which is wrong. Fix that. (Aleksey Bragin; #6595)
  • Bring back previous implementation of GetGeoInfo & co. (Aleksey Bragin; #6595)
  • Fix GEO_OFFICIALLANGUAGES in the headers. (Aleksey Bragin; #6595)
  • Thanks to Kamil Hornicek and Samuel Serapion for finding the problem and creating patches. (Aleksey Bragin; #6595)
  • Sync FormatMessage implementation to Wine 1.5.4. Fixes crash in kernel32_winetest:format_msg. (Thomas Faber; #7217)
  • Fix a comment and a last error value. By Hermes Belusca. (Amine Khaldi; #7240)
  • Fix buffer overflow in PeekNamedPipe (Thomas Faber)
  • Remove svn:keywords properties. (Sylvain Petreolle)
  • LIB:3RDPARTY] Add iconv. (Mike Nordell)
  • Revert r57394 as per Mike's request. (Amine Khaldi)
  • Reworking the Find* APIs in kernel32. Fixes some kernel32_winetest:file failures. (Hermes BELUSCA - MAITO)
  • The FindExInfoBasic information level for FindFirstFileEx, is also implemented. (Hermes BELUSCA - MAITO)
  • Update ndk and psdk headers regarding to this work. (Hermes BELUSCA - MAITO)
  • CORE-6623 #comment Committed in rev.57407. #resolve (Hermes BELUSCA - MAITO)


  • Initialize an uninitialized variable in AttributeSize. Fixes crashing advapi32_winetest lsa (Timo Kreuzer)
  • Fix return value of LsarQueryAccountDomain (Timo Kreuzer)
  • Fix another uninitialized variable bug. (Timo Kreuzer)
  • Implement LsarCreateAccount. (Eric Kohl)
  • Clean up the LSA database APIs. (Eric Kohl)
  • Fix database object reference counting. (Eric Kohl)
  • Implement LsarOpenAccount. (Eric Kohl)
  • SYSSETUP] (Eric Kohl)
  • Move the creation of the random account domain SID from syssetup.dll to lsasrv.dll. This change is required because the account domain SID must be stored in the LSA database before the SAM database initializes. Syssetup.dll created the account domain SID much too late. (Eric Kohl)
  • Revert accidential changes from r57331. (Eric Kohl)
  • LsarQueryInfromationPolicy: Check desired access depending on the information class. (Eric Kohl)
  • LsarSetInfromationPolicy: Check desired access depending on the information class. (Eric Kohl)
  • LsarLookupPrivilegeValue / LsarLookupPrivilegeName: Check desired access. (Eric Kohl)
  • Set the default quota limits when the LSA database is created. (Eric Kohl)
  • Implement the PolicyDefaultQuotaInformation class of LsarQueryInformationPolicy. (Eric Kohl)
  • Implement most missing information classes of LsarQueryInformationPolicy. (Eric Kohl)
  • Add initialization code for new attributes of the policy object. (Eric Kohl)
  • Implement LsarQueryInformationPolicy2 and LsarSetInformationPolicy2. (Eric Kohl)
  • Implement the PolicyDnsDomainInformation class of LsarQueryInformationPolicy and enable the PolicyModificationInformation class. (Eric Kohl)
  • Add required attributes to the initialization code. (Eric Kohl)
  • Update LsarQueryDomainInformationPolicy and LsarSetDomainInformationPolicy according to the changes in the IDL file. (Eric Kohl)
  • Fix a typo: LsarEnmuerateAccountRights --> LsarEnumerateAccountRights. (Eric Kohl)
  • Implement LsarEnumeratePrivileges. (Eric Kohl)
  • Validate Account SIDs in LsarCreateAccount and LsarOpenAccount. (Eric Kohl)
  • LsarOpenAccount: Do not check the granted access of the policy handle. (Eric Kohl)
  • LsarOpenAccount: Return the proper status code. (Eric Kohl)
  • Get rid of the ugly container object code. Let LsapCreateDbObject and LsapOpenDbObject handle container objects instead. (Eric Kohl)
  • LsarOpenSecret: Do not check the granted access of the policy handle and return the proper status code. (Eric Kohl)
  • Add missing breaks (addendum to r57391) (Hervé Poussineau)
  • LsarLookupNames3: Use the existing list of well known SIDs to look-up well known account names. (Eric Kohl)
  • Fixes several bugs in the current implementation of LsapSplitNames and LsapLookupNames. This fixes the crashing lsa advapi32 wintest. LsapLookupNames is still WIP. (Eric Kohl)
  • LsapLookupNames: If a name was found, add its domain SID to the domains list and set the domain index accordingly. (Eric Kohl)
  • Implement LsarEnumerateAccountRights. It is still WIP (Work In Progress). (Eric Kohl)
  • Move most of the code from LsarLookupSids into LsapLookupSids. (Eric Kohl)
  • Use the code from LsapLookupNames to handle the referenced domains list in LsapLookupSids. (Eric Kohl)
  • Change LsapLookupSids to match LsarLookupSids2 and LsarLookupSids3. (Eric Kohl)
  • Implement LsarLookupSids2 and LsarLookupSids3. (Eric Kohl)
  • Update the call to LsapLookupSids in LsarLookupSids and convert the translated names list after calling LsapLookupSids. (Eric Kohl)
  • Make LsarLookupNames, LsarLookupNames2 and LsarLookupNames4 call LsapLookupNames and convert the results where this is needed. (Eric Kohl)
  • Split the lookup code in LsapLookupSids into separate functions. (Eric Kohl)
  • Implement LsaIOpenPolicyTrusted as described in (Eric Kohl)
  • Store the names and SIDs of the built-in and account domains in global vaiables. (Eric Kohl)
  • Move the lookup code for isolated names to a separate function. (Eric Kohl)
  • Implement lookup of accounts in the account domain of the SAM database. The advapi32 security winetest shows proper domain and account names for the administrator and guest SIDs. (Eric Kohl)
  • Add missing SAM domain lookup code. (Eric Kohl)
  • Fix a bug in the calls to SamrCloseHandle. (Eric Kohl)
  • Don't stop searching if a name or SID could not be mapped yet. (Eric Kohl)
  • LsapLookupIsolatedNames: Add a domain entry to the referenced domain list for an unknown/unidentified domain. Its SID is the SID of the account minus the last sub-authority and its name is an empty string. (Eric Kohl)
  • Add well-known account names "LOCALSERVICE" and "NETWORKSERVICE" as aliases of "LOCAL SERVICE" and "NETWORKSERVICE". They can be found on a german Windows XP. (Eric Kohl)
  • Remove a part LsaLookupSids that returned "UNKNOWN\Test" for unknown SIDs. Was used for tests only. (Eric Kohl)







  • Gracefully handle lpcbBytesReturned == NULL condition in WSPIoctl. Fixes crash in ws2_32:sock (Thomas Faber)
  • Add more option support to WSPGetSockOpt and WSPSetSockOpt (Cameron Gutman)
  • Return the correct error code for an unsupported option in WSPGetSockOpt (Cameron Gutman)
  • Hack a SO_ERROR get handler together for apps that need it (Cameron Gutman)
  • Add better unsupported protoopts debugging (particularly for getsockopt) (Cameron Gutman)
  • SMPlayer can now stream media from the Internet :) (Cameron Gutman)
  • Fix a memory leak in the failure path of WSPGetSockName and WSPGetPeerName (Cameron Gutman)
  • Fix a broken debug print in WSPGetPeerName (Cameron Gutman)
  • Add support for getting and setting SO_EXCLUSIVEADDRUSE (Cameron Gutman)
  • Add support for setting SO_REUSEADDR (Cameron Gutman)
  • Stubplement support for SIOCATMARK (Cameron Gutman)
  • Add error translation for STATUS_ACCESS_VIOLATION (Cameron Gutman)
  • Fix access rights on socket events (Cameron Gutman)






  • Adopt a compatible syntax for the resource files. (Amine Khaldi)









  • Sync with Wine 1.5.12. (Amine Khaldi)
  • Make a copy of the data type information instead of writing to the (read-only) .rsrc section. Already applied upstream. (Thomas Faber)
  • CORE-6645 #comment Should be fixed. Can you retest with HEAD please? (Thomas Faber)
  • Make GpGraphics save/restore state id's a bit more like Windows. Fixes a winetest graphics state check failure. (Mike Nordell)






  • Remove a hack needed because DN_DISABLEABLE was never set (Cameron Gutman)











  • Make rpcrt4_ros.diff actually reflect our difference to Wine (Thomas Faber)
  • RPCRT4:FORMATTING] (Thomas Faber)
  • Forgotten file (Thomas Faber)
  • Fix overlapped I/O error handling for pipe transport (Thomas Faber)
  • ROS now works with Windows npfs.sys again (CORE-2198) (Thomas Faber)
  • Wine has this completely reworked, so this ros-diff should finally disappear with the next sync (Thomas Faber)



  • Remove the unused functions SamGetDomainSid and SamSetDomainSid. They have been replaced by LSA APIs. (Eric Kohl)
  • Add DDK header ntsam.h. (Eric Kohl)
  • Add some client side stubs of the SAM RPC interface. (Eric Kohl)
  • Implement SamCloseHandle, SamConnect and SamOpenDomain. (Eric Kohl)
  • SAMSRV] (Eric Kohl)
  • Implement SamCreateUserInDomain and SamrCreateUserInDomain. (Eric Kohl)
  • SamOpenDomain: Use the correct object types when trying to open a domain object. (Eric Kohl)
  • Implement SamOpenUser and SamSetInformationUser. (Eric Kohl)
  • Add SamQueryInformationUser stub. (Eric Kohl)
  • Remove all hacks. (Eric Kohl)
  • Implement SamFreeMemory and SamLookupDomainInSamServer. (Eric Kohl)
  • Remove unused file debug.h. (Eric Kohl)
  • SAMSRV][SYSSETUP] (Eric Kohl)
  • Implement SamSetInformationDomain.DomainNameInformation and SamrSetInformationDomain.DomainNameInformation. (Eric Kohl)
  • Set the account domain name for SAM too. (Eric Kohl)
  • Remove the old samlib.h file. (Eric Kohl)
  • Implement SamAddMemberToAlias, SamCreateAliasInDomain, SamEnumerateDomainsInSamServer, SamOpenAlias, SamQueryInformationDomain and SamQueryInformationUser. (Eric Kohl)
  • SAMSRV] (Eric Kohl)
  • Implement SamGetMembersInAlias and SamrGetMembersInAlias. (Eric Kohl)
  • Add registry helper routines SampRegQueryKeyInfo, SampRegEnumerateValue and SampRegSetValue. (Eric Kohl)
  • Remove unused SAM database code. (Eric Kohl)
  • Store the name and members key (only for aliases and groups) in the database object. (Eric Kohl)
  • SAMSRV] (Eric Kohl)
  • Implement SamEnumerateAliasesInDomain and SamrEnumerateAliasesInDomain. SamEnumerateAliasesInDomain does not return the names of the enumerated aliases, most likely due to a bug in rpcrt4.dll. (Eric Kohl)
  • NTOSKRNL:KDBG] (Thomas Faber)
  • Update i386-dis.c to CVS 1.48. Fixes some Intel syntax disassembly bugs. (Thomas Faber)
  • Use setjmp instead of _setjmp (Thomas Faber)
  • STDOLE32.TLB] (Amine Khaldi)
  • Fix MSVC build and add the module to our build. (Amine Khaldi)
  • Implement SamGetAliasMembership, SamQueryInformationAlias and SamSetInformationAlias. (Eric Kohl)
  • Add stub SamLookupNamesInDomain. (Eric Kohl)
  • SAMSRV] (Eric Kohl)
  • Prevent multiple declarations of SAM types. (Eric Kohl)


  • Convert to Wine debug messages. (Eric Kohl)
  • Add server side stubs of the SAM RPC interface. The RPC server is not implemented yet. (Eric Kohl)
  • Implement SamrCloseHandle, SamrConnect and SamrOpenDomain. (Eric Kohl)
  • Start the SAM RPC Server. (Eric Kohl)
  • Support container objects in SampCreateDbObject. (Eric Kohl)
  • Implement SampGetObjectAttribute and SampSetObjectAttribute. (Eric Kohl)
  • Add Names sub keys to the Alias, Groups and Users keys of the Account an Builtin domains. These will later contain the 'Name to SID' entries that will simplify lookup by name operations. (Eric Kohl)
  • Service Manager] (Hermes Belusca: Fix dialog painting. , marked as WIP; #4965)
  • Implement SamrOpenUser. (Eric Kohl)
  • Add a hack to SamrSetInformationUser that enables us to store a users password (as plain-text) in the registry. (Eric Kohl)
  • SamrCreateUserInDomain: Fix the creation of user account key names and start counting user RIDs at 1000. (Eric Kohl)
  • Clean-up the SAM registry setup code. (Eric Kohl)
  • Assingn SIDs to the BUILTIN and Account domains. (Eric Kohl)
  • Create the Administrator and Guest accounts in the SAM setup. (Eric Kohl)
  • Implement SamrLookupDomainInSamServer. (Eric Kohl)
  • Add registry helper functions. (Eric Kohl)
  • Store the domain name in a new Name attribute which is used by Sam(r)LookupDomainInSamServer. (Eric Kohl)
  • Implement SamrEnumerateDomainsInSamServer (buggy, probably a bug in WIDL), SamrQueryInformationDomain.DomainNameInformation, SamrCreateAliasInDomain, SamrOpenAlias and SamrAddMemberToAlias. (Eric Kohl)
  • Add more registry helper routines. (Eric Kohl)
  • Create builtin aliases upon setup. (Eric Kohl)
  • Implement SamrGetAliasMembership and SamrSetInformationAlias. (Eric Kohl)
  • Add stub for SamrQueryInformationAlias. (Eric Kohl)
  • SamrCreateAliasInDomain and SAM setup code: Set the description attribute for aliases. (Eric Kohl)
  • Implement SamrQueryInformationAlias and simplify SamrSetInformationAlias. (Eric Kohl)
  • SamrSetInformationUser: Implement most information classes. (Eric Kohl)
  • Implement all cases of SamrQueryInformationDomain. (Eric Kohl)
  • Store all fixed size domain attributes in the registry value "F". (Eric Kohl)
  • Initialize all domain attribute in SampCreateDomain. (Eric Kohl)
  • Implement missing cases of SamrSetInformationDomain. (Eric Kohl)
  • Use the fixed domain data to assign new RIDs in SamrCreateAliasInDomain and SamrCreateUserInDomain. (Eric Kohl)
  • Store all fixed size user attributes in the registry value "F". (Eric Kohl)
  • Initialize fixed size domain attributes in SampCreateUserAccount and SamrCreateUserInDomain. (Eric Kohl)
  • Implement most information classes of SamrQueryInformationUser. (Eric Kohl)
  • Disable all informationclasses of SamrSetInformationUser that store fixed size attributes. (Eric Kohl)
  • Implement SampGetObjectAttributeString to retrieve the size of a string, allocate a buffer and retrieve the string from the registry. (Eric Kohl)
  • Use SampGetObjectAttributeString to retrieve string attributes in SamrQueryInformationXxx functions. (Eric Kohl)
  • Add most missing cases to SamrQueryInformationUser. (Eric Kohl)
  • Fix a type mismatch in ntsam.h. (Eric Kohl)
  • Check if the name of a new account (alias, group or user) is used before the account is created. This check is needed because account names must be unique. (Eric Kohl)
  • Update zlib to version 1.2.7. (Vincenzo Cotugno; #7197)
  • Enable zlib into wininet. (Vincenzo Cotugno; #7197)
  • for details. (Vincenzo Cotugno; #7197)
  • Ensure that account names are not in use when a new alias, group or user is created. Return a proper status code if the account name is alread in use. (Eric Kohl)
  • Initialize logon/password related data for new user account objects. (Eric Kohl)
  • Add missing prototypes and user account control bits to ntsam.h (Eric Kohl)
  • These functions are used to free structures that were allocated by calls to Samr-functions. (Eric Kohl)
  • Make the SamIFree routines clean-up properly. (Eric Kohl)


  • Import SetupDuplicateDiskSpaceListA/W and SetupQuerySpaceRequiredOnDriveW from Wine 1.5.4. (Amine Khaldi)
  • Sync SetupCreateDiskSpaceListW with Wine head. (Sylvain Petreolle)
  • Fixes remaining setupapi:diskspace test failures. (Sylvain Petreolle)


  • Fix warnings in MSVC (Rafał Harabień)
  • Fix 64 bit MSVC build, fix some warnings (Timo Kreuzer)
  • SM Headers]: Fix a few typos. (Alex Ionescu)
  • Fix a bug I introduced in r55498 (Timo Kreuzer)
  • Spotted by Thomas (Timo Kreuzer)
  • Add drop shadows support for desktop (Rafał Harabień)
  • Set proper label color based on background color when drop shadows is disabled (Rafał Harabień)
  • Update desktop colors when WM_SYSCOLORCHANGE or WM_SETTINGCHANGE msg is received (Rafał Harabień)
  • Partially revert r54068. "My Video" is not a typo but name of registry value, which match Win2k3. (Rafał Harabień; #6568)
  • Prefix the local version.h and version.rc with shell32_. (Amine Khaldi)
  • Include the rgs resource files in a portable way. (Amine Khaldi)
  • Misses these. (Amine Khaldi)
  • Improve shortcut properties dialog. (Edijs Kolesnikovičs <terminedijs at yahoo dot com>; #6848)
  • Fix folder properties dialog. (Edijs Kolesnikovičs <terminedijs at yahoo dot com>; #6832)
  • Improve file properties dialog. (Edijs Kolesnikovičs <terminedijs at yahoo dot com>; #6829)
  • Improve drive properties dialog. (Edijs Kolesnikovičs <terminedijs at yahoo dot com>; #6833)
  • Fix redundant check (Pierre Schweitzer)
  • Clarify variable usage (Pierre Schweitzer)
  • Fix another local vs member variable issue. (Thomas Faber)
  • Remove trailing backslash in shellink working dir (Edijs Kolesnikovics (terminedijs at yahoo dot com); #7000)
  • Fix a trace message, noticed by Edijus (Timo Kreuzer)
  • Remove an unused variable. (Amine Khaldi)
  • Fix some typos from r54845. Fixes crash in shell32:shlexec test. (Thomas Faber)
  • Fix typo from r54845. Fixes crash in shell32:shlexec test. (Sylvain Petreolle)
  • Port CommandLineToArgvW fixes from Wine. Fixes crash in shell32:shlexec test. (Thomas Faber)
  • Fix what might finally be the last missing "this->" instances left over from the C++ conversion (used a regex this time) (Thomas Faber)
  • Fix yet another missing "this->", spotted by Igor Sudarikov (Thomas Faber)
  • CORE-6722 #resolve #comment Good catch, thanks. (Thomas Faber)
  • Beautify some code, plug icons leak and improve error handling (Jérôme Gardou)
  • cope with alpha channel when shortcut-overlaying an icon. (Jérôme Gardou)
  • CORE-6099 #comment Fixed by rev 57574 #resolve (Jérôme Gardou)






  • Register atl before anything else. (Amine Khaldi)
  • Register atl before anything else on rbuild builds too. (Amine Khaldi)
  • Call RtlCreateBootStatusDataFile as part of the install process. (Eric Kohl)
  • Even while I love having the trap/fpu/context code in C, the bugs this switch introduced continue to amaze me. This time, fix a bug from 45156 when KiFlushNPXState was rewritten in C. The C version could miss to restore the interrupt state, which would lead to interrupts being disabled when it was not expected. This "interrupt leak" was seen in the page fault handler if a page fault occurred after interrupts had been disabled (which had sometimes been observed to occur on the test server during exception handling and thread creation when KiFlushNPXState had been called). This didn't completely hang the system because during thread creation (and other system calls where this may have happened) interrupts would be re-enabled when returning to user mode when restoring eflags, and the exception handling would result in a system call which would enable interrupts again (it appears exception handler would have run with interrupts disabled, though!). This is now fixed, as well as any other issues this might have caused. The hack in the page fault handler remains until another issue has been fixed. (Stefan Ginsberg)
  • Add missing newline to debug print. (Stefan Ginsberg)
  • It seems the remaining page fault issue was fixed as well in 56333, so it should now be safe to enable this check. Finally, it is now illegal to page fault in ReactOS with interrupts disabled, as it should be. Previous attempts to fix this were likely hindered by the old memory manager, but ARM3 seems to do its job and doesn't fault on non-paged memory that I believe the old Mm was doing. (Stefan Ginsberg)
  • Hacks--; (Stefan Ginsberg)
  • There is no need for the i8042 driver to use a hacked KdSystemDebugControl call to breakpoint or crash on TAB+k/TAB+b. Just call DbgBreakPoint or KeBugCheck directly. (Stefan Ginsberg)
  • Set the account domain name and account domain sid by using LSA functions instead of the samlib hack. (Eric Kohl)
  • Re-add the call to SamSetDomainSid because the logon code in advapi32 still relies on it. (Eric Kohl)
  • Remove the now outdated call to SamSetDomainSid. (Eric Kohl)
  • Create builtin LSA accounts. (Eric Kohl)
  • Add privileges to the accounts. (Eric Kohl)
  • Remove all administrator account hacks. (Eric Kohl)
  • Register the newly imported msxml* dlls. (Amine Khaldi)
  • Use a writable buffer for lpCommandLine in CreateProcessW. Simplify starting of control panel applets. (Hermès Bélusca)
  • CORE-6570 #resolve #comment We need FishEye ;) (Hermès Bélusca)




  • Simplify AcquireRemoveRestorePrivilege. Improve clean-up & acquire privilege before unloading hive in CreateUserProfileW. (Hermes Belusca; #7160)
  • Implement stubs for userenv.dll. (Hermes Belusca; #7184)



  • fix a few winetest (Ben Pye (bfhben __ gmail __ com))
  • There are days like that, when you'd better refrain from commit anything. (Jérôme Gardou)
  • Stop using ObfXXX and IofXXX in C code. This is bad style. Always use the non-f versions in C code. (Stefan Ginsberg)
  • Fix the way we undefined IoCallDriver and IoCompleteRequest so existing and future code in irp.c will use the correct function when using the Io* versions. (Stefan Ginsberg)
  • Part 1 of 2. (Stefan Ginsberg)
  • Partial sync port Wine 1.5.4 for system.c. (James Tabor)
  • Researched branches/GSoC_2011/ThemesSupport and current changes before sync. (James Tabor)
  • Sync port up to Wine 1.5.4 and head. (James Tabor)
  • Add RegisterClassNameW to ComCtl32. (James Tabor)







  • Fix invalid AQ_WIN16 comparisons. Spotted by you-know-what. Fix taken from Wine. (Thomas Faber)
  • Remove ridiculous hack. (Thomas Faber)
  • Rewrite completely broken free_hostent and free_servent functions (Thomas Faber)
  • Readability improvements to check_hostent and populate_hostent (Thomas Faber)
  • Do not manually allocate an incompatible hostent structure in FindEntryInHosts. Use populate_hostent instead. Fixes buffer overflow in name resolution. (Thomas Faber; #7126)
  • Sync async.c to Wine 1.5.4. Fixes crash in ws2_32:sock (Thomas Faber)
  • Set last error inside getaddrinfo to properly mask some non-fatal errors generated by adns (Cameron Gutman)
  • Fix a memory overwrite bug in some crappy WINE code that leads to nasty memory corruption of the service cache entry. This corrupts the first field of the cache, causing it to always reallocate memory because it thinks the size is 0. This would be even worse if the code didn't overwrite the other 12 bytes of corruption with proper data on the next lines. This also caused the aliases value to be garbage because it pointed at uninitialized data. (Cameron Gutman)


  • Fix uninitialized variable usage warning, based on a (Edijs Kolesnikovics; #6828)











  • Check that we're not reporting the same device multiple times (Cameron Gutman)
  • Ignore resource producers when reporting resources (Cameron Gutman)
  • Properly tag alternate interrupt and DMA resources (Cameron Gutman)
  • Only iterate through the first dependent function (for now) (Cameron Gutman)
  • Remove remnant of old boot method. (Stefan Ginsberg)
  • Add translation code for ACPI_RESOURCE_TYPE_FIXED_IO (Cameron Gutman)
  • Handle the PNP0A08 in a couple of missed cases (Cameron Gutman)
  • Finally, PCI should work on systems that use the new PNP0A08 ID for identifying a PCI Express root bus (Cameron Gutman)
  • Fix a stupid string comparison mistake that lead to false positives in the duplicate device detection (1 and 10 detected as conflict) (Cameron Gutman)
  • Fast mutexes must be allocated from non-paged pool (Cameron Gutman)
  • Fix implementations of AcpiOsWaitSemaphore and AcpiOsAcquireMutex to obey the caller's demands to not block if requested (Cameron Gutman)
  • Increase the size of the ID buffers to fit certain non-standard IDs reported by Hyper-V on Windows 8. These should be allocated from pool, but this code really sucks and should be replaced anyway. (Cameron Gutman)
  • Fixes buffer overflow causing a bug check during boot on Hyper-V (Cameron Gutman)



  • Fix broken ASSERT (Stefan Ginsberg)
  • Fix usage of wrong (and uninitialized) variable in the Unicode case for PciGetDescriptionMessage. (Stefan Ginsberg)



  • Prevent an infinite loop in CdfsDeviceIoControl if the the verify request is successful but IoCallDriver keeps returning STATUS_VERIFY_REQUIRED (Cameron Gutman)



  • Keep a reference count for FCBs to prevent race conditions when closing multiple handles to the same pipe concurrently (Thomas Faber; #7205)
  • Acquire the pipe list lock in NpfsQueryDirectory to guard against concurrent deletion of pipes (Thomas Faber; #7205)
  • NTOSKRNL:IOMGR] (Thomas Faber)
  • Do not pass non-boolean Alertable values to KeWaitForSingleObject (Thomas Faber)
  • Fix some DPRINTs (Thomas Faber)
  • Do not fail for a valid buffer size in NpfsPeekPipe (Thomas Faber)
  • Do not read from an output buffer in NpfsPeekPipe (Thomas Faber)
  • Fix return status if no listening server found in NpfsCreate (Thomas Faber)
  • Do not use obsolete function MmGetSystemAddressForMdl (Thomas Faber)
  • Fix a few MSVC/GCC 4.7 warnings (Thomas Faber)
  • Correctly handle device/root FCB allocation failure (Thomas Faber)
  • Fix type of NPFS_CCB::RefCount (Thomas Faber)
  • Do not access ThreadContext after freeing it in NpfsWaiterThread (Thomas Faber)
  • Correctly update Vcb->EmptyWaiterCount when terminating in NpfsWaiterThread (Thomas Faber)
  • Fix more MSVC warnings, lots of DPRINTs (Thomas Faber)
  • Reset read and write events directly before waiting. Fixes an issue where a read could return 0 bytes if the previous read had read all available data without waiting (thus leaving the event set). (Thomas Faber)










  • All this file is a big hack and should be removed one day…" - Today is that day! setup.c is no more! (Cameron Gutman)
  • TXTSETUP.SIF] (Cameron Gutman)
  • Move keyboard drivers to the Keyboard.Load section (Cameron Gutman)







  • Fix broken IP address pointer arithmetic (CID 14130) (Thomas Faber)
  • Implement proper TDI way of indicating a reusable address file (Cameron Gutman)
  • More work remains in TCP/IP to support this (Cameron Gutman)
  • Fix a bug causing FIONREAD to return an incorrect value after a datagram receive completes when only returning a subset of the data (returns WSAEMSGSIZE) (Cameron Gutman)
  • Fix returning uninitialized data from FIONREAD when the socket is not bound or connected (Cameron Gutman)
  • Change AFD to a very aggressive buffering policy (Cameron Gutman)
  • It now attempts to keep its 64K receive buffer completely full at all times (Cameron Gutman)
  • This increases network performance significantly (Cameron Gutman)
  • Only access stack parameters when we're sure that the major function is correct (Cameron Gutman)
  • Fix some size assumptions that fail on 64-bit (Cameron Gutman)
  • Fix one of the worst bugs in AFD of all time. Our AFD code operated under the assumption that none of the input parameters would change once we called LockRequest. This assumption is completely false. The only guarantee that made was that the pages never disappeared from us, not they they couldn't be modified. There are frequent cases where the user-mode buffer was modified from underneath us (WSPRecv allocates the struct on stack which makes it invalid during overlapped operations that complete later). When this happened, we would bugcheck when we tried to unlock the buffers since we accessed this in a member of the struct the caller passed us. (Cameron Gutman)
  • I've fixed this by adding a parameter to LockRequest which specifies whether the buffer should be copied back when it is unlocked. (Cameron Gutman)
  • This bug has been around for ages and I was never able to figure out why we just freed garbage sometimes. Now that the ws2_32_winetest exposed it reliably, I was finally able to fix it. (Cameron Gutman)
  • Fix a bug causing the event passed to WSAEnumNetworkEvents to remain set after the call (Cameron Gutman)
  • Fix broken overlapped I/O on sockets (Cameron Gutman)
  • Mask out disabled events properly (Cameron Gutman)
  • Fix enabling of some event select triggers (Cameron Gutman)
  • Rewrite a large portion of the send code to have proper support for overlapped and non-blocking sockets (Cameron Gutman)
  • Fix handling pending writes in the TDI_SEND completion routine (Cameron Gutman)
  • Fix handling of IRP_MJ_READ and IRP_MJ_WRITE to allow passing sockets as parameters to NtReadFile and NtWriteFile (Cameron Gutman)
  • Try to fix MSVC build (Cameron Gutman)



  • Improve formatting, move function comments out of the function body and convert them to javadoc / doxygen style (Timo Kreuzer)
  • Add a "comment" that will notify whoever wants to compile this poc, to move the IoCompleteRequest out of the SEH block. (Timo Kreuzer)


  • Don't rely on the current lookahead size for loopback packets. Instead, indicate the entire packet at once. (Cameron Gutman)
  • The current lookahead size doesn't matter when indicating full packets. The packets are indicated in their entirety regardless of the lookahead size. (Cameron Gutman)
  • The Parallels Tools NIC driver now works on ROS. Dedicated to Alex Ionescu. (Cameron Gutman)
  • Fix some sickening formatting disasters (Cameron Gutman)
  • Allocate the unicode string buffers from paged pool, like everything else in the NDIS config API (Cameron Gutman)
  • Fix driver object dispatch table corruption in NdisMRegisterDevice (Cameron Gutman; #7191)
  • Remove spurious form feeds from NDIS code. (Lee Schroeder; #7310)
  • NdisReadConfiguration should return NdisParameterInteger for requests for NdisParameterHexInteger (Cameron Gutman)
  • Assert that conversion to integer from string does not fail (Cameron Gutman)
  • Always trigger the ISR function if MiniportInitialize or MiniportHalt is executing (Cameron Gutman)
  • CORE-6064 #comment Please try to replicate with DEBUG_ULTRA turned on in NDIS (Cameron Gutman)


  • Fix a crash when a NIC driver indicates the media state before we're expecting it (Cameron Gutman)
  • Fixes bug 6895 (Cameron Gutman)
  • Update the cached link and IP information when a link status change occurs (Cameron Gutman)
  • Move NtGdiSetBrushOrg from brush.c to dcobjs.c, since it doesn't really deal with brushes, but with the dc and is related to the brush seletcted into the dc. Cleanup, simplify and fix the function. (Timo Kreuzer)
  • rename IntptlBrushOrigin to DC_vSetBrushOrigin and also move it to dcobjs.c (Timo Kreuzer)
  • Implement support for SO_REUSEADDR (Cameron Gutman)
  • Fix a read-after-free. CID 716802. (Amine Khaldi)
  • WINGDI.H] (Jérôme Gardou)
  • Take the NOGDI define into account (Jérôme Gardou)
  • Implement proper support for partial sends on TCP sockets (Cameron Gutman)
  • This prevents a deadlock when a very very large packet is queued to be sent (Cameron Gutman)



  • Fix code designed to avoid touching the hardware if it is already owned (Cameron Gutman)


  • Experimental change to try to increase real hardware compatibility (Cameron Gutman)
  • Load both atapi and uniata and allow atapi to have priority and uniata will pick up devices that atapi doesn't like (Cameron Gutman)
  • Fix a bug in uniata enumeration (Cameron Gutman)
  • Back by popular demand, the storage driver to end all storage drivers, uniata! (Cameron Gutman)
  • I had forgotten how many issues atapi had itself and the hardware compatibility improvement (if there was one) was offset by lack of features (Cameron Gutman)


  • Fix 64 bit warnings (Timo Kreuzer)
  • Store the registry path passed in ScsiClassInitialize to pass in ScsiClassAddDevice (Cameron Gutman)
  • Clear the DO_DEVICE_INITIALIZING flag on the new device objects (Cameron Gutman)


  • Explicitly mark the functions as stdcall (NTAPI).. -mrtd changes the default calling convention, but name-decoration isn't affected by this. The -mrtd feature has its origin in some older linux-code-mode, and it's considered for removal in GCC 4.8. (Amine Khaldi)
  • Fix some warnings. (Amine Khaldi)
  • Fix some more warnings. (Amine Khaldi)
  • Make srb volatile, since it's assigned inside SEH and referenced in finally (Timo Kreuzer)




  • Don't stop enumerating functions of a PCI device if current function returned invalid vendor id. Also add a check for returned data size. This fixes detection of some storage controllers, e.g. Intel ICH8, ICH9, ICH10 chipsets. (Aleksey Bragin; #7147)
  • Thanks to Alter (UniATA author) for finding the problem and providing solution. (Aleksey Bragin; #7147)
  • Fix a regression from r56863. New logic is: the requested data size is sizeof(ULONG), so if the result read is less than that - continue to the next slot. Thanks to SomeGuy for pointing out the problem. (Aleksey Bragin; #7147)
  • Fix a critical bug in interrupt sharing between scsiport miniports and other drivers which caused scsiport to mask the interrupts from other devices sitting behind it (Cameron Gutman)
  • This commit and r57063 fixes bug 7231 (Cameron Gutman)


  • Don't compile nt4 compat driver for amd64 (Timo Kreuzer)
  • RTL] (Timo Kreuzer)
  • Fix RtlLengthSecurityDescriptor (Timo Kreuzer)
  • Fix pointer calculation in amd64 interlocked slist code (Timo Kreuzer)
  • Assert that the slist entry pointer is 16 byte aligned (Timo Kreuzer)
  • We proudly merge the first charge of the usb-bringup branch. We do want to stress hardware support is still under heavy development and testing in real hardware is experimental (Cameron Gutman)
  • Merge the Human Interface Device Stack(HID) which is used for mice / keyboards and other devices which use the USB interface, consisting of hidusb, hidparse, hidclass, mouhid, kbdhid (Cameron Gutman)
  • Merge the composite driver, supports USB composite devices, laid out in usbccgp (Cameron Gutman)
  • Merge the generic hub driver, which supports the USB root hub and in future USB hubs. Driver is usbhub (Cameron Gutman)
  • Merge the Open Host Controller Interface driver (ohci) (Cameron Gutman)
  • Merge the Enhanced Host Controller Interface driver (ehci) (Cameron Gutman)
  • Merge the many fixes in other areas of ReactOS needed for USB to work (ntoskrnl, pci, inf, umpnpmgr, usetup) (Cameron Gutman)
  • Special thanks goes the Haiku team, whose excellent code has provided a great base for the development of the new ReactOS USB / HID stack (Cameron Gutman)
  • The development of the USB stack has shown the great potential when ReactOS developers team up together to achieve a common goal. The involved developers are here, listed alphabetically: (Cameron Gutman)
  • Alex Ionescu (Cameron Gutman)
  • Amine Khaldi (Cameron Gutman)
  • Cameron Gutman (Cameron Gutman)
  • Johannes Anderwald (Cameron Gutman)
  • Michel Martin (Cameron Gutman)
  • Thomas Faber (Cameron Gutman)
  • Thomas Lotz(Haiku) (Cameron Gutman)
  • Let's start the ReactOS revolution (Cameron Gutman)
  • Merge r55564 and r55567 from usb-bringup-trunk (Cameron Gutman)
  • USB development should now be done in trunk exclusively (UHCI implementation may be an exception) (Cameron Gutman)
  • Disable support for external USB hubs until they are properly supported (Cameron Gutman)







  • Display errors when csw fails (Johannes Anderwald)
  • Rewrite error handling (Johannes Anderwald)
  • Check if CSW is valid (Johannes Anderwald)
  • Check if the error handling was already started (Johannes Anderwald)
  • Reset device if required (Johannes Anderwald)
  • Error handling was completely broken and did not follow the reset procedure as defined in USB Mass Storage Specification Bulk Only Section 5.3.4 (Johannes Anderwald)
  • Mass storage device now longer hang when receiving the read capacity request and ReactOS assigns a symbolic link (Johannes Anderwald)
  • Mass storage devices not yet fully working (Johannes Anderwald)
  • Fix build (Johannes Anderwald)
  • Implement timer routine which checks for hung srbs, not yet activated (Johannes Anderwald)
  • Stop timer when the device is stopped (Johannes Anderwald)
  • Implement function to check if the attached device is a floppy device (Johannes Anderwald)
  • Implement function to send read format capacity request (Johannes Anderwald)
  • Implement missing hardware id / device id support for floppy (Johannes Anderwald)
  • Add retry count parameter for debugging purposes (Johannes Anderwald)
  • Tested in VBox + VmWare + RH (Johannes Anderwald)
  • Fix build (Johannes Anderwald)
  • Only send read format capacity when the device type is zero (direct access device) (Johannes Anderwald)
  • Add fixme (Johannes Anderwald)
  • Queue inquriry & format capacity command with an irp (Johannes Anderwald)
  • Fix bugs introduced in rev 55695 (Johannes Anderwald)
  • Fix corruption of SCSI read format capacity by writing the LUN to the wrong location (Cameron Gutman)
  • Do not retry commands more than once (Johannes Anderwald)
  • Enable error handling in the data completion stage (Johannes Anderwald)
  • ReactOS binaries hold resource files to *all* the languages we support, which increases their size, and increases the memory footprint, and on top of that they become useless as soon as you select a language in the 1st stage installer. Introduce a way to compile ros with one localization so that we can compile ReactOS with only one localization, which eliminates the problem mentioned above, and allows us to reduce the compile time, the disk space needed for build, and the runtime memory footprint. (Amine Khaldi)
  • The default build will continue to include all the localizations, but you can set it otherwise through a cmake variable (I18N_LANG) at configure time. (Amine Khaldi)
  • Brought to you by Team Localization (Kamil Hornicek and Amine Khaldi) ;) (Amine Khaldi)
  • Deny removal to fix a race with the legacy disk class driver (Cameron Gutman)
  • Add forgotten storage of the LUN in the PDO extension which not only broke units beyond LUN 0 but also caused a BSOD due to reporting duplicate devices to the PnP manager (Cameron Gutman)
  • Thanks to tower for reporting (Cameron Gutman)




  • Silence some debug info. (Amine Khaldi)
  • Fix broken "pointer arithmetics" (Timo Kreuzer)
  • Properly handle interrupt sharing for InterruptSyncModeAll and InterruptSyncModeRepeat (Cameron Gutman)
  • Fix Pin_fnFastWrite return value in failure case. (Vincenzo Cotugno)


  • Implement IrqlToSoftVector() macro and use it in HalRequestSoftwareInterrupt, so that on amd64 the correct interrupt is triggered. (Timo Kreuzer)
  • Really start at the lowest vector for the IRQL in HalpAllocateSystemInterrupt (Timo Kreuzer)
  • Small code refactoring (Timo Kreuzer)
  • Do not truncate PCI device names in debug dump; misc fixes (Thomas Faber)
  • Fix syntax, (Victor Martinez)
  • Don't send a bogus bus number (-1) to the PCI driver because then it tries to scan that bus and obviously doesn't find anything (Cameron Gutman)
  • Legacy HAL can now enumerate boot critical PCI devices (like the USB controller) and build the device stack for USB boot (Cameron Gutman)
  • Fix MSVC / 64 bit warnings (Timo Kreuzer)
  • Leverage the object library option provided by CMake 2.8.8+ which will speed up the build even further. (Amine Khaldi)
  • Compared strings using STREQUAL. (Amine Khaldi)
  • These wrapping conditions will go away as soon as we ship the new BE. (Amine Khaldi)
  • Don't compile lib_hal_pic for x64. Brought to you by Hermès Bélusca. (Amine Khaldi; #7309)
  • Automatically generate the embedded PCI database. By Hermès Bélusca with improvements from me. (Amine Khaldi)
  • CORE-6654 #resolve #comment Patch committed. Thanks ! (Amine Khaldi)




  • Modify syscall stub macros to be compatible with the new amd64 stubs (Timo Kreuzer)


  • Fix multiple free in msvcrt_free_io. Fixes VLC Player crash on exit. Wine already has it right. (Thomas Faber)
  • Fix 64 bit build of MSVCRT (Timo Kreuzer)
  • Use some definitions only for vista+, since 2k3 msvcrt doesn't have them (Timo Kreuzer)
  • Add amd64 stubs for acos and acosf (Timo Kreuzer)
  • Check for NULL before freeing (Jérôme Gardou)
  • C standard for free says "if pointer is NULL, no action is taken". (Jérôme Gardou)
  • MSDN for HeapFree says "if pointer is NULL, behavior is undefined". (Jérôme Gardou)
  • Thanks to Thomas for teaching wine guys how to read. (Jérôme Gardou)
  • fix array size to match what implementation expects. (Jérôme Gardou; #6903)
  • Found by Thomas Faber. for details. (Jérôme Gardou; #6903)
  • Sync startup code with mingw-w64, reduce difference a bit, remaining changes were passed upstream (Timo Kreuzer)
  • Fix warnings (Timo Kreuzer)
  • Fix declaration of malloc_func_t and free_func_t. Already sent upstream(TM) (Thomas Faber)
  • Add startup code to CRT (Timo Kreuzer)
  • Fix a bug in streamout() causing "%.*s" to crash when the buffer was not zero terminaed. Found by Thomas Faber. (Timo Kreuzer)
  • Implement _vsc(w)printf for msvcrt (Jérôme Gardou)
  • NTDLL] (Vincenzo Cotugno; #7085)
  • Separate some _CI* functions into their own files and export them from ntdll. (Vincenzo Cotugno; #7085)
  • if out some intrinsics in msc/intrin.h that don't exist on ARM (Timo Kreuzer)
  • Add _crt_va_start, _crt_va_arg and _crt_va_end for ARM (Timo Kreuzer)
  • Fix typo (Thomas Faber)
  • Use wine's wctype table in CRT for iswctype() function. Previous implementation was returning incorrect information for non-Latin characters. Problem found and fixed by Sergey Shamanaev (seven_ro). (Aleksey Bragin; #5090)
  • Move wctype.c from libwine to lib/sdk/crt instead of making yet another copy of it (currently there is one more in tools/unicode). Suggested by Amine Khaldi. (Aleksey Bragin; #5090)
  • Fix build. (Amine Khaldi)
  • Fix some UNICODE vs non UNICODE definition mess. (Jérôme Gardou)
  • Declare variables extern. (Dmitry Gorbachev)
  • Fix some MSVC warnings (Timo Kreuzer)
  • Comment out files with duplicated functions (Timo Kreuzer)
  • See CORE-6684 (Timo Kreuzer)
  • Fix rostests build (Timo Kreuzer)
  • Implement mbstowcs_s. passes all crt apitests. (Timo Kreuzer)
  • Implement _mbsnlen, _mbstrnlen (Timo Kreuzer)
  • Implement wcstombs_s (Timo Kreuzer)
  • Fix build (Timo Kreuzer)
  • Fix an MSVC warning in _ui64tow_s (Timo Kreuzer)
  • Use a temporary buffer to parse the program's arguments, instead of using (and thus overwriting) the _a/wcmdln variable. (Hermes BELUSCA - MAITO)
  • Fix msvcrt_apitest:CommandLine test. (Hermes BELUSCA - MAITO)
  • CORE-6717 #comment Fixed in revision r57536. #resolve (Hermes BELUSCA - MAITO)


  • Update wdm.h, ntifs.h and ntddk.h to reflect the recent XDK changes. (Amine Khaldi)
  • Update ndis.h annotations. (Amine Khaldi)
  • Update usbbusif.h, usbdlib.h and usbscan.h annotations. (Amine Khaldi)
  • Update hidclass.h and hubbusif.h annotations. (Amine Khaldi)
  • Update classpnp.h annotations. (Amine Khaldi)
  • Update bdasup.h annotations. (Amine Khaldi)
  • portcls.h: Don't check for non existing NTDDI_WIN2003. (Amine Khaldi)
  • Update drmk.h annotations. (Amine Khaldi)
  • Update csq.h annotations. (Amine Khaldi)
  • Update dmusicks.h annotations. (Amine Khaldi)
  • Fix a whole fat bunch of Prefast warnings by making the IoCsqxxx declarations in csq.h match the ones in wdm.h. (Stefan Ginsberg)
  • ndis.h Don't use local variables with the same name as function parameters. (Stefan Ginsberg)
  • Prepend "_" to local variable of NdisChainBufferAtBack. Fixes code in ndisuio that called this using the same name as the macro's variable (which resulted in NdisChainBufferAtBack assigning the variable to itself). (Stefan Ginsberg)
  • Mark KeBugCheckEx as noreturn again. Should fix Prefast issues where it thought execution could return from the call and would warn about false issues. (Stefan Ginsberg)
  • Fix release build? (Pierre Schweitzer)
  • Add netioddk.h. (Amine Khaldi)
  • Add generic rights for aliases, domains, SAM server and users. (Eric Kohl)
  • Add generic and specific rights for groups. (Eric Kohl)


  • Properly define RTLP_CURDIR_REF (Pierre Schweitzer)
  • LDR_CALLBACK's second parameter is a PCHAR. (Alex Ionescu)
  • D'oh. (Alex Ionescu)
  • add MM_SHARED_USER_DATA_VA (Timo Kreuzer)
  • Add PsGetProcessSessionId prototype (Timo Kreuzer)
  • Remove duplicated RtlWow64Get/SetThreadContext prototypes (Timo Kreuzer)
  • Add definition of PWOW64_CONTEXT (Timo Kreuzer)
  • Add NoExecute Flags based on ProcessHacker. (Alex Ionescu)
  • No longer spammed to death for every process all the time. (Alex Ionescu)
  • Fix completely messed up SYSTEM_PROCESS_INFORMATION and SYSTEM_THREAD_INFORMATION classes, which were causing the kernel to return totally wrong data for NtQuerySystemInformation(SystemProcessInformation). Fixes Winetests, I assume Taskmgr, and other similar system tools. (Alex Ionescu)
  • Add missing type to NDK. (Alex Ionescu)
  • Fix declaration of HalPrivateDispatchTable for FreeLDR. (Dmitry Gorbachev)
  • Update readme.txt and commit the license files which were never in the repository for some reason. (Alex Ionescu)
  • Transfer copyright to Alex Ionescu. (Timo Kreuzer)
  • Remove obsolete file (Timo Kreuzer)
  • Clarify copyright granting and attribution requirements in NDK readme. (Alex Ionescu)
  • Add missing definitions (Johannes Anderwald)
  • Enable debugging for testbot (Cameron Gutman)
  • Don't C_ASSERT some struct sizes on 64 bit builds (Timo Kreuzer)
  • Make KTHREAD structure compatible to WS2003, Vista and Win7 for both x86 and amd64 (Timo Kreuzer)
  • Add structure layout tests for KTHREAD (Timo Kreuzer)
  • A number of fixes for Vista/Win7, now all C_ASSERTs pass (Timo Kreuzer)
  • Fix name of ETHREAD::KeyedWaitSemaphore (Timo Kreuzer)
  • Reorder some amd64 msr constants (Timo Kreuzer)
  • Add PsJobType, LpcPortObjectType (Thomas Faber)
  • Remove RtlDoesFileExists_UstrEx (Thomas Faber)
  • Missing define. (Alex Ionescu)
  • Add missing rtl bitmap functions (Timo Kreuzer)
  • if out NtCurrentTeb() inline function for ARM, it's implemented in ARMLIB (Timo Kreuzer)
  • Fix a typo (Timo Kreuzer)
  • Remove exception flags, they are defined in both winnt.h and wdm.h (Timo Kreuzer)
  • Declare most of the heap functions only for user mode (Timo Kreuzer)
  • Remove duplicate RtlGetNtGlobalFlags() (Timo Kreuzer)
  • forgot this ,sorry. (Alex Ionescu)
  • Add LdrEnumResources() and _LDR_ENUM_RESOURCE_INFO, fix _LDR_RESOURCE_INFO (Timo Kreuzer)




  • Add ACF and IDL file for the SAM RPC interface. (Eric Kohl)


  • Do not push memory operands with ESP as the base register (can happen when compiling with some GCC options), load arguments into registers. (Dmitry Gorbachev)
  • Fix formatting. (Dmitry Gorbachev)
  • Fix a serious bug in PSEH that could lead to stack corruption and was causing CSRSS to crash, when large amounts of text were output on the console. (Timo Kreuzer)
  • Background: PSEH used __builtin_alloca to allocate an SEH registration frame on the stack on demand, ie only for the first try level. But there are some nasty things with __builtin_alloca: First it DOES NOT - as one might think - free the allocated memory, once the allocation "goes out of scope", like with local variables, but only on function exit. Therefore it cannot normally be used inside a loop. The trick that PSEH used to "fix" this problem, was to save the stack pointer and reset it back at the end. This is quite problematic, since the rest of the code might assume that the stack pointer is still where it was left off after the allocation. The other thing is that __builtin_alloca() can allocate the memory whenever it likes to. It can allocate everything on function entry or not allocate anything at all, when other stack variables that went out of scope have left enough space to be reused. In csrss it now happened that the allocation was done before the stack pointer was saved, so the memory could not be freed by restoring the old stack pointer value. That lead to slowly eating up the stack since the code was inside a loop. (Timo Kreuzer)
  • The allocation is now replaced with a variable sized array. The variable stays in scope until the _SEH2_END and will be automaticall cleaned up by the compiler. This also makes saving and restoring the stack pointer obsolete. (Timo Kreuzer)
  • Reliability++ (Timo Kreuzer)
  • Do not duplicate header files. (Vincenzo Cotugno)
  • Remove svn:keywords properties. (Sylvain Petreolle)


  • Remove unneeded initialization code, and move Win32k.sys related initailization to win32csr. Note that the "VDM IVT" stuff should move to videoprt's handler for IRP_MJ_CREATE, and opening the "\\DISPLAY1" needs to go in Win32k.sys (under NtUserInitialize I think). (Alex Ionescu)
  • BOOT REGISTRY]: Cleanup subsystem entries to match Windows. (Alex Ionescu)
  • Code formatting only. (Hermes BELUSCA - MAITO)





  • Fix incorrect socket validity check that fails for unsigned types (Cameron Gutman)



  • Fix 64 bit / MSVC warnings (Timo Kreuzer)
  • Great job -- crashing trunk on a pool tag just so people can be forced to know what it is. Change the registry pool tag from "th" (wtf?) to "CM25" which is a bit closer to Windows. In reality all of TAG_CM should be broken out in many more pieces. Fixes boot breakpoint. (Alex Ionescu)
  • Hermes Belusca: Fix wrong definition of CMHIVE structure (defined only 3 FileHandles when 4 is needed). (Aleksey Bragin; #7162)
  • Revert 56884, as Timo says 3 is a correct value for this structure. (Aleksey Bragin)
  • Remove unused HFILE_TYPE_ALTERNATE. (Aleksey Bragin; #7162)
  • Reapply changes from r56884: Hermes Belusca: Fix wrong definition of CMHIVE structure. (Aleksey Bragin; #7162)
  • Forgot part of last patch. (Alex Ionescu)




  • Do not complete IRP while likely holding a spinlock (Thomas Faber)



  • Favor routers that have responded to our ARP queries during route selection (Cameron Gutman)







  • Fix formatting FAT or NTFS volumes into EXT2 by defining ZAP_BOOTBLOCK and fixing a bug in zap_sector() (Cameron Gutman)


  • Remove inflib because it has been replaced by newinflib. (Eric Kohl)








  • Fix returning uninitialized status (CID 15086) (Rafał Harabień)
  • Fix some DPRINTs. Spotted by VS11. (Thomas Faber)
  • Refactor KeUpdateSystemTime, improving readability, fixing a concurrency issue and fixing the code for 64 bit. (Timo Kreuzer)
  • Remove some redundant definitions now that they've been added in r55220. Fixes build. (Amine Khaldi)
  • MSADP32.ACM] (Amine Khaldi)
  • Sync to Wine 1.3.37. (Amine Khaldi)
  • Laa-a-a-a-dies and gentlemen..... (Alex Ionescu)
  • For your unique, viewing and executing pleasure.. (Alex Ionescu)
  • For one time popular demand.... (Alex Ionescu)
  • The one... (Alex Ionescu)
  • The only... (Alex Ionescu)
  • The unforgettable, unforgivable... (Alex Ionescu)
  • Meanest, baddest, piece of code around... (Alex Ionescu)
  • He's back..... with a vengeance... (Alex Ionescu)
  • The ultimate... (Alex Ionescu)
  • Mega... (Alex Ionescu)
  • Uber.. (Alex Ionescu)
  • Amazing... (Alex Ionescu)
  • HACK (Alex Ionescu)
  • OF (Alex Ionescu)
  • applause> (Alex Ionescu)
  • Laa-a-a-a-dies and gentlemen..... It was a deferred success. Move along mes chers, you make the place look crowded. (Amine Khaldi)
  • hubris [ˈhjuːbrɪs], hybris n. (Alex Ionescu)
  • 1. Belief that Ob is perfect. (Alex Ionescu)
  • Fix a major bug which allowed user-mode applications to get kernel handles if they so requested -- of course, they woudl then be completely unable to use such handles. This pattern is seen in Rtl code which we share, and where the intent is to give kernel kernel handles, and user user handles, so OBJ_KERNEL_HANDLE is unconditionally used, which in NT had the right effect. For us though, it gave unusable user-handles. This had the direct effect of completely breaking RtlQueryRegistryValues from user-mode if the TOPKEY or SUBKEY flags were used. (Alex Ionescu)
  • One of my favorite bugfixes to date: While working on SMSS2, I notice that Win32->NT path conversion is failing and %SystemRoot% is not being translated. Yet, this is supposed to be part of the core environment that the kernel sends to SMSS! I analyze the old SMSS, and in there, it works. Puzzled, I DPRINT1 out the environment only to see that it is empty. I do the same in the kernel -- empty! The old SMSS is currently manually regenerating its critical environment, as if the kernel never sent it (which perfectly hid the bug that our kernel...actually did never send it!). But why were we sending no environment? It turns out our environment string was 0x10000 bytes, just one byte longer than MAX_USHORT and overflowing back to zero -- hence our Appends were all silently failing. But why was our environment string 0x10000, when we allocate 0x1000 bytes only? And here comes the Mm bug. When you allocate virtual memory in Windows you are forced to use 64K alignment, and Windows internally will align the VAD on a 64K boundary. In ReactOS however, we actually allocate, map, and reserve a full 64K memory area, as well as actually modify the region size that the caller has sent, returning the caller a 64K-aligned size no matter what (whereas Windows would return the original 4KB size). I've thus added a simple hack which still allocates a full 64K memory area (who knows what would break if not), but only aligns the region size to a page size -- less swap pages are reserved, and the caller only receives a page-aligned region, instead of 64K. This now fixes ExpLoadInitialProcess and anyone else that was requesting a 4KB page and getting 64KB in exchange... (Alex Ionescu)
  • Here's another gem. SMSS2 couldn't call LdrVerifyImageCheckSum, nor could it create Known DLL sections (of course, magically SMSS could). Turns out what Mm expects in terms of file access rights when you map a section has almost nothing to do with what it should expect. Added a new function to ARM3 (which had most of the code there already) so correctly determine which file access rights should be needed. One big change is that you can now map sections with PAGE_EXECUTE if you only have FILE_EXECUTE (FILE_READ_DATA no longer required), as things should be. (Alex Ionescu)
  • Keep doing the old region/swap work incorrectly, but at least return a correct size. Let's see if this fixes it. (Alex Ionescu)
  • Fix MSVC build. (Amine Khaldi)
  • Rewrite MmFindGapBottomUp and MmFindGapTopDown, the old versions were broken and were first checking the address range after the first memory area and only used the area below (above) the first memory are when nothing free was found. (Timo Kreuzer)
  • Fix an ASSERT, that gets triggered now that the memory areas are created at the "right" locations (Timo Kreuzer)
  • Create a memory are for the boot loaded images, which previously could be overwritten happily by new memory areas, which was only prevented by the brokenness of the code (Timo Kreuzer)
  • Fix a few memory regions so that they are correct for amd64 builds as well (Timo Kreuzer)
  • Fix gcc build (Timo Kreuzer)
  • Fix a bug in CmpSetSystemValues, where an uninitialized handle would be closed in the failure path. (Timo Kreuzer)
  • Add a hack on top of the MI_GET_ROS_DATA(x) hack so that we can squeeze a pointer into a 32 bit field. (Timo Kreuzer)
  • Make MmInitializeProcessAddressSpace amd64 ready and use a portable way to determine the page table base pfn in MiInitializeWorkingSetList (Timo Kreuzer)
  • Make MmProbeAndLockPages ready for 3 and 4 level page tables (Timo Kreuzer)
  • add MiIsPteOnP*eBoundary macros - use these in MmProbeAndLockPages (Timo Kreuzer)
  • Raise IRQL to SYNCH_LEVEL not DISPATCH_LEVEL in KiAcquireDispatcherLock (Timo Kreuzer)
  • Add MiNonPagedSystemSize for all architectures (Timo Kreuzer)
  • Fix amd64 definition of KERNEL_HANDLE_FLAG (Timo Kreuzer)
  • Fix definition of PrototypePte (Timo Kreuzer)
  • Fix KiGetLinkedTrapFrame() (Timo Kreuzer)
  • Make MmProtectTpPteMask 64 bit wide (Timo Kreuzer)
  • Fix definition of MI_PTE_LOOKUP_NEEDED for amd64 (Timo Kreuzer)
  • Impllement KiSendEOI() to be able to send an EOI from C code. (Timo Kreuzer)
  • Fix some MSVC/amd64 warnings (Timo Kreuzer)
  • Handle _MI_PAGING_LEVELS >= 3 in MiBuildPagedPool and MmArmAccessFault (Timo Kreuzer)
  • Rewrite SeCaptureSecurityDescriptor. The old code was mess and totally broken for 64 bit. (Timo Kreuzer)
  • Many fixes to security descriptor code that was making wrong assumptions about the SECURITY_DESCRIPTOR structures (Timo Kreuzer)
  • Modify MiRosTakeOverPebTebRanges to only create a memory area for the shared user page and rename it to MiRosTakeOverSharedUserPage. Previously it was creating a memory area for the whole region from USER_SHARED_DATA up to MM_HIGHEST_USER_ADDRESS, which is the majority of the x64 user mode address space and doesn't even contain the PEB/TEB. Those are allocated below the shared user page and get their memory areas created in MiInsertNode. (Timo Kreuzer)
  • Add amd64 versions of MmGetPageTableForProcess, MmUnmapPageTable, MmGetPageFileMapping (Timo Kreuzer)
  • Add MM_HAL_VA_END and use it in MiAddHalIoMappings instead of making assumptions about the page tables (Timo Kreuzer)
  • Add MM_SHARED_USER_DATA_VA for x86 (Timo Kreuzer)
  • use MM_SHARED_USER_DATA_VA in Mm to avoid ambiguities (Timo Kreuzer)
  • fix or comment out USER_SHARED_DATA in asm headers, as it should be the kernel mode address here (Timo Kreuzer)
  • set Teb->ExceptionList to NULL on amd64, it is used as a link to the Wow64 TEB, if any (Timo Kreuzer)
  • In PeFmtCreateSection don't use the ImageBase field of the ImageOptionalHeader directly, since it's different between PE32 and PE64. Use the ImageSectionObject->ImageBase field instead, which already contains the correct value. (Timo Kreuzer)
  • Partly implement NtAreMappedFilesTheSame... (Alex Ionescu)
  • Finish implementation of NtAreMappedFilesTheSame based on what winetests revealed. Should fix all 20+ winetests in this area, on top of making Ldr suck less. (Alex Ionescu)
  • Implement MiSynchronizeSystemPde, which does what its name suggests, synchronize a system PDE and is an improved replacement (with a more proper name) for MiCheckPdeForPagedPool (Timo Kreuzer)
  • Move some code to avoid an additional check (Timo Kreuzer)
  • Call MiResolveDemandZeroFault directy instead of creating a demand zero PDE and then calling MiDispatchFault, which after a lot of checks will finally do the same (Timo Kreuzer)
  • Modify the logic in MmArmAccessFault, so that faults on kernel mode addresses including page table addresses are handled in the first part and user mode addresses (VADs) in the second part. This works, because for the special case of page table addresses, the user mode and kernel mode part of the code end up doing the same thing and this simplifies the code. (Timo Kreuzer)
  • In the user mode part call MiCheckVirtualAddress early and bail out if no VAD is found, since we do not care about any other cases any more. (Timo Kreuzer)
  • Add a modification that I missed to apply. (Timo Kreuzer)
  • Assert that reference counts are sane in MmReferencePage and MmDereferencePage (Cameron Gutman)
  • Handle 3 and 4 level page tables in MmArmAccessFault (Timo Kreuzer)
  • Stubplement SystemSessionCreateInformation (it allocates a real Session ID and sets the right EPROCESS flags). Nobody uses this yet (future SMSS2 will). (Alex Ionescu)
  • Stub-plement SystemSessionDetachInformation. (Alex Ionescu)
  • Implement MiIsUserP*e inline functions to efficiently determine if a pte is a pte/pde/ppe or pxe for a user mode page (Timo Kreuzer)
  • Make MiDetermineUserGlobalPteMask work for _MI_PAGING_LEVELS >= 3 (Timo Kreuzer)
  • In MiResolveDemandZeroFault, use MI_MAKE_HARDWARE_PTE only, it does all the necessary work. (Timo Kreuzer)
  • Fix a FIXME in IopCreateArcNames. (Pierre Schweitzer)
  • This allows ntoskrnl to find where it boots from and where it is when performing remote boot. (Pierre Schweitzer)
  • Now ReactOS should boot a bit farther using PXE :-). (Pierre Schweitzer)
  • grmbl* (Pierre Schweitzer)
  • s/UINT_MAX/ULONG_MAX/g (Pierre Schweitzer)
  • grmbl* (Pierre Schweitzer)
  • Implement amd64 version of MmDeleteProcessPageDirectory (Timo Kreuzer)
  • Fix amd64 build (Timo Kreuzer)
  • Use MiNonPagedSystemSize when creating the system NP memory area instead of making assumptions about the memory layout (Timo Kreuzer)
  • Finally the amd64 port boots into usermode and usetup is partly working, formats the harddisk but freezes, when copying files. (Timo Kreuzer)
  • IoCreateSymbolicLink -> IoAssignArcName (Pierre Schweitzer)
  • Use proper macro for getting PDE from PTE. (Jérôme Gardou)
  • Change screen debug background to black for improved readability as per Johannes' request (Cameron Gutman)
  • Implement NtSetInformationObject(ObjectSessionInformation). (Alex Ionescu)
  • Implement NtQueryInformationProcess(ProcessLUIDDeviceMapsEnabled). (Alex Ionescu)
  • Null-terminate command before copying it to LastCommand buffer. (Rafał Harabień)
  • One can't only use MEM_COMMIT for reserving memory (Jérôme Gardou)
  • Don't enumerate the root bus via the firmware mapper because HAL no longer sucks and it will do it properly for us (Cameron Gutman)
  • This is kind of embarssing, but after doing a local grep for some of cgutman and zekflop's changes (respectively the patch that had added MmDeleteProcessPageDirectory, and the mshtml fix patch), I fell upon a .patch file. It included 3 memory-leak-fixing patches from richard that had been sent to me during his last days -- which, had I paid attention, would've fixed the MSHTML bug and the memory leaks months ago! I've tried my best to now re-integrate a portion of the patch (the other two portions deal with freeing the loader block, and freeing .INIT sections, and I will commit them later) with the current state of trunk. Some things that patch did, no longer seem to work, and I've commented where appropriate. But in general it does seem to dereference/delete some PTEs that had been left behind before (such as deleted TEBs, and deleted VA mappings). It no longer seems to be able to delete the root PDE nor the shared data page however (this worked in the original patch's timeframe). Zekflop, tkreuzer, please take a look. I hope this will set us on a better path! (Alex Ionescu)
  • This second part of Richard's patch implements MmFreeLoaderBlock, which results in 932KB less RAM being used on my 3rd stage test after first boot. It deletes the boot registry, NLS, and heap data. (Alex Ionescu)
  • And finally, the third part of Richard's patch, cleaned up and ready to go. This cleans up the INIT and SCN_MEM_DISCARDABLE sections from all drivers and the kernel. Reduces RAM usage by another 350KB on my test box. (Alex Ionescu)
  • KdInitSystem may be called after system set up if /CRASHDEBUG is enabled and a bugcheck or NMI occurs. With the INIT discard/delete now implemented, and KdInitSystem marked for INIT, this would have resulted in a crash...during a system crash, if /CRASHDEBUG had been enabled. Fun. (Stefan Ginsberg)
  • Implement SeCheckPrivilegedObject and call it in the two cases where it's needed (when changing process priority) instead of spamming the debug log that we're not doing the check. (Alex Ionescu)
  • Implement ProcessUserModeIOPL info level (and implement Ke386SetIopl) instead of spamming we can't do this. (Alex Ionescu)
  • Implement ProcessExecuteOptions info level (and implement MmSetExecuteOptions) instead of spamming we can't do this. (Alex Ionescu)
  • When you rewrite my ASM code, get it right, dumbasses. Thanks Stefan. (Alex Ionescu)
  • Implement ThreadBreakOnTermination for the SET case. (Alex Ionescu)
  • Cleanup some dbgprints. (Alex Ionescu)
  • Missed these guys. (Alex Ionescu)
  • Make Trap debugging usable again. Suggested by Stefan. (Thomas Faber)
  • Fix KiEnterV86Mode's check for TRAP_DEBUG to #if instead of #ifdef, it is either defined to 1 or 0, like DBG. (Stefan Ginsberg)
  • The ExitTime in ETHREAD is unionized and only valid if the thread actually exited, so don't always return the raw value -- return 0 if the thread is still alive. Fixes code which uses ExitTime != 0 to tell if a thread is still alive or not -- everyone always thought all ReactOS threads are always dead. (Alex Ionescu)
  • Fix a crash in KiSystemCall that was caused because PsConvertToGuiThread may have switched to a large kernel stack, but still returned with failure because win32k did not succeed. To fix it reload the trap frame after the call before checking for success. (Giannis Adamopoulos)
  • Fix ntdll:om winetest. When querying for filenames if the caller did not specify a buffer large enough (which they normally don't, initially), we would just fail but not tell them how large to request it (so they'd get back an uninitailized huge value). (Alex Ionescu)
  • NtQuerySystemInformation(SystemProcessInformation) should skip zombie processes, and it should use the KTHREAD ThreadListEntry, not the ETHREAD ThreadListEntry. Fixes winetest since Idle Threads are int he former, not the latter (verified and Windows does this too). (Alex Ionescu)
  • Implement ProcessDebugObjectHandle and a bunch more query/set process classes. Fixes Winetests. (Alex Ionescu)
  • We should not be setting *ReturnLength in most failure cases, so no longer do so. Fixes Winetests. (Alex Ionescu)
  • MOV CRX, YYY and MOV YYY, CRX, as well as the DR equivalents were not correctly detected as privileged instructions in the GPF handler. Fixes Winetests. (Alex Ionescu)
  • The "Write" bit in the x86 Error Code is not bit 1, it is bit 2. Fix all the GPF handlers to check for bit 2 instead when determining if an exception was due to read or write. Fixes Winetests. (Alex Ionescu)
  • I'll say it nicely this time for Timo: when you rewrite ASM, do it carefully :) (Alex Ionescu)
  • Fix the zombie fix. Should fix toolhelp tests. (Alex Ionescu)
  • If you're going to fake success when doing access checks, also grant the rights that would normally be refused, for consistency's sake. Should fix a bunch of the kernel32:synch tests (which have nothing to do with synch...). (Alex Ionescu)
  • First check if a driver object exists before trying to load the service module to properly handle boot drivers (Cameron Gutman)
  • Create the DeviceClasses key necessary for device interfaces to be registered successfully in 1st stage (Cameron Gutman)
  • This may not be the correct place to do this so anyone is free to move it (Cameron Gutman)
  • Fix copy paste error (Cameron Gutman)
  • Silence a warning (Cameron Gutman)
  • Unsilence 2 warnings (Cameron Gutman)
  • Add prints to unloading functions because things seem very wonky here (Cameron Gutman)
  • This exposes some previously unknown behavior of fastfat actually being unloaded in early boot (with uniata and buslogic failing unload due to missing DriverUnload) (Cameron Gutman)
  • Some misc fixes to make kernel compile warning-free with /W3. Also fix a bug that completely broke the ProcessWx86Information case for NtQueryInformationProcess by missing to reference/dereference and acquiring the specified process' EPROCESS. (Stefan Ginsberg)
  • Missed this one... (Stefan Ginsberg)
  • Add back the reset hack of doom to circumvent broken removal code in just about every driver (Cameron Gutman)
  • Fix device node flag corruption (Cameron Gutman)
  • Reenable and fix the correct reset code (Cameron Gutman)
  • Remove nasty hack to make Windows PCI driver load. This may not be required after the fixes that were committed after this hack. If it is still necessary then please fix whatever issue makes the PCI driver crash instead of relying on a return from bugcheck call to work... (Stefan Ginsberg)
  • Set the SYNCHRONIZE flag in desired access when opening a registry hive for synchronous I/O (Cameron Gutman)
  • WIN32K][FTP] (Dmitry Gorbachev)
  • Fix some variables. (Dmitry Gorbachev)
  • This should not fix anything. (Alex Ionescu)
  • Drop the reference on the PDE for kernel stack pages being deleted, now that zekflop has made all PDEs ARM3-owned. (Alex Ionescu)
  • Don't assert if there's no VAD found in NtFreeVirtualMemory... perhaps a wrong address was used on purpose (such as during a Winetest). Simply do what ROS does when a MAREA is not found and return failure. However if a VAD *was* found, keep all the other ASSERTs... (Alex Ionescu)
  • Fix kernel memory corruption when a driver fails to initialize (Cameron Gutman)
  • Fix a handle leak in a failure case (Cameron Gutman)
  • Change MmDereferencePage to MmReleasePageMemoryConsumer to do proper page usage tracking (Cameron Gutman)
  • Remove an unnecessary reference and dereference (Cameron Gutman)
  • Fix PDE reference counting (Cameron Gutman)
  • Now only the recursive fault remains as an issue in the page out path (Cameron Gutman)
  • Fix linking of device children to respect the enumeration order instead of linking in reverse enumeration order (Cameron Gutman)
  • PCI cards (and other devices) now enumerate in the correct order (Cameron Gutman)
  • Fix broken UsedPageTableEntries/page table ref counting ASSERTs. The reference can be UP TO 1024, inclusive, but no more. This might fix a bunch of assertions related to this. Thanks to Richard for catching this one during his VAD work. (Alex Ionescu)
  • Add a missing device node flag to legacy reported devices to avoid an assertion failure during installation (Cameron Gutman)
  • The fact that this was exposed by a change in device node linking order terrifies me (Cameron Gutman)
  • Get rid off TAG macro (Pierre Schweitzer)
  • Use LIST_ENTRY not pointer on them as head (Pierre Schweitzer)
  • Fix formatting, no code change (Pierre Schweitzer)
  • Fix a bug in FsRtlNotifyCleanup: only remove notification from list when we're about to complete it. (Pierre Schweitzer)
  • Stub FsRtlCancelNotify (Pierre Schweitzer)
  • Implement FsRtlCheckNotifyForDelete, FsRtlNotifyCompleteIrp, FsRtlNotifyCompleteIrpList, FsRtlNotifySetCancelRoutine (Pierre Schweitzer)
  • Forgot to commit that file (Pierre Schweitzer)
  • Implement FsRtlNotifyFilterChangeDirectory (Pierre Schweitzer)
  • Remove the broken ASSERT once again. Sigh... (Timo Kreuzer)
  • Comment out two overzealous ASSERTs (Pierre Schweitzer)
  • fix code assuming System process pointer is never NULL, which is the case when we're creating it. (Jérôme Gardou)
  • Fix a major bug in the failure path of IoCreateDevice that would cause corruption of kernel memory if IopCreateVpb failed (Cameron Gutman)
  • Consolidate most of the PDE reference counting code into the arch-specific RosMm folder where it belongs (Cameron Gutman)
  • Kill this straggler from last commit (Cameron Gutman)
  • Use ARM3 hyperspace mapping calls instead of the legacy RosMm API (Cameron Gutman)
  • Fix incorrect placement of the PDE freeing code which caused a deadlock to occur if a low memory condition was indicated by ARM3 (Cameron Gutman)
  • Assert that the PFN lock is held during MmReferencePage (Cameron Gutman)
  • Assert that the PFN lock is not held during MmFreeMemoryArea (Cameron Gutman)
  • Fix several driver object reference leaks (Cameron Gutman)
  • Fix a kmtest regarding previously loaded drivers (Cameron Gutman)
  • Part 1 of getting PnP driver unload to work properly (Cameron Gutman)
  • Fix a major device object reference leak (1 per PnP IRP) (Cameron Gutman)
  • Fix yet another major device object reference leak (1 per power IRP) (Cameron Gutman)
  • Cleanup device removal/unloading (Cameron Gutman)
  • Should not have any behavior changes yet (Cameron Gutman)
  • Fix the unload path (Cameron Gutman)
  • This does expose some bugs: 2 cont-able assertions in ARM3 after unplugging a USB storage device (during usbstor unload), HID unload doesn't seem to work correctly (somebody still has references to the devices), other issues may pop up too (Cameron Gutman)
  • Don't zero a page again that is already zeroed (Cameron Gutman)
  • Hack IopDeleteDriver to workaround the boot driver unloading bugs I mailed ros-dev about (Cameron Gutman)
  • Should fix KVM testbot (Cameron Gutman)
  • Fix wrong sizeof usage with performance counters (Pierre Schweitzer)
  • Dereference the correct device object (the one who asked for shutdown notification) instead of whatever happens to be on the top of the device stack (Cameron Gutman)
  • Fix flag issues (Cameron Gutman)
  • Fix broken reference counting and dereferencing the wrong device object (Cameron Gutman)
  • Release the IO database lock before unloading the device (and driver too) to prevent deadlocks (Cameron Gutman)
  • Fix DBG macro AGAIN which got broken during the switch to cmake. Checked build: DBG = 1, free build: DBG = 0. Noobs. (Stefan Ginsberg)
  • Build fix from the cmake noob. (Stefan Ginsberg)
  • Addendum to 56090. (Stefan Ginsberg)
  • Add an assertion to catch a bug in the I/O manager (Cameron Gutman)
  • DPRINT1 -> DPRINT an error message so that KVM testbot will stop looping forever (due to status change...) (Pierre Schweitzer)
  • Temporarily comment out the dereferencing (Cameron Gutman)
  • It appears that the driver unloading code is more profoundly broken that I had previously thought. I ran into issues testing with videoprt which would call IoCreateDevice and IoDeleteDevice during enumeration of child devices. The issue arose when the IoDeleteDevice call unloaded the video driver which was currently initializing. This caused video initialization to fail and the system to shutdown. (Cameron Gutman)
  • Disable this code completely for now until the proper algorithm for determining when a driver should unload is found (Cameron Gutman)
  • FsRtlIsDbcsInExpression/FsRtlIsNameInExpression: in case there are contigous stars in the expression, skip all the stars up to the last one and only consider the last one. (Pierre Schweitzer)
  • This fixes the failing tests. (Pierre Schweitzer)
  • Erratum... Add missing L (Pierre Schweitzer)
  • Always set response in ExpRaiseHardError. Fixes ntoskrnl:ExHardError kmtest (Rafał Harabień)
  • Remove an extra deference to the device object that happened inside the IopDeleteDevice function (called by Ob when the reference count is 0) (Cameron Gutman)
  • Reenable some dereferences of the driver object (Cameron Gutman)
  • Fix return values in NtLoadDriver (Cameron Gutman)
  • Split unloading into code for legacy drivers and non-legacy drivers (Cameron Gutman)
  • Forgot this dereference (Cameron Gutman)
  • Unloading works now, but there are many bugs in the device stacks that prevent it from occurring (Cameron Gutman)
  • Usbhub will unload properly when a hub is removed for a driver update, but usbstor won't unload when all usb storage devices have been removed (Cameron Gutman)
  • Work needs to be done to fix issues like this (Cameron Gutman)
  • Fix opening of handles to enumerated devices (revert 53351 which ironically fixed this same bug) (Cameron Gutman)
  • Fixes bug 6939 (Cameron Gutman)
  • Fix null termination issues and enable the legacy driver registry code (Cameron Gutman)
  • Add a service description in legacy device entries (Cameron Gutman)
  • Return valid flags for a device status query (Cameron Gutman)
  • Store problem codes for several common device node failure states (Cameron Gutman)
  • Create PnpRootRegisterDevice which is used to register a given PDO with the root device so it won't report it twice (Cameron Gutman)
  • Listing devices by connection works with PCI HAL now but it seems that ACPI is detecting multiple ACPI\PNP0C0F\0 instances here in vbox which is causing the same infinite loop (Cameron Gutman)
  • Use the rounded page address when handling a not present fault. Likely leftover from merging newcc. (Art Yerkes)
  • Fix another place where a non-rounded address is used. (Art Yerkes)
  • Fix device manager view by connection in ACPI mode (Cameron Gutman)
  • Bugcheck if a driver reports a PDO with a non-unique instance ID (Cameron Gutman)
  • Print the parent devices when a duplicate device is detected (Cameron Gutman)
  • Once again require a reboot for driver replacement since this seems to cause new issues with devices being enumerated multiple times on vmware (Cameron Gutman)
  • Implement proper use of alternate resource requirement lists (Cameron Gutman)
  • Implement the case to set DN_NO_SHOW_IN_DM (Cameron Gutman)
  • Flag the device node if it fails post-start (Cameron Gutman)
  • Remove the device's children when responding to PNP_DEVICE_REMOVED (Cameron Gutman)
  • Set DN_DISABLEABLE if the device can be disabled (Cameron Gutman)
  • Make file offsets 64 bit (Timo Kreuzer)
  • Fix lots of MSVC/64 bit warnings (Timo Kreuzer)
  • ObReferenceObject() does NOT return an NTSTATUS. It returns the new reference count. Remove pointless NT_SUCCESS check (Timo Kreuzer)
  • Enable interrupts in amd54 page fault handler before calling MmAccessFault (Timo Kreuzer)
  • Add missing MmDecommittedPte for amd64 (Timo Kreuzer)
  • Small edit. (Art Yerkes)
  • while (TRUE);" is probably the worst way of handling critical errors / unhandled failure pathes! Replace that with ASSERT(FALSE); (Timo Kreuzer)
  • The legacy ROS Mm uses structures known as page ops to track operations on a page such as page out, page in, and access fault. The idea is that each operation is forced to wait until the page has completed all other pending operations to start its work. The problem was that the page op's completion event was a NotificationEvent instead of a SynchronizationEvent. This caused all operations to proceed at the same time if they were waiting on a single page op to begin. Now that is fixed and page ops proceed one after another as intended. This bug has been around since r9077. (Cameron Gutman)
  • When waiting for sections to be unmapped or destroyed, the Mm waits for pending page operations to complete. The problem is that MmUnmapViewOfSection had a critical bug in which it forgot to dereference the page op it just retrieved. This caused zombie page ops to be stuck to that particular address if there were any pending operations at the time of the MmUnmapViewOfSection call. As a result, section destruction to bug check due to the hung page op after waiting 10 seconds for the operation to complete. This bug has been around since r18849. (Cameron Gutman)
  • Due to the combined effects of the above bugs, sometimes unmapping or freeing a section would hang the system or bug check the system (remember the "Failed to wait for page op" messages?). This was evident in smiley_'s theme work when many applications calling FreeLibrary at the same time would trigger this bug. There are likely many more cases that triggered this series of events which either could never be replicated or simply could not be explained. (Cameron Gutman)
  • If neccessary unlock the working set in MiMakeSystemAddressValid before calling MmAccessFault, fixes a failed ASSERT, when coming from NtFreeVirtualMemory (Timo Kreuzer)
  • Remove duplicated ASSERT (Timo Kreuzer)
  • Add a few more C_ASSERTs related to the KTHREAD structure layout (Timo Kreuzer)
  • Sort the C_ASSERTs and add some more. (Timo Kreuzer)
  • Use MiFillSystemPageDirectory on amd64, too (Timo Kreuzer)
  • Don't truncate pointers to 32 bits in pushlock code (Timo Kreuzer)
  • Fix SepGet*FromDescriptor, returning NULL, when the relative offset is 0. (Timo Kreuzer)
  • Fixes VMware tools installer. (Timo Kreuzer)
  • Implement saving / restoring debug registers on traps (Timo Kreuzer)
  • Replace the loop in KeContextToTrapFrame with something less ridiculous (Timo Kreuzer)
  • fixes a number of ntdd exception winetests (Timo Kreuzer)
  • Fix a bug in MiAllocatePoolPages, that made the function succeed, when MAX_ULONG / -1 / 0xFFFFFFFF bytes were requested. The value overflowed into 0 and 0 pages were returned. When freeing this block, it could either free the next following large allocation or ASSERT when the end of the pool was reached without finding the end of the allocation. (Timo Kreuzer)
  • Fixes FoxitReader 4.2/4.3 (Timo Kreuzer)
  • Fix a memory leak (Pierre Schweitzer)
  • Implement keyed events (untested) (Timo Kreuzer)
  • Fix a typo ;-) (Timo Kreuzer)
  • Fix another typo (Timo Kreuzer)
  • Export SeTokenObjectType (Thomas Faber)
  • Export base MCB functions (Thomas Faber)
  • Remove PAGEOPs and use the argument to pass relevant information where needed, (Art Yerkes)
  • including generally a section page table entry or a PFN_NUMBER. (Art Yerkes)
  • In its place, the code looks for an MM_WAIT_ENTRY in the appropriate place and (Art Yerkes)
  • waits, returning STATUS_MM_RESTART_OPERATION. Rather than copying the pagein (Art Yerkes)
  • and CoW operations in the PAGEOP contention case, we just punt back and restart (Art Yerkes)
  • the operation, resulting in simpler code. (Art Yerkes)
  • Account for wait entries delaying a view attribute change and interacting (Art Yerkes)
  • with the machinery in CoW copying code, specifically making CoW insert and (Art Yerkes)
  • revoke a wait while copying the page, and make the CoW copy function take (Art Yerkes)
  • both pages as arguments rather than relying on the address space. (Art Yerkes)
  • Also alter the MM_WAIT_ENTRY value a bit to take into account an assert (Art Yerkes)
  • that it must have bit 0x800 set. (Art Yerkes)
  • Fix amd64 build (Timo Kreuzer)
  • Fix some MSVC/amd64 warnings (Timo Kreuzer)
  • Give more useful debug output on BAD_POOL_HEADER bug checks (Thomas Faber)
  • Formatting. (Art Yerkes)
  • Fix a couple of omissions from my PAGEOP removal; (Art Yerkes)
  • Make sure to place a wait entry in the address space when faulting (Art Yerkes)
  • in bss pages. (Art Yerkes)
  • Restore the original entry in the final cases of section swap out, (Art Yerkes)
  • because the entry had been replaced with a wait and nothing else (Art Yerkes)
  • restores it. (Art Yerkes)
  • Allow placement of a wait entry in virgin address space prior to mapping a page. (Art Yerkes)
  • Add a wait entry in the address space when paging in section view. (Art Yerkes)
  • Correct a problem that previously prevented us from evicting or querying pages that (Art Yerkes)
  • had been protected into PAGE_NOACCESS protection by adding a query for disabled (Art Yerkes)
  • mappings and handling disabled mappings in a few places (this may be controversial). (Art Yerkes)
  • Don't crash when unmapping a kernel-space image section, due to dereferencing a NULL (Art Yerkes)
  • Process. (Art Yerkes)
  • Stop parsing keys and return STATUS_KEY_DELETED if the parent key was marked as deleted. This fixes two winetests. (Eric Kohl)
  • Withdraw a wait entry before mapping a page. (Art Yerkes)
  • When a VAD is truncated using VirtualFree, truncate the corresponding MemoryArea (Art Yerkes)
  • so new allocations will match in both spaces. (Art Yerkes)
  • Actually remove the matching exclusive lock region when unlocking. (Art Yerkes)
  • Fix callback pool tags (Thomas Faber; #7120)
  • Fix a reference leak in PsSetCreateProcessNotifyRoutine (Thomas Faber; #7120)
  • Fix build (Thomas Faber)
  • NTOSKRNL:MM] (Thomas Faber)
  • Do not ignore pool tag in ExFreePoolWithTag when freeing to a lookaside list (Thomas Faber)
  • Assert against waiting at DISPATCH_LEVEL (Thomas Faber)
  • Disable the assert in KeWaitForMultipleObjects for now, as tcpip isn't straightforward to fix (Thomas Faber; #7129)
  • Fix wait asserts to account for the Thread->WaitNext case (Thomas Faber; #7129)
  • At least output a warning in place of the assertion failure in KeWaitForMultipleObjects (Thomas Faber; #7129)
  • tcpip is called too often. Don't spam the debug log. (Thomas Faber; #7129)
  • Properly export RtlVolumeDeviceToDosName by using IoVolumeDeviceToDosName. No need to reimplement RtlVolumeDeviceToDosName. (Pierre Schweitzer)
  • Fix error handling for SepDuplicateToken and SeCreateToken. (Eric Kohl)
  • Remove a hack that disabled unloading drivers, which didn't work because of memory corruption from freeldr. This works now, too. (Timo Kreuzer; #7139)
  • Add amd64 version of MmIsDisabledPage (Timo Kreuzer)
  • Kill deprecated code. (Alex Ionescu)
  • SAMLIB: Implement SamCreateGroupInDoamin and SamOpenGroup. (Eric Kohl)
  • SAMSRV: Implement SamrCreateGroupInDomain and SamrOpenGroup. (Eric Kohl)
  • Implement support for session pool (not yet enabled) and session space (implemented and enabled, but nobody is calling the APIs yet). (Alex Ionescu)
  • Implement MmMapViewOInSessionSpace, MmUnmapViewInSessionSpace. Win32k needs to use these to we can test them. (Alex Ionescu)
  • Add more support for session space, including mapping and unmapping views into it, as well as putting in the correct checks in the page fault handler for future work. (Alex Ionescu)
  • Cleanup the page fault handler to help with debugging, fix a few bugs and missing perf counters. There's a lot of cut corners that need some love, will be slowly adding more asserts/sanity code to make sure things are working right. (Alex Ionescu)
  • Raise system PTE count to 44000 for system with more than 256MB of RAM. (Jérôme Gardou)
  • claims that winXP supports a 960MB-contiguous mapping... (Jérôme Gardou)
  • Forgot amd64 file (Jérôme Gardou)
  • Fix some problems with the lock implementation (Art Yerkes)
  • Add a 'generation' to the lock IRPs so we know if we've reprocessed them on any (Art Yerkes)
  • specific turn when we unlock something else. (Art Yerkes)
  • Simplify coalescing of lock regions to just rebuilding the region by going through (Art Yerkes)
  • the shared lock list and expanding a new region with any overlaps. (Art Yerkes)
  • Simplify coalescing new shared locks into larger regions in the same manner. (Art Yerkes)
  • Multiple fixes to faulting paths. Make some checks more explicit, support lock pages counter, update dirty bit when needed, and stub further support for session space. (Alex Ionescu)
  • Additional support for session space. A few more ASSERTs and paranoia. (Alex Ionescu)
  • Don't assume all prototype PTEs are cached, in fact none are in ReactOS at the moment! This resulted in the wrong hardware caching bits for the PEB/TEB and NLS Data which are using ARM3 section code. (Alex Ionescu)
  • Also implement dirty page bit for prototype PTEs. (Alex Ionescu)
  • When dispatching a prototype PTE fault, call MiCompleteProtoPteFault instead of directly calling MiResolveProtoPteFault. Also add support/detection for clustering. (Alex Ionescu)
  • Try to fix crash detection in sysreg (Timo Kreuzer)
  • Implement last bits of session space support (minus session pool). Processes now have a ->Session pointer! Implement and enable MmSessionId in a bunch of places. (Alex Ionescu)
  • Set MiSessionSpaceWs address and use where needed. (Alex Ionescu)
  • Initialize the session working set, and add support to MiLockWorkingSet and MiUnlockWorkingSet for session WS. (Alex Ionescu)
  • Implement MiSessionAddProcess and MiSessionRemoveProcess which does the work required for this. (Alex Ionescu)
  • Fix IoGetIrpRequestorProcess. (Alex Ionescu)
  • In my private branch, MmMapViewInSessionSpace is working fine for the user and GDI heaps. Will enable after TestBot tests. (Alex Ionescu)
  • Support a few more "unsupported" paths that were hitting ASSERTs before. (Alex Ionescu)
  • Massively cleanup triplicated code that is just a series of macros/inlines. (Alex Ionescu)
  • Handle more complex prototype PTE faults that are not just demand-zero. (Alex Ionescu)
  • In my private branch, I can now run ReactOS with *all* pagefile-backed sections running under ARM3 mode. (Alex Ionescu)
  • Fix typo. (Alex Ionescu)
  • Add a systemcall table for all x64 NT versions (Timo Kreuzer)
  • Fix a critical bug in interrupt handling that could result in HAL returning the current processor to the wrong IRQL after an interrupt is handled that requires a raise to a synchronize IRQL. (Cameron Gutman)
  • Fix broken way we were creating prototype PTEs, which was only supporting 256MB worth of prototype PTE area instead of 1GB. (Alex Ionescu)
  • Add support (macros) for subsection PTEs. (Alex Ionescu)
  • Cleanup MmCreateArm3Section a little bit to handle file-backed sections in the future. (Alex Ionescu)
  • Remove an ASSERT(FALSE) that was only there for testing. (Alex Ionescu)
  • Enable richard's ARM3 section code unconditionally for all non-file backed sections. Works4me. Let's see what Testbot says. (Alex Ionescu)
  • Revert r57155 until test issues are fixed (Thomas Faber)
  • Cleanup MmCreateArm3Section a little bit to handle file-backed sections in the future. (Alex Ionescu)
  • Remove an ASSERT(FALSE) that was only there for testing. (Alex Ionescu)
  • Support transition pages during prototype PTE faults, which is our first try at soft faults! Should fix ASSERTs that were seen in the previous attempts in ole32, corrupting the registry. (Alex Ionescu)
  • It's fine for MiCreatePagingFileMap to fail in MmCreateSection -- don't assert and simply return failure. Should fix the ASSERTs taht were seen in KmTest. (Alex Ionescu)
  • Enable richard's ARM3 section code unconditionally for all non-file backed sections. Works4me. Let's see what Testbot says. (Alex Ionescu)
  • Nobody has showed me how to use/where is PatchBot, and google founds 0 relevant results, so this is going into main again. However I'm actually home this week to revert if something goes wrong :) (Alex Ionescu)
  • Do not return data in failure cases in NtProtectVirtualMemory. (Alex Ionescu)
  • No longer support non-ARM3 sections in NtProtectVirtualMemory, as the only OS calls were already NO-OPS. (Alex Ionescu)
  • Always use ARM3 sections unless SEC_PHYSICAL_MEMORY is used, and make the check explicit. (Alex Ionescu)
  • No longer support allocating memory on top of non-ARM3 sections. (Alex Ionescu)
  • No longer ASSERT when certain features are not yet implemented, instead return an error code. (Alex Ionescu)
  • Add another check in NtFreevirtualMemory when invalid memory is being freed, insert of ASSERTing. (Alex Ionescu)
  • Implement and use MiIsEntireRangeCommitted when protecting memory to make sure the entire range is committed. (Alex Ionescu)
  • This patch removes multiple hacks, ASSERTs, and evil mixing of ARM3 and non-ARM3 code/memory. (Alex Ionescu)
  • Kill not-needed assertion. (Alex Ionescu)
  • Fix stupid checks (Alex Ionescu)
  • Remove another useless ASSERT. (Alex Ionescu)
  • Comment-fix. Get/Set flip. (Mike Nordell)
  • Restore the protect hack, maybe it's not as no-op as it seems. (Alex Ionescu)
  • Implement MiCheckSecuredVad and stop whining about not supporting SEC_NO_CHANGE, cleaning up the log. (Alex Ionescu)
  • Kill a bunch of now-useless DPRINT1s in Mm, significantly cleaning up the log. (Alex Ionescu)
  • No longer force PAGE_READWRITE for allocations. Seems Mm is now mature enough to handle this. Tried with some winetests and they look happier. (Alex Ionescu)
  • Warn, but do not ASSERT, about the fact that we don't have commit charges yet. Fixes OllyDbg2 assertions (and probably others too). (Alex Ionescu)
  • Missed the one ASSERT that mattered... (Alex Ionescu)
  • Fix what should be at least 40 KmTest:ob failures, by correctly using the right attributes, security mappings, flags, names, etc... for the object types. This probably fixes countless subtle bugs in applications/drivers that were non-obvious before, especially now that Device names are case insensitive, or that asking for certain GENERIC rights translates correctly. (Alex Ionescu)
  • Thank you thfabba (Thomas Fabber) for one of the most useful, yet ignored, tests in our suite. Hope this makes it up to you. (Alex Ionescu)
  • Fixed keyed event initialization. (Alex Ionescu)
  • Make executive init functions fail if something didn't work, intstead of silently failing. (Alex Ionescu)
  • Fix Win32k object initialization, fixes boot. (Alex Ionescu)
  • Implement correct locking and unlocking of the working set, one of the biggest blunders in ARM3 so far. (Alex Ionescu)
  • Implement MiDereferenceControlArea to avoid leaking CAs in failure cases. (Alex Ionescu)
  • Fix a stupid bug in MiProtectVirtualMemory which was causing empty PTEs whose protection was being set to remain zero PTEs, instead of demand-zero PTEs, but still acquire a page table reference. When they were later touched in the page fault code, and made into demand-zero PTEs, they'd get referenced again, thus Aleksey hacked away all the referencing code to work around this (causing PDEs to disappear...) (Alex Ionescu)
  • Restore the page table reference counting mechanism, and put it in a macro to be cleaner. Also use macros for testing PD boundaries, instead of math-by-hand. (Alex Ionescu)
  • Print a warning in several cases where a wait may fail in an unexpected way (Cameron Gutman)
  • Remove an unused variable. (Dmitry Gorbachev)
  • Fix two NtAccess function prototypes (NO-OP, not implemented/used) (Alex Ionescu)
  • Add missing call to ObValidateAccessMask (NO-OP, always returns TRUE). (Alex Ionescu)
  • Improve the whole msxml* situation in ReactOS, which improves compatibility with many applications (MS Visual C++ 2010 Redistributable Package, I'm looking at you !) (Amine Khaldi)
  • Small refactoring and optimizations to some Se routines, mainly generalizations for Restricted Token support once someone implements it. Also start using the token lock when necessary. Add comments when missing. Nothing terribly exciting... (Alex Ionescu)
  • As a side effect, implement SeCreateClientSecurityFromSubjectContext and SeGetTokenControlInformation, although most of the code was already there. (Alex Ionescu)
  • One useful change, SE_GROUP_USE_FOR_DENY_ONLY (Deny Only Groups) are now handled correctly. (Alex Ionescu)
  • CORE-6597 #resolve #time 5m #comment Fix incorrect double list increment (Alex Ionescu)
  • CORE-6491 #resolve #comment Implement hive list support by hbelusca, with some minor cleanups by me. Loaded hives are now in the hivelist key. (Alex Ionescu)
  • Use the token lock acquire/release macros that were already written instead of manually doing it. Also fix the macros since they didn't work in GCC. (Alex Ionescu)
  • No functional change, just code cleanup. (Alex Ionescu)
  • I fail. (Alex Ionescu)
  • Remove spurious parenthesis. (Amine Khaldi)
  • Fix indentation in kdio.c. No code changes. (Hermès Bélusca (1/2))
  • CORE-6635 (Hermès Bélusca (1/2))
  • Correctly show the amount of available memory in the serial debug log. (Hermès Bélusca (2/2))
  • CORE-6635 #comment Committed. Thanks. #resolve (Hermès Bélusca (2/2))
  • DACL and SACL should only be returned if the control flag indicates that they are present. (Alex Ionescu)
  • CORE-6675 #resolve #time 5h #comment Fixed the ASSERTion by increasing system view space to 36MB instead of 20MB. Note that the real bug is that we never free desktop heaps. But why fix the bug when the only thing people care about is "fix the tests!". So let's fix the tests instead of the bug :) Also, fix a bug in MiCheckForSessionPde which broke user32_apitest. All should be good now. (Alex Ionescu)
  • Typo fail, real fix. (Alex Ionescu)
  • NTDLL][RTL][KERNEL32] (Hermès Bélusca (1/X))
  • Code simplification and clarification for version-reporting functionality. (Hermès Bélusca (1/X))
  • CORE-6611 (Hermès Bélusca (1/X))
  • Code formatting (Hermes BELUSCA - MAITO)
  • It's my first commit \o/ (Hermes BELUSCA - MAITO)
  • CORE-6687 #comment Committed. #resolve (Hermes BELUSCA - MAITO)
  • Coverity code defects fixes : (Hermes BELUSCA - MAITO)
  • Cache: CID 701441 (Hermes BELUSCA - MAITO)
  • Config: CIDs 716570, 716669, 716760 (Hermes BELUSCA - MAITO)
  • Dbgk: Kdbg: CIDs 716571, 515128/9, 500432 (Hermes BELUSCA - MAITO)
  • Ex: CIDs 500156/7, 515122, 716200/67, 701301, 514669 (Hermes BELUSCA - MAITO)
  • Fsrtl: Fstub: CIDs 701341/2, 701288, 716770, 701302, and CIDs 716576/7/8 + 514636 + 716805 thanks to Thomas Faber (Hermes BELUSCA - MAITO)
  • Io: CIDs 514576, 514643, 514672/3, 716203, 716269, 716581, 716591, 716713 (Hermes BELUSCA - MAITO)
  • Ke: CIDs 515125, 716592 (Hermes BELUSCA - MAITO)
  • Ps: CIDs 716603/4, 701422 (Hermes BELUSCA - MAITO)
  • Ob: Po: CIDs 514671/680, 701419/420/421, 716763, 716601/2 (Hermes BELUSCA - MAITO)
  • All the details are given in the different bug reports. (Hermes BELUSCA - MAITO)
  • CORE-6677 CORE-6679 CORE-6680 CORE-6683 CORE-6686 CORE-6692 CORE-6693 CORE-6694 CORE-6695 CORE-6696 #comment Committed in rev.57400 #resolve #close (Hermes BELUSCA - MAITO)
  • Revert rev.57400 only for this file since CID 701342 was a false-positive from Coverity (because Coverity doesn't know what the aim of the POOL_RAISE_IF_ALLOCATION_FAILURE is). (Hermes BELUSCA - MAITO)
  • ExFreePool --> ExFreePoolWithTag in some places. (Hermes BELUSCA - MAITO)
  • Remove dead code (section.c) (Hermes BELUSCA - MAITO)
  • Free resource (sysldr.c) (Hermes BELUSCA - MAITO)
  • Fix file header. (Lee Schoeder)
  • WDA-6701 #resolve (Lee Schoeder)
  • Allocate a capture buffer outside of SEH in NtAddAtom and NtRaiseHardError (Timo Kreuzer)
  • Call ExpGetCurrentUserUILanguage outside of SEH in NtQueryDefaultUILanguage and return the actual result instead of returning PsInstallUILanguageId in case of success. (Timo Kreuzer)
  • Don't allocate a unicode string inside SEH in NtQuerySystemEnvironmentValue, instead use RtlAnsiStringToUnicodeString directly on the callers buffer. (Timo Kreuzer)
  • CORE-6624 (Timo Kreuzer)
  • Shell32 (a forked module) was jealous because of shlwapi getting synced. (Amine Khaldi)
  • FsRtlTeardownPerStreamContexts: make IsMutexLocked volatile (SEH) (Timo Kreuzer)
  • IoCreateFile: Make SystemEaBuffer volatile (SEH), save status and information in the caller's IoStatusBlock, cleanup and fail when IoCheckEaBufferValidity failed with PreviousMode == KernelMode, too. (Timo Kreuzer)
  • NtLockFile: Move ExAllocatePoolWithTag out of the SEH block. ExAllocatePoolWithTag does not raise an exception by default (unlike ExAllocatePoolWithQuotaTag). Get rid of this SEH block completely and check the return value instead. (Timo Kreuzer)
  • NtQueryDirectoryFile: make AuxBuffer volatile (SEH), again move ExAllocatePoolWithTag out of the SEH block and check return value instead. (Timo Kreuzer)
  • IopCaptureUnicodeString: Make Name volatile (SEH) (Timo Kreuzer)
  • Implement Kdbg CLI callbacks. These callbacks can be registered from external modules and allow to process kdbg commands. (Timo Kreuzer)
  • Add an ASSERT in KeRundownThread (Thomas Faber)
  • Go back to 20 MB session space. (Timo Kreuzer)
  • CORE-6698 #resolve #time 5m #comment Add correct error handling during session space view mapping. (Alex Ionescu)
  • Add missing break in KdpServiceDispatcher (Timo Kreuzer)
  • Fix Coverity defects : CID 716579, 716580 and 716582. (Hermes BELUSCA - MAITO)
  • Use TAG_FSTUB instead of 'BtsF' (Hermes BELUSCA - MAITO)
  • Rearrange the NtQuerySystemEnvironmentValue code to have successive logical checks. (Hermes BELUSCA - MAITO)
  • Some ExFreePool -> ExFreePoolWithTag (Hermes BELUSCA - MAITO)
  • CORE-6725 #resolve #comment Committed in r57506. (Hermes BELUSCA - MAITO)
  • In NtQuerySystemEnvironmentValue : (Hermes BELUSCA - MAITO)
  • Use a fixed-length buffer size for holding a temporary variable. (Hermes BELUSCA - MAITO)
  • Correct the pool TAG. (Hermes BELUSCA - MAITO)
  • DPRINT the filename when MmLoadSystemImage fails (Timo Kreuzer)
  • Fix a few MSVC warnings (Timo Kreuzer)


  • Import code from Pierre Schweitzer's fsrtl branch. (Art Yerkes)
  • Large MCB and MCB (Art Yerkes)
  • Change notification (Art Yerkes)
  • Import mostly-complete file locking implementation from arty-newcc. (Art Yerkes)
  • Fix my lock implementation to a degree. (Art Yerkes)
  • Have a single list associated with the CSQ. (Art Yerkes)
  • Remove some confusion from when the lock information was a (Art Yerkes)
  • generic table. (Art Yerkes)
  • Make the compare function not be confused by attempts to (Art Yerkes)
  • give strange offsets and lengths. (Art Yerkes)
  • Make the uninitialize function complete all lock requests (Art Yerkes)
  • as specified. (Art Yerkes)
  • Remove my unneeded attempt to shoehorn in an eresource. (Art Yerkes)
  • Handle cases where multiple ranges overlap a new lock, including either exclusive or shared (Art Yerkes)
  • ranges. We expand a shared range when an overlap occurs and add another shared range to (Art Yerkes)
  • the shared ranges list. Also make sure to complete an IRP along every non-pending case. (Art Yerkes)
  • Reduces failures in kernel32_winetest except an expected successful unlock of ~0,1, which (Art Yerkes)
  • appears to contravene the documentation. (Art Yerkes)




  • No longer start win32k.sys, that's not your job. (Alex Ionescu)
  • The connection with SMSS(2) should be done after initialization, not before. This is because in SMSS2, there is no "Complete" API -- you are assumed to be ready when you connect, instead of connecting + completing later. Should not break SMSS behavior, but required for SMSS2. (Alex Ionescu)
  • Fix many bugs in ServerSbApiPortThread. This function never worked as SMSS never actually connects to the SB API Port. Since SMSS2 does, a few bugs were discovered. Also, hack-plement the one SB API that is required for SMSS2 (SbpCreateSession). All we do is resume the thread we receive (Winlogon)... normally we'd also register a hard-error port, etc. (Alex Ionescu)
  • If connecting with SMDLL to SMSS did not work (such as on my system where SMSS is no longer there), try using SMLIB and SMSS2 instead. This way CSRSS still works with both environments. (Alex Ionescu)
  • Required rbuild/cmake changes to build with SMLIB. (Alex Ionescu)
  • Update CsrAddStaticServerthread and CsrDestroyThread based on code from CSRSRV2. Main change is that ProtectHandle/UnProtectHandle is now called. (Alex Ionescu)
  • Merge some initialization code from CSRSRV, including CsrParseServerCommandLine and CsrCreateSessionObjectDirectory. CsrSrvCreateSharedSection is now called correctly based on registry/command-line settings. Remove legacy functions that are no longer needed as a result. (Alex Ionescu)
  • Flatten out the initialization code instead of a table of initialization functions. (Alex Ionescu)
  • Make BasepFakeStaticServerData (our fake BaseSrv.DLL that's static inside CSRSRV for now) also create the BaseNamedObject Directory, along with the right ACLs and symbolic links, as well as the \Restricted sub-directory. Remove legacy function that was doing this before. (Alex Ionescu)
  • Remove the CSRAPI Heap and just use the CSR Heap. In the future there will be separate DLLs each with their own heap, but now it's all one DLL. (Alex Ionescu)
  • Port CsrSbApiRequestThread, CsrSbApiHandleConnectionRequest and all the Sb* APIs from CSRSRV2. Comment out parts that can't work yet. (Alex Ionescu)
  • Port CsrSbApiPortInitialize, CsrSetProcessSecurity, CsrCreateLocalSystemSD, and almost all of CsrServerInitialization. Initialization is almost identical to CSRSRV2 now. (Alex Ionescu)
  • Kill "Complete" routine support, nobody was using this. (Alex Ionescu)
  • Fix MSVC build (Rafał Harabień)
  • Add a new linked list for console processes, as ListLink is used for all CSR_PROCESSes. (Alex Ionescu)
  • Fix \Local symbolic link. Thanks to vicmarcal (and the new awesome testman). (Alex Ionescu)
  • Port the alloc/dealloc/insert/remove CsrProcess management functions from CSRSRV2. There is no longer a hash table being used but instead a linked list just like in real CSRSRV(2 for us). This brings us closer to the CSRSRV2 model and makes some of the older ported code cleaner too. (Alex Ionescu)
  • Move the newly ported process APIs to procsup.c where they belong more. No functional change. (Alex Ionescu)
  • Port the CsrWait* and CsrSession* APIs from CSRSRV2. Not yet used, so no real functional change. Fixup a few structures where needed. Initalize session support during CSRSRV initialization. We have a pretty good hybrid now, some few more changes here and there and we can perhaps start having the beginnings our own "basesrv.dll", (Alex Ionescu)
  • Add include paths (Dmitry Gorbachev)
  • Fix rbuild file. (Sylvain Petreolle)
  • Move the CsrSv* APIs to session.c where they belong. Also enable most of the code in CsrSbCreateSession now since it works, minus one hack needed since we don't have a real BaseSrv yet. (Alex Ionescu)
  • Improve ClientConnectionThread a bit to make it look a bit more like CSRSRV2 and add some extra functionality. (Alex Ionescu)
  • Port from CSRSRV2 and use CsrApiPortInitialize instead of CsrpCreateListenPort. This will set appropriate SDs and also wait for all threads to be ready. (Alex Ionescu)
  • Import server.c from CSRSRV2, and move the existing CsrSrv functions we had from wapi.c to server.c (with the reactOS-specific hacks we had). The other CsrSrv* functions are not yet used. (Alex Ionescu)
  • Make CSRSRV "load" its own DLL as it should. This lets it support CSRSRV native APIs from NTDLL (which we don't send yet). (Alex Ionescu)
  • Hackfix "LPC Failed" errors. (Alex Ionescu)
  • Call the fake BaseSrv Init function during Server DLL load, not during SharedSection load, to be closer to where it should be. (Alex Ionescu)
  • Enable some disabled code-paths and fix some locking patterns to be closer to what the code should look/be like. Correct ref count management is one of the things where regressions could show up later, so trying to nail these down now. (Alex Ionescu)
  • MOUNTMGR] (Timo Kreuzer)
  • Use portable KeXxxSpinLock, instead of fastcall variants (Timo Kreuzer)
  • Fix usage of uninitialized variable (Timo Kreuzer)
  • Fix typos in assignments (Timo Kreuzer)
  • Fix several integer size bugs (Timo Kreuzer)
  • Fix uninitialied variables (and those gcc couldn't identify as initialized) (Timo Kreuzer)
  • Fix MSVC warnings (Timo Kreuzer)
  • Add a future hack. (Alex Ionescu)
  • Port CsrCallServerFromServer (and hackplement a reactos-compatible implememntation) from CSRSRV2. (Alex Ionescu)
  • Remove a bunch of hacks and don't attach the shared section when CSRSS is connecting to itself (which happens because our Win32k does that). Things are cleaner now :) (Alex Ionescu)
  • No longer accept connections from unknown processes. (Alex Ionescu)
  • Switch to the CSRSRV2 model of having a dynamic amount of threads handling CSRSS requests depending on how many are deadlocked, instead of creating a thread for every single client. CSRSRV now has about 2 API threads instead of 16. (Alex Ionescu)
  • I confused ShutdownCallback with DisconnectCallback. What win32csr needs is actually the later. Fixed that. Also removed CallProcessDeleted since we already call the Disconnectcallback from CsrRemoveProcess, which we do call in CSRSRV. Enabled the code that was disabled. (Alex Ionescu)
  • Fix scenario when a new thread is being created from within CSRSRV and it could not register itself due to the new server-to-server support. Fixes CTRL-C and using the "X" button in a console window to close it, which had regressed since the server-to-server commit. (Alex Ionescu)
  • Port CsrLockedReferenceThread from CSRSRV2. (Alex Ionescu)
  • Take a refernece to the client thread since we are dereffing it... (Alex Ionescu)
  • Properly implement CsrSrvCreateThread now that the worker thread issue is fixed. CSR_THREAD's are now created for everyone, and CSRSS succesfully duplicates their thread handle! Also, while connections from unknown threads are still allowed (in case I missed something), we do warn on the console about these guys now. (Alex Ionescu)
  • Let's see if touching the CSR header file kills CSRSRV again. Re-enable the #if'0ed code that merely added a few fields to the create process structure. I think we no longer have weird fucked up dependencies on exact structure byte sizes. I hope. (Alex Ionescu)
  • It seems safe to now enable the #if0'ed out functionality of CsrCreateThread, as all thread/processes are tracked properly now. (Alex Ionescu)
  • Port CsrCreateProcess from CSRSRV2, rewrite CsrSrvCreateProcess to use this API, and add required ReactOS compatibility hacks. A lot of stuff is still not supported, but the minimum (ie: previous ReactOS functionality) has been maintained during the transition. Processes are now tracked correctly, but there are still refcount leaks (known, to be fixed later). (Alex Ionescu)
  • Will let this breathe for a bit now to catch regressions. Work can now continue back on the kernel32 side while that happens. (Alex Ionescu)
  • Implement support for exception messages now that these get sent. (Alex Ionescu)
  • Don't bail out incorrectly if we get a LPC_EXCEPTION. Also DPRINT1 when we get one. (Alex Ionescu)
  • Sometimes too much of a hybrid is no longer a good thing. Rewrite the CSRSRV API loop to match (almost -- except the actual API conversion which is different in ReactOS) the CSRSRV2 loop, with the correct handling of datagrams, errors, exceptions, death messages, etc... (Alex Ionescu)
  • Add special handling for certain messages (similar to how "Reply" is used in CSRSRV2) so that we don't keep replying to the wrong thead. For example, during an ExitProcess, special handling is needed at the end of the loop. (Alex Ionescu)
  • Remove the last few remaining legacy process management function and use the correct CsrLock/Unlock APIs instead. No longer leak references for every process like crazy. Fully manage proc/thread/session reference counts now. (Alex Ionescu)
  • At this point it looks like there might just be one issue left before this thing works right (minus potential regressions due to missed hacks). (Alex Ionescu)
  • Heh, fix a bug, which I think caused the crash in CSRSS during other process' crashes. (Alex Ionescu)
  • Some misc cleanup of dead code. No functional change. (Alex Ionescu)
  • sigh. (Alex Ionescu)
  • Quiet, you! (Alex Ionescu)
  • Party revert r55722: ": Some misc cleanup of dead code. No functional change.", which caused MSVC builds to hang on 2nd stage (Timo Kreuzer)
  • Fix the output parameter of ProcessLUIDDeviceMapsEnabled case in NtQueryInformationProcess() to be ULONG instead of BOOLEAN (as required). (Amine Khaldi)
  • ASSERT that the function succeeds. (Amine Khaldi)
  • Remove $Id$ property. (Hermes BELUSCA - MAITO)
  • Correct misspellings : "othwerwise" --> "otherwise" and "(de)refence" --> "(de)reference". (Hermes BELUSCA - MAITO)
  • Add missing functions' documentation (from the old CSRSRV). (Hermes BELUSCA - MAITO)
  • Add some useful comments. (Hermes BELUSCA - MAITO)










  • Initialize the subsystem restructure. Start by bringing-in gdi32 and user32. Brought to you by the awesome Subsystem Team. (Amine Khaldi)
  • Move the drivers into win32ss/drivers. (Amine Khaldi)
  • Move ReactX modules into win32ss/reactx. (Amine Khaldi)
  • Move win32csr into win32ss/user/win32csr. (Amine Khaldi)
  • Move winsrv into win32ss/user/winsrv. (Amine Khaldi)
  • Reorganize the whole ReactOS codebase into a new layout. Discussing it will only waste time, so we better have it then talk about it after. (Amine Khaldi)
  • Put ntoskrnl and ntdll in the same folder, because they both start with nt. (Amine Khaldi)
  • Place hal next to acpi, they both deal with hardware stuff. (Amine Khaldi)
  • Move mountmgr next to usb drivers. (Amine Khaldi)
  • Put the rtl next to the crt, and share as much as possible between the two. (Amine Khaldi)
  • I'm just kidding, you know, April's fool and all ;) (Amine Khaldi)
  • Here's the real deal: (Amine Khaldi)
  • And finally, integrate win32k itself into the new file layout. Now the subsystem modules are located close to each other (like gdi32 and ntgdi, or user32 and ntuser). (Amine Khaldi)
  • Thanks go to the subsystem team for coming up with this nice layout, hopefully this will scale to the whole codebase layout soon. (Amine Khaldi)
  • Special thanks to Smiley for coming up with this cool idea :) (Amine Khaldi)
  • Move win32k headers to win32ss/include. (Amine Khaldi)
  • Compile diblib only when we use it. (Amine Khaldi)
  • Desktop: Added code for server side switch over and some notes. Did not include desktopbg.c. (James Tabor; #6751)
  • Focus: Fixes wine Win tests for SetParent, Active, Focus and Foreground. Leaving the wine todos. Msg tests improved. Pop up menus are still broken . The tests reflect these pop up menu issues. (James Tabor; #6751)
  • WinPos: (WIP) Fixed MapWindowPoints. Arrange icons is still broken. SetWindowPos sets the foreground when it should. (James Tabor; #6751)
  • Implemented AllowSetForegroundWindow and LockSetForegroundWindow. (James Tabor; #6751)
  • Commit to reset base lines for RegTest ComCtl32 and related bugs. (James Tabor; #6751)
  • Coding credits and complements go out to the Wine team. (James Tabor; #6751)
  • Implement Ctrl+C support on MessageBox. (Guido Pola (prodito {at} live [dot] com); #5281)
  • Fix the remaining wine Win tests for FindWindow/Ex/A/W. Check the buffer not the length, buffer could be pointing to a null. Enable the message window handling. Use wine code for FindWindowExA. (James Tabor)
  • Introduce _VS_ANALYZE_ option for the VS static analysis support. (Amine Khaldi)
  • Fix test_child_window_from_point results. (James Tabor)
  • Turn on process layout. (James Tabor)
  • Miscellaneous changes and fixups. (James Tabor)
  • Add utility of setting and clearing the state bits from user space. Use this later. (James Tabor)
  • Add utility of setting and clearing the state bits from user space. Use this later. Fix build. (James Tabor)
  • Turn of debugs. (James Tabor)
  • Minor fixups to SetParent. (James Tabor)
  • Add utilities to check thread queue states and verify window object is still alive. (James Tabor)
  • Fix a FIXME and fix the last test in wine Win test_ShowWindow. (James Tabor)
  • Fix crash and pass all wine CursorIcon test_SetCursor and test_ShowCursor. (James Tabor)
  • Add callback to find character set information. (James Tabor)
  • Paint updates and signaling flags. (James Tabor)
  • WIP: Implement WM_SYNCPAINT support, for synchronize painting to the top-level windows of other threads. (James Tabor)
  • Tested with wine tests and passes, (James Tabor)
  • (James Tabor)
  • (James Tabor)
  • Fix build. (James Tabor)
  • Remove some unused-but-set variables. (Amine Khaldi)
  • Fixed skip test regression in User32 Win wine test. (James Tabor)
  • Regressed one scroll control test. AbiWord scrolls and Explorer redraw issue still (James Tabor)
  • the same. (James Tabor)
  • WIP: Rearranged code for standard structures prior to moving scroll code to Win32k. Proc support will remain in User32 (A2W etc) and redirected to Win32k. Drawing support will be added when this switch is made. Then ReactOS will have 100 percent wine scrolls plus our fixes in one file. (James Tabor)
  • NTDLL:LDR] (Alexander Yastrebov (menone7 at gmail dot com); #7251)
  • Do not assume null termination of DllName and optimize extension search in LdrpLoadDll. (Alexander Yastrebov (menone7 at gmail dot com); #7251)
  • NTDLL:LDR] (Thomas Faber)
  • Code cleanup in LdrpLoadDll (Thomas Faber)
  • Do not register classes in case of errors at startup. (James Tabor)
  • Fix desktop background. (James Tabor)
  • Move WM_SETREDRAW and WM_SYNCPAINT to Win32k. (Alex Henrie: Minimize and maximize boxes can only appear when WS_SYSMENU is set)
  • Active, Focus and Foreground. Fixes many of the the wine tests and including the todos. Fix bug 7089. (James Tabor)
  • Get ATI support points in place, include code support for ptiSysLock which will be rewritten soon. (James Tabor)
  • Move Desktop Proc to Win32k. This will allow the access checks to work. Note: DesktopBG.c creates a Win32 thread every time a Desktop is created. Please keep the file and code intact for historical purposes. (James Tabor)
  • Get code close to wine. (James Tabor)
  • References: (James Tabor)
  • Focus test ROS passes: (James Tabor)
  • Install acts and looks better: (James Tabor)
  • Fix build. (James Tabor)
  • HAX: Fix menu test crash! (James Tabor)
  • Contract be damned. This number 2 on my list to move server side! (James Tabor)
  • fix CMake x86 MSVCWin build. (James Tabor)
  • Silence GCC warning. (Dmitry Gorbachev)
  • Based on wine Alexandre Julliard: ScrollWindow should not use a cached DC, unlike ScrollWindowEx. (James Tabor)
  • Properly implement GetNearestColor (Jérôme Gardou)
  • Mark some the lack of parameters in some functions using VOID. Clang now happily compiles them. (Amine Khaldi)



  • Fix possible NULL pointer dereference. (numitus (domovoi94 at gmail dot com))






  • Create DEVICEMAP\VIDEO key with proper length. Fixes a bug exposed as "Arwinss unable to change resolution". (Aleksey Bragin; #6838)
  • Better fix for the registry value bug introduced by Rafal. The string is guaranteed to be NULL terminated, however MaximumLength is off by one in some cases (more specifically in videoprt.c:131 two NULLs are being added by sizeof(Insert1) and sizeof(Insert2)). (Aleksey Bragin; #6838)
  • Add more debugging in resource code (Cameron Gutman)
  • Don't add legacy resources twice in VideoPortGetAccessRanges (Cameron Gutman)
  • Fixes Cirrus driver initialization (Cameron Gutman)
  • Fix broken VIDEO_PORT_GET_DEVICE_EXTENSION macro (Cameron Gutman)
  • Add support for child devices (monitors only for now) (Cameron Gutman)
  • Monitors now show up in device manager ("Plug and Play Monitor" shows up if EDID data is reported, otherwise "Default Monitor" is displayed) (Cameron Gutman)
  • Add missing ObReferenceObject call (Cameron Gutman)
  • Found by Johannes Anderwald (Cameron Gutman)



  • Implement spacial even more optimized versions of SRCCOPY on equal surfaces for 8,16,24 and 32bpp. (Timo Kreuzer)
  • Add the right-to-left versions to the function tables (Timo Kreuzer)
  • Add _CALCSHIFT macro(s) to calculate the shift in the dib functions, instead of precalculating it in EngBitBlt. This costs us a few bytes per function (yes, with so many functions, every byte counts!) but since it's only for 1 and 4 bpp and improves the code by keeping DIB specific code out of the Eng function, it's reasonable to do so. (Timo Kreuzer)
  • Add optional optimization pragmas (Timo Kreuzer)
  • add table for masking rops (Timo Kreuzer)
  • consity some tables (Timo Kreuzer)
  • Fix some typos (Timo Kreuzer)
  • Implement support for bottom up bitblt (Timo Kreuzer)
  • Add solid pattern support in generic BitBlt function (Timo Kreuzer)
  • Make sure right-to-left is only used in the appropriate functions (Timo Kreuzer)
  • Fix 1bpp _NextPixel() macro (Timo Kreuzer)
  • Fix a bug that caused all BitBlt functions with for a solid brush to ignore the XLATEOBJ (Timo Kreuzer)
  • Fix calculation of pattern pointer (Timo Kreuzer)
  • Fix GCC compilation (Jérôme Gardou)
  • Make file names unix conform (Timo Kreuzer)
  • Cleanup code (Timo Kreuzer)


  • Fix a typo. (Amine Khaldi)
  • Fix MSVC warnings (Timo Kreuzer)
  • Fix CombineTransform to pass all tests (Timo Kreuzer)
  • Fix SetWindowExtEx to pass all tests (Timo Kreuzer)
  • Implement support for TCI_SRCLOCALE. (James Tabor)
  • Fix SetTextAlign: (Timo Kreuzer)
  • return GDI_ERROR (-1) not 0 on error (Timo Kreuzer)
  • properly handle LAYOUT_RTL (Timo Kreuzer)
  • Some fixes for CreateDIBitmap ( (Victor Martinez, modified by me) CORE-6420 #resolve)
  • Fix warning on MSVC (Victor Martinez, modified by me) CORE-6420 #resolve)
  • Use GdiAllocBatchCommand in DeleteObject instead of doing all manually (Timo Kreuzer)
  • Use a struct do define the combined DIBSECTION/BITMAPINFO buffer in CreateCompatibleBitmap, to make it more clear how it works. See CID 716216 (Timo Kreuzer)
  • Assume that the provided buffer size is maximal in GetDIBits (Jérôme Gardou)





  • Fix loading of MENUEX resources (Rafał Harabień)
  • Edit, Sync to Wine 1.3.37. (James Tabor)
  • Sync up to support ComCtl32 tests. (James Tabor)
  • don't use DbgPrint for error messages (Giannis Adamopoulos)
  • Attempt to fix the font leak when switching applications. Tested with other applications other than Acrobat Reader since it crashes when installing. . (James Tabor; #5314)
  • Correct user32 japanese translation (and fix build as well) (Pierre Schweitzer)
  • Add support for LB_GETLISTBOXINFO and LBS_NODATA. Fix unknown wide char in draw.c. (James Tabor)
  • Sync up with wine NCActivate. (James Tabor)
  • Use zap command when ending dialogs. Check keyboard perfs and cues before sending change GUI states. (James Tabor)
  • Fix MSC build. (James Tabor)
  • Fixing graphics glitches when clicking the arrow button. . (James Tabor; #4251)
  • Use system gray brush. (James Tabor)
  • Do not send on a null window, fixes start up and shut down spurious window handle errors. (James Tabor)
  • Combo port sync wine 1.5.10. (James Tabor)
  • change error messages in CallWindowProc to make it apparent that we caught an exception with SEH as requested by Caemyr (Giannis Adamopoulos)
  • Attempt to fix Win test_mouse_input, properly set MA_ACTIVATE with right conditions when sending WM_LBUTTONDOWN. (James Tabor)
  • Get code close to wine. (James Tabor)
  • Use LONG instead of DWORD for a signed value (Timo Kreuzer)
  • Aric Stewart : While calculating lines, discard uniscribe data for non-visible lines. (James Tabor; #1419)
  • Nikolay Sivov : Release uniscribe data on Edit control destruction (valgrind). (James Tabor; #1419)
  • Sync Port wine. (James Tabor; #1419)
  • Someone needs to post a wine bug report due to the lack of support for Ctrl+Backspace. Debug fixme was added. . (James Tabor; #1419)
  • Reapply r57265 now that the testbot issues are solved. (Amine Khaldi)
  • Change the French keyboard accelerators of the windows' system menu to match those of Win2k3. (Hermes BELUSCA - MAITO)


  • Link with CSRSRV. (Alex Ionescu)
  • link with CSRSRV in rbuild too. (Alex Ionescu)
  • Fix win32csr release build (Pierre Schweitzer)
  • Don't corrupt memory. Fixes random crashes when running ntoskrnl:ExHardError kmtest (Rafał Harabień)
  • Do not leave critical section twice in Win32CsrReleaseConsole. (Hermès Bélusca; #6622)
  • Update rapps to recent versions. (Daniel Reimer)
  • FF 3.6 and Thunderbird 3 is no more and thus is hosted on the same spot as the older FF versions are. (Daniel Reimer)
  • Fox Audio is updated to 0.9.1 including head rev mpg123 lib and hosted on our svn, too overwriting the old fox audio player. (Daniel Reimer)
  • Closing Bug #7194 and #7195, too by adding Total Commander and Click-N-Type Virtual Keyboard (Daniel Reimer)
  • Change totalcommander to a external mirror. As suggested by Pierre. (Daniel Reimer)
  • Re-enable delay-importing of user32,gdi32 and advapi32 as it was before in the RBuild times. (Aleksey Bragin)



  • Use ULONG_PTR instead of UINT_PTR. (Hermès Bélusca; #7100)


  • Implement LsaEnumeratePrivilegesOfAccount and LsarEnumeratePrivilegesAccount. (Eric Kohl)
  • Implement parts of LsarAddPrivilegesToAccount. (Eric Kohl)
  • Implement LsaCreateSecret/LsarCreateSecret, LsaOpenSecret/LsarOpenSecret, LsaGetSystemAccessAccount/ LsarGetSystemAccessAccount and LsarSetSystemAccessAccount (Eric Kohl)
  • Improve some TRACE messages. (Eric Kohl)
  • Implement LsaSetSeceret/LsarSetSecret (secret values are not encrypted yet) and LsaSetSystemAccessAccount. (Eric Kohl)
  • Improve some TRACE messages. (Eric Kohl)
  • Implement LsaQuerySecret/LsarQuerySecret. Does not work due to bugs in widl. (Eric Kohl)


  • Fix changing a service description in (R)ChangeServiceConfig2W. (Sylvain Petreolle)
  • Fixes bad service description in Vmware Tools. (Sylvain Petreolle)
  • Little improvements to advapi32.dll / services.exe. (Hermes Belusca; #7239)
  • This patch fixes various things, from Coverity code defects to conversion (Hermes BELUSCA - MAITO)
  • warnings : (Hermes BELUSCA - MAITO)
  • CID 715948 (logically dead code @ services/rpcserver.c) (Hermes BELUSCA - MAITO)
  • try to fix CID 716332/3 (resource leaks) by rewriting the ScmReadString (Hermes BELUSCA - MAITO)
  • function (@ services/config.c) (Hermes BELUSCA - MAITO)
  • zero out the freshly allocated memory (@ services) (Hermes BELUSCA - MAITO)
  • try to fix CID 716126/7/8 (untrusted value as argument @ (Hermes BELUSCA - MAITO)
  • advapi32/services/sctrl.c) (Hermes BELUSCA - MAITO)
  • Fix also some "size_t to DWORD" warnings on x64 build (@ (Hermes BELUSCA - MAITO)
  • advapi32/services/scm.c). (Hermes BELUSCA - MAITO)
  • Fixes CORE-6606. (Hermes BELUSCA - MAITO)



  • add scripts for including AHK tests into Reactos\Bin; (Olaf Siejka)


  • Add multiple amd64 asm constant and structure offset definitions (Timo Kreuzer)
  • Add more unwind information to the amd64 trap entry code (Timo Kreuzer)
  • Add IRQL check, APC check and segment sanitize code to trap entry/exit (Timo Kreuzer)



  • Alter the way we handle the dlldata generation with midl. This works around the warnings we get about multiple rules to generate proxy.dlldata.c. (Amine Khaldi)
  • Brought to yo by Peter Kummel. (Amine Khaldi)


  • Hermès Bélusca: (Amine Khaldi; #7297)
  • Fix a bug in the way we compiled the boot sectors on the x64 build. (Amine Khaldi; #7297)
  • Consistently set the mc compiler, like gcc builds. (Amine Khaldi; #7297)
  • Use proper variables when referring to the compilers. (Amine Khaldi; #7297)
  • Call cl directly instead of its full path using <CMAKE_C_COMPILER>. Figuring out why it didn't work is left as an exercise for the reader. (Amine Khaldi)





  • Make multiple fixes to, bring up to speed, and finish implementation of the CSRSS/CSRSRV that has been laying around in trunk since forever. Not yet tested if it actually works yet, but it should now build and be much closer to fully functional. Of course, the trick is to figure out how to get it to co-exist with the current CSRSS/win32csr. (Alex Ionescu)


  • Fix CsrLockProcessByPid -- it was skipping the root process itself, so requests coming from a CSRSS-hosted DLL would fail (which is exactly what server-to-server depends on). (Alex Ionescu)
  • Hard error parameters are ULONG_PTR, no need to truncate them (Timo Kreuzer)


  • Do the Windows thing and send a unified LPC message when a new process is created, which includes the thread information as well, instead of sending two LPC messages per process. Perf++. (Alex Ionescu)
  • Switch to using the Windows CSRSS message structure for a new process, minus the bInheritHandles field which we still support for ReactOS compatibility. (Alex Ionescu)
  • Close the last big architectural known issue: we were not notifying CSRSRV of server threads within server-to-server situations. Port and fix CsrCreateRemoteThread from CSRSRV2, and call it from Kernel32 now when running inside the server itself. Also fix BaseProcessStart not to exit the whole process during an exception. (Alex Ionescu)
  • At this point, other issues are unknown regressions. (Alex Ionescu)


  • No code change, but rename CSRSS_PROCESS_DATA to CSR_PROCESS and all the right fields -- put ReactOS-specific fields at the end. Do all the right renames needed for compilation. No functionality change. (Alex Ionescu)
  • Make Win32CSR much closer to a real CSRSS Server DLL than before, and make calling the Server callbacks compatible with the correct CSR_SERVER_DLL structure. API dispatching is still all wrong, though. (Alex Ionescu)
  • Remove all the code that was setting new values for DataLength/TotalLength in the LPC header. I have no idea why the code was doing this. I suspect it's partly to blame for why changing the structures of the CSRSS messages caused bizarre failures. Perhaps this behavior was needed with the original winsock-based LPC implementation that I rewrote back in 2006? (Alex Ionescu)




  • Disable VS11 warning about cast between different function classes (IO_DPC_ROUTINE to KDEFERRED_ROUTINE) where needed (Thomas Faber)
  • Fix non-x86 definition of KTIMER (Timo Kreuzer)
  • Fix _XSTATE_SAVE definition for ARM (Timo Kreuzer)
  • Fix some annotations in wdm.h (Timo Kreuzer)


  • Revert r56865, it duplicates same action (expanding the var), spotted by Thomas Faber. (Aleksey Bragin; #6053)
  • Fix possible buffer overflow: ExpandEnvironmentStrings wants character count size of a buffer, not byte sized. Spotted by Thomas Faber. (Aleksey Bragin; #6053)


  • Rewrite FAT bootsector. It's written to eventually replace FAT12, FAT16 and FAT32 bootsectors using the same code. Currently only used for FAT16. The complete (!) code to load freeldr has been put into a single 512 byte sector. CHS support is not implemented atm, but there's plenty space left (41 bytes). Fixes boot on harddisks smaller than 513 MB. (Timo Kreuzer)
  • CORE-6610 #resolve (Timo Kreuzer)
  • Restore padding that I commented out to find out the size of the boot sector. (Timo Kreuzer)



  • Freeldr size is currently limited to 448 KB. On MSVC it was already at 442 KB, before wine's wctype table was used. The new wctype table is itself 37 KB. This lead to freeldr overflowing into memory regions that were used for the filesystem buffer, causing bootfailures. Fix this by giving freeldr it's own using _isctype(), since freeldr casts WCHAR to CHAR anyway. (Timo Kreuzer)
  • Fix build (Timo Kreuzer)


  • Leverage the object library option provided by CMake 2.8.8+ which will speed up the build even further. (Amine Khaldi)
  • These wrapping conditions will go away as soon as we ship the new BE. (Amine Khaldi)
  • Align the stack on an 8-byte boundary for x86. (Amine Khaldi)
  • Make freeldr_common depend on bugcodes and remove this dependency from the other targets. (Amine Khaldi)
  • Improve those conditions readability a bit. (Amine Khaldi)


  • Use GCC intrinsics for InterlockedIncrement/Decrement functions (Jérôme Gardou)


  • Rewrite GetCurrentObject and GetObject, fixes a lot of tests (Timo Kreuzer)
  • Fix some regressions from previous commit (Timo Kreuzer)
  • Fix message regressions from 54637. (James Tabor)




  • Add the .NET Install Dir key, which fixes tons of MSI problems where it failed to load/initalize/find assemblies. (Alex Ionescu)


  • NET needs InstallRoot, not InstallDir. Kills millions of DPRINT1s, thus cleaning up the log. (Alex Ionescu)



  • Missed this spot where usbhub is installed for an external hub causing a crash (Cameron Gutman)
  • Load FS drivers on demand instead of boot start because WinLdr already adds the boot FS driver to the start list (Cameron Gutman)
  • Add video adapters to the critical device database (Cameron Gutman)
  • Merge back many old changes from i386 to AMD64 (Cameron Gutman)
  • Add PCI-PCI bridges to the critical device database to fix discovery of critical devices that are not attached directly to the root bus (Cameron Gutman; #6958)
  • for details (Cameron Gutman; #6958)


  • Add bin2c host tool, to be used for embedding binary files inside C source code, by transforming them into a byte array. By Hermès Bélusca. (Amine Khaldi)
  • CORE-6653 #resolve Committed to trunk. Cheers ;) (Amine Khaldi)



  • Partial update of math.h (Jérôme Gardou)
  • Someone used to mingw-w64 headers system should look into this, I NEED those C99 functions! (Jérôme Gardou)
  • revert 56989. (Jérôme Gardou)
  • Our headers are a lost cause. Just add the functions that I need. (Jérôme Gardou)
  • Partly revert r56995. Firstly it breaks MSVC builds, secondly the stuff doesn't belong into this header. MS headers don't have __fpclassify etc and our headers are not supposed to contain any fancy additions. If you need it for 3rd party code, put it somewhere else. (Timo Kreuzer)
  • Update mingw_math.h and make use of it (Jérôme Gardou)



  • Mark intrinsics on gcc with __attribute__((artificial)) so that they appear as one unit in the debug info. This way traces don't point inside the implementations, when they cause an eception, but rather to the line where they are used. (Timo Kreuzer)


  • Take ownership of the display if we're debugging to screen (Cameron Gutman)
  • TXTSETUP.SIF] (Cameron Gutman)
  • Add an example entry of DbgOsLoadOptions for debugging 1st stage to screen (Cameron Gutman)
  • 1st stage setup can now be debugged completely to screen with a modified txtsetup.sif (comment 1st DbgOsLoadOptions and uncomment 2nd) (Cameron Gutman)


  • Handle ExitProcess CSRSS message and implement CsrDestroyProcess to do so. Also implement CsrDestroyThread for future purposes. (Alex Ionescu)




  • Add the linking exception text to the official ReactOS licensing text. Previously, the exception text was only available at the ReactOS website with no references from the source code. (Aleksey Bragin)




  • This build introduces the following performance boosts: (sir_richard)
  • Using a dead stack lookaside list for up to 5 dead kernel thread stacks. 1500% improvement when rapidly destroying/creating threads, such as during second stage setup and many winetests. (sir_richard)
  • Using a free pool page lookaside list for up to 12 free non-paged or paged pool pages. 800% improvement when allocating big pages from the pool, as well as during pool expansion. (sir_richard)
  • Using a bucketized per-processor and local list (in the KPRCB) for block sizes between 1 and 32 bytes. 1000% improvement when rapidly allocating/freeing small pool allocations, and 8x reduction in pool fragmentation. (sir_richard)


  • mark DllMain as a weak symbol for GCC. (Jérôme Gardou)
  • supply a stubbed DllMain for MSVC. (Jérôme Gardou)
  • DllMain is optional, and some DLLs don't implement it. That doesn't mean that they have no entry point, it means "I have nothing more to initialize than the CRT". (Jérôme Gardou)


  • Improve and correct registering the CLISDs for MSI (they match Wine and Windows now). This reverts r55052. (Amine Khaldi)




  • Improve/fix/update/add several function declarations and structures (Samuel Serapion)
  • Fix build (Timo Kreuzer)


  • Finally make EPROCESS::Session PVOID, as it's supposed to be (Timo Kreuzer)
  • add missing Wow64Process member (Timo Kreuzer)


  • Fix RtlGetSetBootStatusData prototype and add the BSD Items that can be set with it. (Alex Ionescu)


  • A reintegration checkpoint for the NewCC branch, brought to you by Team NewCC. (Amine Khaldi)
  • Differences with current ReactOS trunk: (Amine Khaldi)
  • A new memory area type, MEMORY_AREA_CACHE, is added, which represents a mapped region of a file. In NEWCC mode, user sections are MEMORY_AREA_CACHE type as well, and obey new semantics. In non-NEWCC mode, they aren't used. (Amine Khaldi)
  • A way of claiming a page entry for a specific thread's work is added. Placing the special SWAPENTRY value MM_WAIT_ENTRY in a page table, or in a section page table should indicate that memory management code is intended to wait for another thread to make some status change before checking the state of the page entry again. In code that uses this convention, a return value of STATUS_SUCCESS + 1 is used to indicate that the caller should use the MiWaitForPageEvent macro to wait until somebody has change the state of a wait entry before checking again. This is a lighter weight mechanism than PAGEOPs. (Amine Khaldi)
  • A way of asking the caller to perform some blocking operation without locks held is provided. This replaces some spaghettified code in which locks are repeatedly taken and broken by code that performs various blocking operations. Using this mechanism, it is possible to do a small amount of non-blocking work, fill in a request, then return STATUS_MORE_PROCESSING_REQUIRED to request that locks be dropped and the blocking operation be carried out. A MM_REQUIRED_RESOURCES structure is provided to consumers of this contract to use to accumulate state across many blocking operations. Several functions wrapping blocking operations are provided in ntoskrnl/cache/reqtools.c. (Amine Khaldi)
  • Image section pages are no longer direct mapped. This is done to simplify consolidation of ownership of pages under the data section system. At a later time, it may be possible to make data pages directly available to image sections for the same file. This is likely the only direct performance impact this code makes on non-NEWCC mode. (Amine Khaldi)
  • RMAPs: (Amine Khaldi)
  • A new type of RMAP entry is introduced, distinguished by RMAP_IS_SEGMENT(Address) of the rmap entry. This kind of entry contains a pointer to a section page table node in the Process pointer, which in turn links back to the MM_SECTION_SEGMENT it belongs to. Therefore, a page belonging only to a segment (that is, a segment page that isn't mapped) can exist and be evicted using the normal page eviction mechanism in balance.c. Each of the rmap function has been modified to deal with segment rmaps. (Amine Khaldi)
  • The low 8 bits of the Address field in a segment rmap denote the entry number in the generic table node pointed to by Process that points to the page the rmap belongs to. By combining them, you can determine the file offset the page belongs to. (Amine Khaldi)
  • In NEWCC mode, MmSharePageEntry/UnsharePageEntry are not used, and instead the page reference count is used to keep track of the number of mappings of a page, allowing the last reference expiring to allow the page to be recycled without much intervention. These are still used in non-NEWCC mode. One change has been made, the count fields have been narrowed by 1 bit to make room for a dirty bit in SSE entries, needed when a page is present but unmapped. (Amine Khaldi)
  • Section page tables: (Amine Khaldi)
  • The section page tables are now implemented using RtlGenericTables. This enables a fairly compact representation of section page tables without having the existence of a section object imply 4k of fake PDEs. In addition, each node in the generic table has a wide file offset that is a multiple of 256 pages, or 1 megabyte total. Besides needing wide file offsets, the only other visible change caused by the switch to generic tables for section page tables is the need to lock the section segment before interacting with the section page table. (Amine Khaldi)
  • Eviction: (Amine Khaldi)
  • Page eviction in cache sections is accomplished by MmpPageOutPhysicalAddress. In the case of a shared page, it tries to remove all mappings of the indicated page. If this process fails at any point, the page will simply be drawn back into the target address spaces. After succeeding at this, if TRUE has been accumulated into the page's dirty bit in the section page table, it is written back, and then permanently removed. (Amine Khaldi)
  • NewCC mode: (Amine Khaldi)
  • NEWCC mode is introduced, which rewrites the file cache to a set of cache stripes actively mapped, along with unmapped section data. (Amine Khaldi)
  • NewCC is more authentic in its interpretation of the external interface to the windows cache than the current cache manager, implementing each of the cache manager functions according to the documented interface with no preconceived ideas about how anything should be implemented internally. Cache stripes are implemented on top of section objects, using the same memory manager paths, and therefore economizing code and complexity. This replaces a rather complicated system in which pages can be owned by the cache manager and the memory manager simultaneously and they must cooperate in a fairly sophisticated way to manage them. Since they're quite interdependent in the current code, modifying either is very difficult. In NEWCC, they have a clear division of labor and thus can be worked on independently. (Amine Khaldi)
  • Several third party filesystems that use the kernel Cc interface work properly using NEWCC, including matt wu's ext3 driver. (Amine Khaldi)
  • In contrast with code that tries to make CcInitializeCacheMap and CcUninitializeCacheMap into a pair that supports reference counting, NEWCC lazily initializes the shared and private cache maps as needed and uses the presence of a PrivateCacheMap on at least one file pointing to the SharedCacheMap as an indication that the FILE_OBJECT reference in the SharedCacheMap should still be held. When the last PrivateCacheMap is discarded, that's the appropriate time to tear down caching for a specific file, as the SharedCacheMap data is allowed to be saved and reused. We honor this by making the SharedCacheMap into a depot for keeping track of the PrivateCacheMap objects associated with views of a file. (Amine Khaldi)
  • Update used page table entry counts when mapping pages in cache sections. (Art Yerkes)
  • Update for rapps (Daniel Reimer)
  • Integrate september's speed improvements, which now work. (Art Yerkes)
  • Remove the flush hack when unpinning cache segments. (Art Yerkes)
  • Fix several locking issues to better fit with RosMm (Cameron Gutman)
  • Page out is critical as we use it now (shutdown) so force address space locking (Cameron Gutman)
  • Fix an address space lock leak for VM regions (Cameron Gutman)
  • Quiet some debugging and enable/change some other (Cameron Gutman)
  • Still some lingering issues in page out exist which seem to be related to zefklop's PDE ref counting stuff and a weird one where we fault on the PFN database (Cameron Gutman)
  • Besides the aforementioned issues, NewCC is surprisingly solid. I was able to boot to 3rd stage without a problem and run some apps. (Cameron Gutman)
  • Turn off a bit more debugging so NewCC is largely quiet unless there's a problem (Cameron Gutman)
  • Add missing wait entry handling (Cameron Gutman)
  • Prevent us from recording an impossible dirty swap entry in the section page table. (Art Yerkes)
  • Fix paging out. (Art Yerkes)
  • We know we're in a wait entry in the section. What we really want to know (Art Yerkes)
  • is if it's safe to evict this address space when withdrawing the mappings. (Art Yerkes)
  • We don't want to corrupt our wait entry in the section page table to keep (Art Yerkes)
  • accumulating dirty state into the page out process until it's time to finally (Art Yerkes)
  • evict. (Art Yerkes)
  • Use the same method pagefile.c does to read in a page without mapping it. (Art Yerkes)
  • Tag NewCC sections as ROS section objects so they don't get pulled into ARM3 code paths (Cameron Gutman)
  • Turn NewCC on temporarily for some testing (Cameron Gutman)
  • Patchbot is broken so I had to do it this way :( (Cameron Gutman)
  • Revert 56043 (Cameron Gutman)
  • Don't allow a locked page to be paged out (Cameron Gutman)
  • Hold the PFN lock when referencing pages (Cameron Gutman)
  • Check that the memory area is not being deleted before using it (Cameron Gutman)
  • Add some prose describing this functionality. (Art Yerkes)
  • Dedicated to timo, chongo, goto and ??= (Art Yerkes)
  • Just formatting and comments. (Art Yerkes)


  • We don't need to define _CRT_NON_CONFORMING_SWPRINTFS for inflibhost. (Amine Khaldi)
  • Back out r56969 for MSVC compatibility, a better approach is coming up soon. (Amine Khaldi)
  • We've been waiting, for a long time, for the mighty GCC version upgrade, but that was easier said than done, for the Windows build at least. Many have tried, to no avail, so Amine finally decided to step up, to give it a shot.. he went on and learned the dark arts of compiling GCC... and he succeeded ! (Amine Khaldi)
  • In the journey of running his GCC 4.7.1 compiled bootcd, two issues were revealed. Thomas kindly investigated them and fixed them, and as a result the bootcd boots to shell ! (Amine Khaldi)


  • Rename the CSRSRV API Numbers not to conflict with the actual functions. (Alex Ionescu)


  • Correctly handle out of memory condition (CID 14615) (Thomas Faber)
  • Remove a useless assignment (CID 14493) (Thomas Faber)
  • Correct wrong sizeof usage (CID 14104), add an assert (Thomas Faber)
  • Check result of walking the import descriptor and properly fail in case it wasn't successful. (Aleksey Bragin; #7289)


  • Implement RtlGet/SetThreadErrorMode. (Alex Ionescu)
  • Fix RtlIpv4AddressToStringA and RtlIpv4AddressToStringW to work like in Windows (and crash with a NULL buffer). (Alex Ionescu)


  • Add to build. Dedicated to Stefan. (Amine Khaldi)
  • Properly set the exports to refer to ntkrnlmp.exe instead of ntoskrnl.exe. (Amine Khaldi)


  • Compute the size of, and allocate, the Pool Tracker Table and the Big Page Tracker Table, which are the core data structures that make pool tagging functionality work. (sir_richard)
  • Implementation of the "Generic DPC" functionality from Windows NT 5.2, which is a forced-synchronization all-CPU DPC callback mechanism. Implemented, and exported all APIs requireted, and added to NDK. NOTE: This implementation only works for Single Processor systems (NT_UP) since this is all that ReactOS currently works on. (sir_richard)
  • This is needed for poolmon/querying pool tags. (sir_richard)
  • Fix build? (Kamil Hornicek)
  • Implement pool tag tracking and pool tag querying. Big Pool tags are not yet supported, but will be shortly. Expansion is not yet supported. (sir_richard)
  • Implement pool tagging for large allocations too. Once again, no expansion is implemented. (sir_richard)
  • Handle memory allocation failures correctly, supporting all the required debug and caller flags (such as RAISE_ON_FAILURE). We no longer simply just return "NULL" in failure cases. (sir_richard)
  • Implement counters for paged and nonpaged pool. First-stage setup now shows Kernel Pool values again, as does Task Manager. Fixes the regression introduced when pool/non-paged pool was no longer managed through "memory consumer" API. (sir_richard)
  • Add more debugging paths and flags that were sent over from the "Aleksey Pool Patch". Most of them are not implemented. (sir_richard)
  • Fix a missing case when a pool header check was not being done. (sir_richard)
  • Check IRQL levels during pool allocation and free. (sir_richard)
  • With tags and the counters, pool leaks should be massively more debuggable now. (sir_richard)
  • Preparations for the VAD-based Virtual Memory system begin. Disable changing protection on Virtual Memory pages, and make all pages PAGE_EXECUTE_READWRITE for now. In theory, this should not cause any real problems, and sets the stage for the initial functionality regressions that the VAD-based system will introduce. I will eventually plan on fixing them. (sir_richard)
  • Continued preparations for VAD-based Virtual Memory. ASSERT in NtAllocateVirtualMemory any functionality that will not be supported by the VAD-based system (and is not really supported right now either). Make NtFreeVirtualMemory ASSERT that a correct VAD has been found when freeing memory -- which we always expect at this point. Also ASSERT that the VAD has a valid range and flags. (sir_richard)
  • Do a more stringent check to refuse COPY_ON_WRITE flag sent through NtAllocateVirtualMemory. (sir_richard)
  • For VM-based Memory Areas, acquire and then release the process working set lock while inserting the VAD, to simulate what the VAD-based Virtual Memory behavior will look like. (sir_richard)
  • Disable paging for VM-based Memory Areas since this will not be supported with VADs. (sir_richard)
  • Micro-formatting changes to NtAllocateVirtualMemory and NtFreeVirtualMemory which make it easier for me to cut/paste the new VAD-based code in. No actual changes to behavior. (sir_richard)
  • A few key changes to the page fault path: (sir_richard)
  • 1) MiCheckVirtualAddress should be called *after* determining if the PTE is a Demand Zero PTE. This is because when memory is allocated with MEM_RESERVE, and then MEM_COMMIT is called later, the VAD does not have the MemCommit flag set to TRUE. As such, MiCheckVirtualAddress returns MM_NOACCESS for the VAD (even though one is found) and the demand zero fault results in an access violation. Double-checked with Windows and this is the right behavior. (sir_richard)
  • 2) MiCheckVirtualAddress now supports non-commited reserve VADs (ie: trying to access MEM_RESERVE memory). It used to ASSERT, now it returns MM_NOACCESS so an access violation is raised. Before change #1, this would also happen if MEM_COMMIT was later performed on the ranges, but this is now fixed. (sir_richard)
  • 3) When calling MiResolveDemandZeroFault, we should not make the PDE a demand zero PDE. This is senseless. The whole point is that the PDE does exist, and MiInitializePfn needs it to keep track of the page table allocation. Removed the nonsensical line of code which performed cleard the PDE during a demand-zero fault. (sir_richard)
  • I am able to boot to 3rd stage with these changes, so I have seen no regressions. Additionally, with these changes, the as-of-yet-uncommitted VAD-based Virtual Memory code completes 1st stage setup successfully, instead of instantly crashing on boot. (sir_richard)
  • Define the Decommitted PTE structure. (sir_richard)
  • A few other fixups to the page fault path: (sir_richard)
  • 1) Assert on empty kernel PTE instead of handling it as a bugcheck. Windows ASSERTs too. Also clarify some ASSERTs which Windows also does versus ASSERTs we are only doing due to lack of support for said feature. (sir_richard)
  • 2) User page fault path can now distinguish between a user-mode PTE fault, and a kernel-mode fault on a user PDE, both by creating a correct kernel PDE when needed instead of always creating user PTEs, as well as by only touching the UsedPageTableEntry reference counting mechanism when a user-address is in play. (sir_richard)
  • 3) Related to #2, also recognize when the faulting PTE is actually a PDE in the self-mapping region -- another scenario when the "user fault" is actually a kernel fault for a user PDE. (sir_richard)
  • 4) Add one more path where a Paged Pool PDE fixup can save the day instead of always faulting. (sir_richard)
  • 5) Finally, related to #2 and #3, handle the MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS scenario for a User PDE by treating it as a user fault. The code looks deceptively similar but there are slight differences which require the separate codepaths with some duplicated code. The magic is in the ordering. (sir_richard)
  • In trunk, these changes should not cause any regressions (let's hope so). On the internal VAD-based Virtual Memory branch, they now allow booting to 3rd stage and a fully usable ReactOS environment. MEMORY_AREA_VIRTUAL_MEMORY is gone on that branch. It's coming. (sir_richard)
  • Use PAGE_READWRITE as hardcoded protection instead of PAGE_EXECUTE_READWRITE -- the difference is meaningless on ReactOS Mm but actually causes issues on ARM3 with VADs. (sir_richard)
  • Implement VAD-based Virtual Memory Management. MEMORY_AREA_VIRTUAL_MEMORY is gone. Tested for 3 days with various experiments and handled all the cases and issues that appeared. Some code paths are not implemented because they were not encountered. Will consider implementing them if anything breaks -- note however that those code paths were not handled in RosMM either, so no new regressions are expected. (sir_richard)
  • Hoping this will work on other configurations other than just my test virtual machine. If so, it is a big day in Mm history. Only sections and cache still use the old Mm functionality. I -will- revert this if all hell breaks loose. (sir_richard)
  • Delete anonmem.c and move the ARM3-compatible code to ARM3/virtual.c. Whatever remained is for sections only, so move it to mm/section.c (sir_richard)
  • Fix some broken assertions in NtFreeVirtualMemory. Lesson: Do not try to "optimize" Microsoft's ASSERTs. (sir_richard)
  • Don't keep the address space locked when failing in NtFreeVirtualMemory. Dang this testbot is good at catching those bugs. (sir_richard)
  • Release the *right* lock. "Fix the fix" as the yuppies say. (sir_richard)
  • Blimey this was a hard one. When using the reserved flag to request 1MB in a new process (which is used for starting SMSS and CSRSS), we must request 1MB - 256 bytes (or any number, actually) to offset the fact that with a base address of 0x4, a 1MB region gets us at 0x100FFF, and not 0xFFFF, because Windows computes ending address *before* alignment, and then returns a new region size for you (so if you pass in 1MB, you get 1MB + 4096KB). In Win32csr, when the code is trying to release 1MB, this ended up in our "Case A", because it would still leave a page in the VAD. Fixed rtl to request just shy off a MB. Verified on Windows as well. (sir_richard)
  • The fix above was due to fixing "EndingAddress" which was being initialized to zero too late (after writing to it!). This caused allocations with a fixed base address that were already on top of another allocation not to be seen as a conflict, then we tried inserting a VAD and received an ASSERT saying we've already found a VAD there. After fixing the sizing code, the bug above creeped up. (sir_richard)
  • Whoever wrote the NtFreeVirtualMemory test is a godsend. It has been nailing bug after bug in the VAD implementation. Thank you. (sir_richard)
  • If the address space is exhausted, don't ASSERT, simply return failure just as Windows does. Should fix the last of the ASSERTions on TestBot. (sir_richard)
  • Next step is to support VirtualProtect/Query correctly. (sir_richard)
  • Drop a reference count to the page table in MiDeleteSystemPageableVm as ARM3 now owns PDEs. This helps out yet again to free a little bit of extra RAM up. (sir_richard)
  • For debugging only, want to see what is excercising MmAllocatePagesForMdl. The way I wrote this seems broken, but I can't find anything to test it with. (sir_richard)
  • Fix handling of command strings in KdpTrap. (Stefan Ginsberg)
  • Two Part Patch which fixes ARM3 Section Support (not yet enabled). This had been enabled in the past for testing and resulted in bizare crashes during testing. The amount of fixing required should reveal why: (sir_richard)
  • Part 1: Page Fault Path Fixes (sir_richard)
  • As an optimization, someone seems to have had changed the MiResolveDemandZeroFault prototype not to require a PTE, and to instead take a protection mask directly. While clever, this broke support for ARM3 sections, because the code was now assuming that the protection of the PTE for the input address should be used -- while in NT Sections we instead use what are called ProtoType PTEs. This was very annoying to debug, but since the cause has been fixed, I've reverted back to the old convention in which the PTE is passed-in, and this can be a different PTE than the PTE for the address, as it should be. (sir_richard)
  • Due to the reverting of the original path, another optimization, in which MiResolveDemandZeroFault was being called directly instead of going through MiDispatchFault and writing an invalid demand-zero PDE has also been removed. PDE faults are now going through the correct, expected path. (sir_richard)
  • MiResolveDemandZeroFault was always creating Kernel PTEs. It should create User PTEs when necessary. (sir_richard)
  • MiDeletePte was assuming any prototype PTE is a forked PTE. Forked PTEs only happen when the addresses in the PTE don't match, so check for that too. (sir_richard)
  • Part 2: ARM3 Section Object Fixes (sir_richard)
  • Fix issue when trying to make both ROS_SECTION_OBJECTs and NT's SECTION co-exist. We relied on the *caller* knowing what kind of section this is, and that can't be a good idea. Now, when the caller requests an ARM3 section vs a ROS section, we use a marker to detect what kind of section this is for later APIs. (sir_richard)
  • For section VADs, we were storing the ReactOS MEMORY_AREA in the ControlArea... however, the mappings of one individual section object share a single control area, even though they have multiple MEMORY_AREAs (one for each mapping). As such, we overwrote the MEMORY_AREA continously, and at free-time, double or triple-freed the same memory area. (sir_richard)
  • Moved the MEMORY_AREA to the "Banked" field of the long VAD, instead of the ControlArea. Allocate MMVAD_LONGs for ARM3 sections for now, to support this. Also, after deleting the MEMORY_AREA while parsing VADs, we now use a special marker to detect double-frees, and we also use a special marker to make sure we have a Long VAD as expected. (sir_richard)
  • Fix a broken assertion (Cameron Gutman)
  • Use ARM3 sections for the NLS mapping -- excercises both the system mapping as well as the per-process mapping. WorksForMe(c). Hopefully things will be better than last time now, and their usage can increase. (sir_richard)
  • As a side effect to 45140 one of the "non-used debug features", breaking in with WinDbg, would no longer work. Add this back, as well as the DPC timeout debug check and support for skipping ticks. (Stefan Ginsberg)
  • This doesn't work anymore, disable until investigated. (Stefan Ginsberg)
  • Perform system space mappings under the SystemSpaceViewLockPointer guarded mutex. (sir_richard)
  • Expand system space view buckets when they are running low. (sir_richard)
  • Support SEC_BASED section creates and mappings, implement based VAD parsing. (sir_richard)
  • Support section mappings at a fixed base address and check for conflicts. (sir_richard)
  • Define 8 prioritized standyby lists and initialize them. Also define the modified page list. (sir_richard)
  • Support mapping with SEC_COMMIT less than the entire size of the section. (sir_richard)
  • Detect and assert if ARM3 sections are attempted to be unmapped, since this isn't supported yet. (sir_richard)
  • Clean up some DPRINTs and clarify ARM3 ASSERTs vs. Windows ASSERTs. (sir_richard)
  • Add support for determining transition vs. demand zero faults (the former should not yet happen). (sir_richard)
  • Add a function for removing transition pages from either the standby or modified page lists (not yet used). (sir_richard)
  • Fix a crazy bug in KiTrap0EHandler, it didn't enable interrupts unless it trapped when interrupts were already disabled (during a page fault during page fault handling, for example). This seems to have worked because the old non-newcc version of MiReadPage appears to rely on a page fault to bring the paged out page in. Thanks Timo. (Stefan Ginsberg)
  • It appears ros wasn't ready for properly handling page faults with interrupts disabled, disable bugcheck and warn and dump stack instead for now. (Stefan Ginsberg)
  • Make KeRosDumpStackFrameArray and KdbSymPrintAddress safe to use at elavated IRQL -- don't use Unicode formats for DbgPrint at possible elavated IRQL/interrupts disabled as this may generate a page fault. Safely convert to ANSI instead before printing out the address. (Stefan Ginsberg)
  • Support getting the protection mask for other kinds of VADs in NtQueryVirtualMemory, instead of an ASSERT. (sir_richard)
  • Add initial support for standby page list and modified page list in the current page list routines. Add support for prototype PTEs in a few more cases, including handling of transition pages. Should not affect any of the current code as those lists/transition pages aren't yet used. (sir_richard)
  • Add support for calling NtAllocateVirtualMemory on an ARM3 section that was SEC_RESERVEd. (sir_richard)
  • Partly revert back to old behavior in attempt to fix regression. (sir_richard)
  • Fix a typo spotted by Stefan. (sir_richard)
  • Correctly handle transition vs free PTEs in MiDecrementShareCount. (sir_richard)
  • Add support for unmapping ARM3 sections. Trunk should now be ready for switching to ARM3 shared-memory, pagefile-backed sections, instead of Ros Mm. (sir_richard)
  • Attempt to hackfix MiGetPageProtection to support the case seen in OllyDBG. (sir_richard)
  • Implement Case C of NtFreeVirtualMemory, which is sometimes seen in some heap logs. The hard part is figuring out the right amount of committed/decommitted pages. Only supports 2-level paging for now as the algorithm is already messy enough. (sir_richard)
  • Cleanup MiQueryAddressState. (sir_richard)
  • Hermes Belusca: Give pnp driver object a name. (Aleksey Bragin; #7241)
  • CORE-6204 #resolve #time 10m #comment Do not touch NextEntry after removing it, instead restart the scan at the head of the list (checked against w2k3sp1). (Alex Ionescu)


  • Implement MiProtectVirtualMemory for VAD based allocator (it's very similar to the already implemented MiSetProtectionOnSection function). However it still doesn't fully work because support in other functions is missing (failed assertions in MiFlushTbAndCapture). (Aleksey Bragin; #7216)


  • Implement ProtectionMask validation in MiFlushTbAndCapture for cached and non-cached PFNs. (Aleksey Bragin)
  • Hack away UsedPageTable referencing in MiProtectVirtualMemory for now to help testman. (Aleksey Bragin)


  • Refactoring KiSatisfyObjectWait macro to prevent code duplication. (Mike Nordell)
  • Stop KeRundownThread from bugchecking on at least CTRL_C for console app. (Mike Nordell)



  • Write a lot of general prose about the operation of the Mm parts of NewCC. (Art Yerkes)
  • Dedicate to timo and chongo. (Art Yerkes)
  • No code changes. (Art Yerkes)


  • Only initialize the nonpged pool after the pfn database was initialized (Timo Kreuzer)
  • Fix" IRQL for the initialization of non paged pool (Timo Kreuzer)


  • remove useless code : Page Directories Entries are backed by ARM3 managed pages (Jérôme Gardou)


  • Always use interlocked operations on DeviceObject->ReferenceCount (Thomas Faber)


  • Fix stack alignment in KiSwitchToBootStack (Timo Kreuzer)
  • Handle ExceptionFrame == NULL in KeContextToTrapFrame and KeTrapFrameToContext (Timo Kreuzer)
  • Implement KiSwapContextInternal (Timo Kreuzer)
  • Fix KiSwapContext and KiThreadStartup (Timo Kreuzer)
  • Implement dispatching of user mode exceptions including in-paging of module data used by the kernel-debugger (Timo Kreuzer)
  • Implement KeInitializeInterrupt, KeConnectInterrupt, KeSynchronizeExecution (Timo Kreuzer)
  • Don't zero more than the actual PCR size in KiInitializePcr (Timo Kreuzer)
  • Add asm function KiInitializeSegments to initialize the segment selectors to proper values (Timo Kreuzer)
  • Initialize system call entrypoints in KiInitializeCpu (Timo Kreuzer)
  • Implement KiDpcInterruptHandler, KiIdleLoop, KiInitializeUserApc, KiSwapProcess, KiSystemCallHandler, KiInitializeContextThread, KiSwapContextResume (Timo Kreuzer)
  • Implement asm functions KiRetireDpcList, KiInterruptDispatch, KiSystemCallEntry64, KiZwSystemService (Timo Kreuzer)


  • use ARM3 allocation for PDE pages. (Jérôme Gardou)
  • There is now one table for system PDEs, and their pages are not leaked anymore. (Jérôme Gardou)
  • Also fix bug 5857 (aka mshtml bug). (Jérôme Gardou)
  • Only for x86 now. Timo, I think you should do it for amd64 as well. (Jérôme Gardou)
  • Thanks for your patience, go back to testing now. (Jérôme Gardou)
  • A huge congrats to Cameron and Thomas, without them I wouldn't even have dared touching this code. (Jérôme Gardou)
  • fix returned value in case of failure in MiFindEmptyAddressRangeDownTree (Jérôme Gardou)
  • First drop of a new implementation of NtAllocateVirtualMemory. (Jérôme Gardou)
  • Very incomplete, don't hesitate to drop in and complete it. (Jérôme Gardou)
  • For now, only MEM_RESERVE is kind of supported, as well as MEM_RESERVE|MEM_COMMIT (Jérôme Gardou)
  • Make MmWorkingSetList PTE local (Jérôme Gardou)
  • Map MmWorkingSetList to Vm.VmWorkingSetList when creating process. (Jérôme Gardou)
  • Stop leaking references to PDEs. (Jérôme Gardou)
  • Still one reference left to the TLB mapping at process deletion. (Jérôme Gardou)
  • finally, release user shared data at process address space cleanup. (Jérôme Gardou)
  • release PDE pages that might not be freed at process end. (Jérôme Gardou)
  • Let the caller handle PDE release when deleting a PTE (Jérôme Gardou)
  • restore Richard's ASSERT : All user PDE pages are now freed! (Jérôme Gardou)
  • if A ASSERT B => ASSERT(B or not A) (Jérôme Gardou)
  • assert PDE ref count consistency everywhere (Jérôme Gardou)
  • fix the fix(tm) : after reference decrement, the maximum must not be reached (Jérôme Gardou)
  • initialize VmWorkingSet pointer for system process. (Jérôme Gardou)
  • Should fix random crashes when paging out. (Jérôme Gardou)
  • do not initialize idle process address space lock twice (Jérôme Gardou)


  • Add MI_REAL_SYSTEM_RANGE_START, which is the canonical system space base address, while MmSystemRangeStart variable contains a broken value, like on Windows. (Timo Kreuzer)
  • Define MmSystemRangeStart to MI_REAL_SYSTEM_RANGE_START, since on amd64 there is no dynamic system space start address and we don't want to use the broken address anywhere (Timo Kreuzer)
  • Add some more address layout definitions (Timo Kreuzer)
  • Add MiIsPteOnP*eBoundary() macro (Timo Kreuzer)
  • Add MMPPE, MI_WRITE_VALID_PPE and ValidKernelPpe definitions (Timo Kreuzer)
  • Fix initialization of PrototypePte (Timo Kreuzer)
  • Add mappings for VAD bitmap and working set list to MiInitializePageTable (Timo Kreuzer)
  • Fix calculations in MiBuildNonPagedPool (Timo Kreuzer)
  • Improve MiBuildSystemPteSpace (Timo Kreuzer)
  • Implement MiBuildPfnDatabase, MiAddDescriptorToDatabase, MiBuildPfnDatabaseFromPageTables, MiSetupPfnForPageTable all of these are written to be portable, yet they are untested on anything else than amd64 builds (Timo Kreuzer)
  • Mostly finish MiInitMachineDependent (Timo Kreuzer)
  • Implement more of MmCreateProcessAddressSpace (Timo Kreuzer)
  • Acquire pfn lock and use MiRemoveZeroPage in MiGetPteForProcess (Timo Kreuzer)







  • Remove duplicated definitions from ntddk.h (Timo Kreuzer)
  • Fix annotations in ntifs.h, wdm.h, ntgdi.h, winddi.h (Timo Kreuzer)


  • Add new ntlsa.h file to the PSDK. (Eric Kohl)
  • LsarAddPrivilegesToAccount: Implement the ability to add new privileges to an existing privilege set. (Eric Kohl)


  • Don't include NDK from winnt.h, instead duplicate NtCurrentTeb inline definition between psfuncs.h and winnt.h as it used to be (Timo Kreuzer)
  • remove duplicated _GENERAL_LOOKASIDE_POOL (Timo Kreuzer)
  • Add missing NTKERNELAPI to ObDereferenceObjectDeferDelete (Timo Kreuzer)
  • Add missing PEXCEPTION_ROUTINE, RtlLookupFunctionEntry, RtlVirtualUnwind to winnt.h (Timo Kreuzer)
  • Remove PEXCEPTION_ROUTINE from NDK (Timo Kreuzer)
  • delete obsolete reactos/mingw-w64 folder (Timo Kreuzer)


  • PSEH2 uses a special mechanism to deal with nested try blocks inside the same function. Instead of pushing a second exception registration record on the exception list, it uses an internal pointer to handle the different try-levels. (Timo Kreuzer)
  • But when a function using SEH is inlined, the resulting code will push 2 registration frames on the stack. Now it happens with GCC 4.7.1 that these frames get shuffled on the stack, putting one for the inner try on a higher stack address. This is something that RtlUnwind regards as a bug and throws a STATUS_INVALID_UNWIND_TARGET exception. This was the reason for the crashing PSEH2_TEST, when compiled with GCC 4.7.1. (Timo Kreuzer)
  • To fix this, I added a mechanism that will prevent functions using SEH from being inlined. (Timo Kreuzer)
  • Make _SEH_DontInline() static inline. (Amine Khaldi)


  • Implement PSEH 3.0. Currently disabled by default. Dedicated to Amine Khaldi. (Timo Kreuzer)
  • Remove excessive '\' (Timo Kreuzer)



  • Support spaces in the source directory path on Windows. (Aleksey Bragin)




  • Fix a bug in DbgBreakPointWithStatus: the int 3 must be after RtlpBreakWithStatusInstruction (Timo Kreuzer)
  • Fix bugs in RtlInterlockedFlushSList (Timo Kreuzer)
  • Improve comments (Timo Kreuzer)



  • RtlGetFullPathName_UstrEx returns NTSTATUS (Thomas Faber)
  • Add missing mmtypes.h include in mmfuncs.h (Thomas Faber)
  • Remove RtlDetermineDosPathNameType_Ustr from rtlfuncs.h, move it up in path.c (Thomas Faber)
  • Add RtlGetLongestNtPathLength to rtlfuncs.h (Thomas Faber)



  • Rtl provides worker queue and timer queue functionality, which queues a worker thread associated with a caller-supplied callback. In Windows, Rtl by default calls RtlCreateUserThread, but as soon as kernel32 loads, it's DllMain calls an exported function RtlSetThreadPoolStartFunc which changes that default to a special Base function that calls CreateRemoteThread instead. The net result is that Win32 processes using the Rtl functionality get their threads properly registered with CSRSS. In ReactOS, this did not happen, so when those threads called into CSRSS, CSRSS had no CSR_THREAD structure/state for them, which is why CsrCreateThread (and the API loop) are so badly hacked. This commit implements RtlSetThreadPoolStartFunc, implements the kernel32 base functions which wrap CreateRemoteThread, and implements the rtl functions which wrap RtlCreateUserThread. Services, Setup, and any ReactOS application using RPC now have the worker threads correctly registered. (Alex Ionescu)


  • Implement SamEnumerateGroupsInDomain and SamEnumerateUsersInDomain (ignore UserAccountControl). (Eric Kohl)
  • Simplify SamrEnumerateAliasesInDomain. (Eric Kohl)
  • Implement SamCreateUser2InDomain / SamrCreateUser2InDomain (untested) and SamLookupNamesInDomain / SamrLookupNamesInDomain. (Eric Kohl)
  • Implement SamLookupIdsInDomain and SamrLookupIdsInDomain. (Eric Kohl)


  • Use Wine debug messages in samlib.dll. (Eric Kohl)
  • Move SAM initialization code from samlib.dll to samsrv.dll. (Eric Kohl)
  • Lsass.exe initializes SAM instead of syssetup.dll. (Eric Kohl)


  • Use proper access rights in calls to LsaOpenPolicy. (Eric Kohl)


  • Add atliface.idl for the MSVC build. Dedicated to Thomas. (Amine Khaldi)



  • Fix build. (Amine Khaldi)
  • Flesh out the _main function in the new SMSS, including the SEH filter and SmpTerminate support. Instead of launching Winlogon (The "initial command", we launch the ReactOS SMSS for now -- and kill the system if it is ever terminated, as we should). We use the right priority, set the right critical flags, use the correct debug parameters, and acquire/release the correct privileges. Only thing not supported is launching ntsd if the "Debug Initial Command" global flag is set. I promise to implement that once someone implements ntsd ;-) (Alex Ionescu)
  • Oh, right, rbuild. (Alex Ionescu)
  • Create the VolumesSafeForWriteAccess and Sm2ApiPort. Create all the required security descriptors. Create the two API threads. Initialize a bunch of other stuff needed for later. Initialize tag heap and enable hard errors. Api loop waits on the LPC port but nothing should be going through there for now. (Alex Ionescu)
  • Initialize a bunch more internal stuff, and start parsing the registry for settings. Right now just ProtectionMode and AllowProtectedRenames are parsed. Stub functions needed for the rest of initialization. Create the \Sessions directory. Hack to work under setup. Loop BootExecute and PageFile entries. Create SMSS environment. Detect MiniNT mode (PE/LiveCD). Delete SAFEBOOT_OPTION if found. (Alex Ionescu)
  • Implement all the required registry configuration parsing functions. KnownDLLs, DosDevices, PageFiles, Subsystems, ExcludedKnownDLLs, PendingFileRenameOperations, ObjectDirectories, Environment keys are all processed and put into lists. Other than creating the object directories and setting the environment variables, though, no other work happens -- but we do DPRINT1 what should happen. (Alex Ionescu)
  • Implement KnownDLL and DOSDevice initialization now that the kernel bugs are gone. Compared to SMSS, SMSS2 is smarter and uses a Ldr callback to manually add any imported DLLs of KnownDLLs to the KnownDLL list, which helps with long-term app launch performance. Next up will be environment and page file. (Alex Ionescu)
  • Implement command line and token parsing. Implement pagefile descriptor structure, format, flags, and parsing. They are now created as they should. Use SmpHeap instead of RtlGetProcessHeap() to keep code cleaner. Use SmpSystemRoot instead of NtSystemRoot now that it's being defined. "Environment" in registry should be parsed twice to handle nested expansions. (Alex Ionescu)
  • Implement all the processing required for being able to create emergency, system, and manual-sized page files, on both fixed drives any "any" drives. Missing the code to build volume descriptors and to actually ask the kernel to create the file (right now, just prints what should be done and sizes). (Alex Ionescu)
  • Create and define the volume descriptor structure, and go ahead and build some volume descriptors! (Alex Ionescu)
  • Implement SmpCreateDynamicEnvironmentVariables such that all the SMSS-generated variables are created. Compared to SMSS it has some bug fixes and also handles the safe-mode options key. Next step is to handle boot/setup/execute keys and get autochk running from SMSS2. (Alex Ionescu)
  • Implement helper functions for reading and writing to the BSD (What lets Windows know if this was a good boot/shutdown or a bad one, and to display the recovery settings or not (FreeLDR should do this...)). Implement the functions needed to launch native applications, and add support for launching autochk and any other bootexecute applications. Set the correct SessionID with the kernel by calling ProcessSessionInformation. Pending File Rename Operations are the last big thing left, plus actual pagefile creation. (Alex Ionescu)
  • Fix a bug in SmpParseCommandLine. (Alex Ionescu)
  • README.WINE] (Amine Khaldi)
  • Mark some modules, that are in sync with Wine 1.3.37, as such. (Amine Khaldi)
  • Fix MSVC build (Timo Kreuzer)
  • Properly handle an empty list in SmpSaveRegistryValue (Thomas Faber)
  • Compare the value string for equality, as the comment says, not inequality (Thomas Faber)
  • This fixes a crash, although another solution may perhaps be better (Thomas Faber)
  • Implement the rest of the code to create page files. All that's missing is the actual call to NtCreatePagingFile. (Alex Ionescu)
  • Implement SmpProcessFileRenames and actually create the paging file now. All initialization work is now done by SMSS2. (Alex Ionescu)
  • Use SMSS2's environment when creating SMSS. (Alex Ionescu)
  • Add some debugging to figure out what's happening on KVM. (Alex Ionescu)
  • More attempts at fixing KVM. (Alex Ionescu)
  • Implement SmpTranslateSystemPartitionInformation which sets a few last registry keys as part of the initialization process. (Alex Ionescu)
  • Implement SmpLoadSubsystemsForMuSession which correctly creates a session, loads win32k.sys inside of it, and then detaches from the session. Winlogon.exe is set as the initial command (but not launched), and CSRSS is fake-started. (Alex Ionescu)
  • Kill most debug prints that aren't errors. (Alex Ionescu)
  • I hate you, rbuild. (Alex Ionescu)
  • Fix build. (Amine Khaldi)
  • Implement executing the initial command as well as doing the SM-to-SM initial connection. (Alex Ionescu)
  • Implement the main LPC loop and handle all the supported APIs (all stubs for now). Also handle new connection requests and implement SmpHandleConnectionRequest. (Alex Ionescu)
  • Implement subsystem helper functions. (Alex Ionescu)
  • Use SmApiPort2 instead of Sm2ApiPort. (Alex Ionescu)
  • Rename the SMSRV_APIs not to conflict with the function names, nor with the client functions in smlib. (Alex Ionescu)
  • Implement (not yet used) Session Management APIs. (Alex Ionescu)
  • Make not-implemented functions return a failure. Cleanup the SMSS hack in the _main function to be cleaner. Add a few more functions and flags to the header. Fix a function prototype. (Alex Ionescu)
  • Implement SmpExecPgm and SmpSbCreateSession. Nothing happens (STATUS_OBJECT_NAME_NOT_FOUND is returned) because we don't really launch CSRSS and so we can't find a subsystem for Winlogon and fail (as expected for now). (Alex Ionescu)
  • Implement SmpCallCsrCreateProcess and SmpLoadSubsystem. We now load CSRSS and everything works 100%! Winlogon is now launched by SMSS2 and no regressions have been found. (Alex Ionescu)
  • Do not print an uninitialized string (Thomas Faber)
  • When deleting an old page file, take the newly freed space into account (Thomas Faber)
  • Keep at least 64 MB of disk free instead of 32 so that 2nd stage can succeed with a small disk (Thomas Faber)
  • Miscellaneous fixes and simplifications in the page file code (Thomas Faber)
  • Fix an uninitialized variable usage, CID 15345 (Thomas Faber)
  • Fix an incorrect sizeof usage, CID 15317 (Thomas Faber)


  • Put SMSS back in charge of the pagefile as yet another attempt to fix KVM. (Alex Ionescu)
  • Nuke SMSS. SMSS2 is now in full control. (Alex Ionescu)




  • Bulgarian translation update of several modules (bug no. 6840), by CCTANEB, minor fixes by me; (Olaf Siejka)
  • Polish translation update of sysdm by me; (Olaf Siejka)
  • Rename pt-pt to match the pt-br sublang. (Kamil Hornicek)
  • missed this one, sorry (Kamil Hornicek)
  • Renaming to match the CHINESE_TRADITIONAL sub lang. (Kamil Hornicek)
  • da-da -> da-dk (Kamil Hornicek)
  • Missed this one in r55891. (Kamil Hornicek)
  • Dll/cpl UTF-8 conversion (Elton Chung; #6333)
  • Follow-up to r55891. (Kamil Hornicek)
  • Resource cleanup. (Kamil Hornicek)
  • romanian translation update by Stefan Fulea (bug no. 6956); (Olaf Siejka)
  • fix unrecognized escape sequence warnings; (Olaf Siejka)
  • romanian translation update (including INF update) by Stefan Fulea (bug no. 6956); (Olaf Siejka)
  • turkish translation update by Arda Tanrýkulu (bug no. 6977); (Olaf Siejka)
  • polish translation of wined3dcfg; (Olaf Siejka)
  • fix remainder of unrecognized escape sequence warnings; (Olaf Siejka)
  • romanian rapps translation update (including INF update) by Stefan Fulea (bug no. 6878); (Olaf Siejka)
  • italian translation update by Paolo Devoti (bug no. 6980); (Olaf Siejka)
  • turkish translation of dxdiag by Arda Tanrýkulu (bug no. 6986); (Olaf Siejka)
  • italian translation of browseui by Paolo Devoti (bug no. 6980); (Olaf Siejka)
  • turkish partial translation of setup and user32 by Arda Tanrýkulu (bug no. 6999); (Olaf Siejka)
  • italian translation update by Paolo Devoti (bug no. 7012); (Olaf Siejka)
  • brasilian portugeese translation by Matheus Macabu (bug no. 7079); (Olaf Siejka)
  • slovak fontview translation update by Mario Kacmar (bug no. 7201); (Olaf Siejka)
  • polish fontview translation update by me; (Olaf Siejka)
  • hungarian calc translation by Nagy Tibor(xnagytibor at gmail dot com); CORE-6511 #resolve #comment Commited. Thanks for your work (Olaf Siejka)
  • dutch rapps translation update by stijnsanders (stijn at yoy dot be); CORE-6540 #resolve #comment Commited. Thanks for your work (Olaf Siejka)
  • Add Chinese translation for time/date control panel applet by yinwh79 at CORE-6702. (Ziliang Guo)






  • Remove whitespace differences and mark ReactOS changes to make Wine-syncing easier (Thomas Faber)


  • Add a missing dependency on psdk, revealed by the previous commit. (Amine Khaldi)




  • Make LFONTs (for some incomprehensible reason called TEXTOBJ in ros) shared objects, as they are supposed to be. Since that conflicts with our totally broken font code that happily messes with the LFONT's contents, an additional push lock is aquired to get exclusive ownership. (Timo Kreuzer)


  • Make the outdated CSR_PLUGIN architecture as close to the CSR_SERVER_DLL architecture as possible for easier migration later. Main changes are return values/number of parameters, importing csrsrv functions instead of using a manual export table, and other similar small changes. Also, add win32csr.dll to the registry command-line for CSRSS, but still load it hard-coded for now. (Alex Ionescu)


  • Show some error messages in case NtUserSystemParametersInfo fails (Giannis Adamopoulos)
  • load gpsi->dtCaretBlink and g_PaintDesktopVersion in sysparams.c (Giannis Adamopoulos)
  • Rename IntGdiGetLanguageID to UserGetLanguageID (Giannis Adamopoulos)
  • Remove some unused functions and definitions (Giannis Adamopoulos)
  • Massive rapps update. Almost anything revisited and corrected. (Daniel Reimer)
  • Fix a warning caused by my previous commit (Giannis Adamopoulos)
  • Cleanup Win32kProcessCallback and Win32kThreadCallback (Giannis Adamopoulos)
  • Even though it works, trying to post a message in Win32kProcessCallback after the THREADINFO is destroyed can only cause trouble, so move it in Win32kThreadCallback (Giannis Adamopoulos)
  • There is no need to try opening a desktop and windowstation before winlogon initializes (Giannis Adamopoulos)
  • Handle errors properly when we fail to get a default window station and desktop for the new process (Giannis Adamopoulos)
  • Enable win32k syscall hook callbacks (Giannis Adamopoulos)
  • Rewrite SetThreadDesktop to update THREADINFO properly and handle errors properly (Giannis Adamopoulos)
  • Do not initialize the THREADINFO in GetW32ThreadInfo as it is now done properly (actually leave a small hack that updates pci->dwTIFlags) (Giannis Adamopoulos)
  • Add UserDbgAssertThreadInfo that asserts the integrity of THREADINFO, CLIENTINFO and CLIENTTHREADINFO. This is called by GetW32ThreadInfo and the syscall hook callbacks (Giannis Adamopoulos)
  • Use the parse context to store whether or not the desktop object was created. If the object was not created, NtUserCreateDesktop should return immediately (this can happen if it didn't exist) (Giannis Adamopoulos)
  • Before this , if the desktop already exited, we opened the existing desktop and initialized it again. We also created another desktop heap, desktop window, etc.. This fact confused threads using this desktop and caused problems like the assertion we see in the test suite (Giannis Adamopoulos)
  • fix some more tests in user32:winstation (Giannis Adamopoulos)
  • Update pti->pClientInfo->hKL when pti->KeyboardLayout changes (Giannis Adamopoulos)
  • Fixes assertion after activating a second keyboard layout (Giannis Adamopoulos)
  • In reactos when an application tries to use a desktop or window station object we never check if it should have access to the object. However the only exception to this is NtUserGetObjectInformation. Since desktops and windows stations are a mess, NtUserGetObjectInformation always fails. Ironically windows do such access checks everywhere except NtUserGetObjectInformation. Fix NtUserGetObjectInformation by removing access checks (Giannis Adamopoulos)
  • Note: access checks for every other place will be fixed soon (Giannis Adamopoulos)
  • Initilize ExDesktopObjectType->TypeInfo.ValidAccessMask and ExWindowStationObjectType->TypeInfo.ValidAccessMask to let win32k use access checks to desktop and window station objects (Giannis Adamopoulos)
  • When opening a desktop and window station during THREADINFO initialization, give full access to the objects (Giannis Adamopoulos)
  • Clip test vertically in ExtTextOut when ETO_CLIPPED is used (Rafał Harabień)
  • GetFocus returns NULL if calling thread is not a foreground thread (Rafał Harabień)
  • Fix a potential memory leak. Spotted by Samuel Serapion. (Kamil Hornicek)
  • Anschluß is no German! (Daniel Reimer)
  • Changing to Anschluss (Daniel Reimer)
  • Use local labels in the inline asm code to avoid a clash when building with link-time code generation. (Dmitry Gorbachev)
  • Modify NtGdiSelectBitmap to correctly handle the case of pdc->dclevel.pSurface == 0 (Timo Kreuzer)
  • Small code improvement without functional change for rtlstr functions (Timo Kreuzer)
  • Fix another bug in NtGdiSelectBitmap, where selecting the same bitmap a second time, would release the bitmap (Timo Kreuzer)
  • remove assertions from the process callout checking that ppiCurrent->rpdeskStartup and ppiCurrent->hdeskStartup are valid. This can happen in case we fail to open the initial desktop or window station (Giannis Adamopoulos)
  • Remove an unused function (Giannis Adamopoulos)
  • Peb->ProcessParameters->DesktopInfo must be probed and captured with SEH before used in win32k (Giannis Adamopoulos)
  • Create defaultDCstate when the first dc is created not when the first dce is created (Giannis Adamopoulos)
  • Fix build (Giannis Adamopoulos)
  • There is no need to cache the current window station in SystemParametersInfo. Query it directly when needed (Giannis Adamopoulos)
  • Do not store the PDEVOBJ and a fake name in MONITOR struct. Use MONITOR.HDEV instead (which is an opaque pointer to a PDEVOBJ) (Giannis Adamopoulos)
  • Fix SPI_SETMOUSESPEED (Edijs Kolesnikovics,
  • Hide test traces in test cd. This should make comparing test logs easier (Giannis Adamopoulos)
  • allocate FAST_MUTEX objects from non paged pool. (Jérôme Gardou)
  • This should ix a bunch of weird testbot failures. (Jérôme Gardou)
  • Any suggestion on the TAG is welcome (Jérôme Gardou)
  • Properly destroy the THREADINFO if we fail to create it. We don't leak the THREADINFO no in case of failure. It should also fix random assertion failure when running user32:desktop tests (Giannis Adamopoulos)
  • Fix WinPosShowIconTitle that checked if a variable was NULL before assigning it to anything. (Stefan Ginsberg)
  • Properly create the WindowStations directory in NtUserInitialize. Now we take into account the fact that if we are not in session 0, it should be created in \Sessions direcory (Giannis Adamopoulos)
  • Clean up IntParseDesktopPath and make it use the correct WindowStations (Giannis Adamopoulos)
  • Add some comments and cleanup (Giannis Adamopoulos)
  • Remove the unused IntGetFullWindowStationName, IntGetWindowStationObject and IntGetWinStaObj (Giannis Adamopoulos)
  • remove unrelated and unused information from the WINSTATION_OBJECT (Giannis Adamopoulos)
  • null terminate DesktopObject->pDeskInfo->szDesktopName and WindowStationObject->Name (Giannis Adamopoulos)
  • null terminate the buffer when NtUserGetObjectInformation is called with UOI_NAME parameter (Giannis Adamopoulos)
  • should fix a random failure in user32:desktop tests (Giannis Adamopoulos)
  • move wallpaper info from WINSTATION_OBJECT to SPIVALUES. Also remove some unused fields from WINSTATION_OBJECT (Giannis Adamopoulos)
  • Fix a memory leak in EngUnloadImage (Timo Kreuzer)
  • add an ASSERT (Timo Kreuzer)
  • Fix MSVC warnings (Timo Kreuzer)
  • ntoskrnl: fix pointer dereference before testing for it (Hervé Poussineau)
  • Should fix usb/livecd failure reported by igorko. bug 6696..or something? (Alex Ionescu)
  • Fix a possible integer overflow in NtGdiCreateBitmap (Timo Kreuzer)
  • Don't cast length of LARGE_STRING (ULONG) to USHORT, instead truncate to MAXUSHORT. This is still hacky, but better than before. (Timo Kreuzer)
  • Fix MSVC warnings (Timo Kreuzer)
  • Fix build (Timo Kreuzer)
  • Fix build 2 (Timo Kreuzer)
  • Take the "unsignedness" of the index into account. (Kamil Hornicek)
  • Initialize the DC's CombinedClip when creating the DC. Fixes a crash caused by Explorer++ (Timo Kreuzer)
  • When using output rect clipping results in input rect, scale them to input rect size. Fixes gdiplus:graphics winetest crash. (Rafał Harabień)
  • Fix win32k release build (Pierre Schweitzer)
  • Add new dibcode, currently as a static library. Not used, not built. (Timo Kreuzer)
  • Add EngAcquireSemaphoreShared prototype (Timo Kreuzer)
  • implement RECTL_bIsWellOrdered (Timo Kreuzer)
  • implement DbgLookupDHPDEV (Timo Kreuzer)
  • start implementation of driver callback debug hooks (Timo Kreuzer)
  • Initial implementations of IntEngBitBlt, EngBitBlt, NtGdiBitBlt (Timo Kreuzer)
  • Add a trivial XLATEOBJ as a global variable. (Timo Kreuzer)
  • Make sure the XLATEOBJ is not NULL, when calling the diblib code (Timo Kreuzer)
  • Remove the IntEngMaskBlt stub, its a very special function for font rendering, keep the old one (Timo Kreuzer)
  • Add more driver debug assertions (Timo Kreuzer)
  • Remove obsolete definition (Timo Kreuzer)
  • Add support for pattern brushes and bottom-to-top blt in new EngBitblt (Timo Kreuzer)
  • implement a new much simpler EngCopyBits (Timo Kreuzer)
  • improve clip enumeration code (Timo Kreuzer)
  • The code now generally works very well now, only has a few bugs left (Timo Kreuzer)
  • Modify EBRUSHOBJ_pvGetEngBrush to return a pointer to the SURFOBJ, instead of a handle, this simplifies the code (Timo Kreuzer)
  • Allow to build win32k with the new dib library, a switch is in win32k's CMakeLists.txt (Timo Kreuzer)
  • Fix build (Timo Kreuzer)
  • Fix right-to-left support the new EngBitBlt code (Timo Kreuzer)
  • Remove an ASSERT that we don't support (Timo Kreuzer)
  • Fix clipping in IntEngBitBlt by bailing out when the target rect got empty (Timo Kreuzer)
  • Delete obsolete file (Timo Kreuzer)
  • You can use the code now, but there is a bug in the clipping code somewhere, sometimes causing the taskbar to be overwritten (Timo Kreuzer)
  • Rewrite coordinate transformation code to use XFORMOBJ apis instead of using floating point in kernel mode. As a small present fix 14 gdi32_winetests (5 mapping, 9 bitmap) (Timo Kreuzer)
  • I disabled some RtoL code, since it didn't work anyway and caused more bugs than it fixed. (Timo Kreuzer)
  • Revert hack. (Stefan Ginsberg)
  • Fix indentation and the name of the programmer who dared to use GNU style indentation. (Timo Kreuzer)
  • Fix path reference leaks in PATH_add_outline (Timo Kreuzer)
  • Should fix failed assertion when closing google earth. (Timo Kreuzer)
  • thanks to r3ddr4g0n for providing the neccessary debug info. (Timo Kreuzer)
  • In NtGdiGetTextExtentExW fail when Count is negative. (Timo Kreuzer)
  • Troubleshooting bug 5630, moved DestroyProcessClasses from process to thread since process is called first. This way, it is assured the class destruction is on queue, but not before thread death. (James Tabor)
  • Added a global pointer to be used in a later commit. (James Tabor)
  • Warning: this does not fix bug 5630. (James Tabor)
  • Fix (almost) calculation of pattern origin. There's still a bugger left. (Timo Kreuzer)
  • Fix calculation of the brush origin. The coordinates passed to EngBitBlt "defines which pixel in the mask corresponds to the upper left corner of the destination rectangle." Our code was using it as corresponding to the surface origin. (Timo Kreuzer)
  • The fix is currently only used when the new dib code is compiled. The old dib code is broken and expects the broken behaviour (Timo Kreuzer)
  • Fix a bug in the region code that could cause allocating 0 bytes (Timo Kreuzer)
  • Remove SetLastError() (Timo Kreuzer)
  • flatten" IntGdiCombineRgn making it more readable (Timo Kreuzer)
  • Make XFORMOBJ_iSetXform fail, when the XFORM is invalid (eM11 or eM22 are 0) (Timo Kreuzer)
  • Handle error in GreModifyWorldTransform (Timo Kreuzer)
  • Make sure a bitmap is compatible with the dc before selecting it. (Timo Kreuzer)
  • Pass EBRUSHOBJ to IntPatBlt instead of the BRUSH. This way we can use the DC's eboFill, instead of initializing a new EBRUSHOBJ. (Timo Kreuzer)
  • Fix NtGdiPatBlt: ROPs with a source are not allowed, the background ROP is simply ignored. (Timo Kreuzer)
  • Implement TranslateCOLORREF, based on IntHandleSpecialColorType, but now returning both the translated color and the resulting RGB color, correctly handling DIBINDEX, which will use the given value without translation. (Timo Kreuzer)
  • Rewrite NtGdiSetPixel using IntPatBlt (Timo Kreuzer)
  • Rewrite NtGdiGetPixel using IntEngCopyBits (Timo Kreuzer)
  • Fix EXLATEOBJ_iXlateTable to return 0, when the palette index is too big, instead of wrapping around (Timo Kreuzer)
  • Remove old debugcode (Timo Kreuzer)
  • Fix palette index wraparound when initializing a DIB palette with DIB_PAL_COLORS. Fixes gdi32_winetest::palette (Timo Kreuzer)
  • add missing DBG_DECREASE_LOCK_COUNT() when deleting an object that was exclusively locked. Fixes strange hang in comctl32_winetest. (Timo Kreuzer)
  • The question is: why does changing a variable, which is never checked cause such trouble? (Timo Kreuzer)
  • Don't pass the DC's clip object to IntEngCopyBits, when querying a pixel (Timo Kreuzer)
  • make acExclusiveLockCount[] 0x20 bytes long, just to be really sure, that (x & 0x1F) does never overflow it. (Timo Kreuzer)
  • Fix initialization of XLATEOBJ in NtGdiGetPixel. Fixes GetPixel regressions. (Timo Kreuzer)
  • In NtGdiGetPixel check if the requested pixel is inside the boundaries of the surface, and return CLR_INVALID if not. (Timo Kreuzer)
  • In NtGdiSetPixel, return the real RGB value, which is the target format color translated back to RGB, not the desired RGB value. Fixes a few bitmap winetest. (Timo Kreuzer)
  • Handle a too large index in PALETTE_ulGetRGBColorFromIndex (Timo Kreuzer)
  • When a DC has the default palette selected, use the color value from PALETTERGB() directly instead of looking it up in the dc palette (just as the code was before). Fixes skipped bitmap winetests (Timo Kreuzer)
  • Improve formatting (Timo Kreuzer)
  • Don't calll GDIOBJ_vDereferenceObject from GDIOBJ_vUnlockObject, instead manually decrement the reference count. This allows us to ASSERT that the former function is never called with an exclusive lock held. (Timo Kreuzer)
  • Use GDIOBJ_vSetObjectOwner instead of GreSetObjectOwner on an exclusively locked object. (Timo Kreuzer)
  • Rewrite SURFACE_AllocSurface(), which now does the part of the former SURFACE_bSetBitmapBits() as well. This is to allocate the bits for a bitmap directly with the SURFACE object in one allocation. Also don't use kernel mode sections anymore by default, but paged pool memory. (Timo Kreuzer)
  • Fix a mistake (Timo Kreuzer)
  • Use user mode mem for bitmaps larger than 4K to save pool memory. (Timo Kreuzer)
  • Fix gcc uninitialized variable warning (Timo Kreuzer)
  • Fix RLE hack (thanks to Mephisto) (Timo Kreuzer)
  • Remove obsolete flags (Timo Kreuzer)
  • Try to fix RLE regression (Timo Kreuzer)
  • Fix a typo (Timo Kreuzer)
  • CRT:INTRIN_X86] (Thomas Faber)
  • Use correct check for x64 architecture (Thomas Faber)
  • Fix Interlocked*64 return types (Thomas Faber)
  • Add _InterlockedXor64 (Thomas Faber)
  • Implement GreCreatePaletteInternal and make NtGdiCreatePaletteInternal safe regarding user mode memory access. (Timo Kreuzer)
  • Allow allocating an indexed palette without initializing the colors (Timo Kreuzer)
  • Implement PALETTE_AllocPalWithHandle (Timo Kreuzer)
  • remove pointless Self member in PALETTE structure (Timo Kreuzer)
  • cleanup palette.h a bit (Timo Kreuzer)
  • Modify DIB_MapPaletteColors, first allocating a palette without initializing the colors, then setting up the colors. This wway we don't need to allocate an intermediate buffer. (Timo Kreuzer)
  • Fix a palette leak in DIB_CreateDIBSection (Timo Kreuzer)
  • Remove PALETTE_AllocPalette and PALETTE_AllocPaletteIndexedRGB, use PALETTE_AllocPalWithHandle instead (Timo Kreuzer)
  • Add some code stub and comments for realizing DIB brush palettes (Timo Kreuzer)
  • Move some function prototypes (Timo Kreuzer)
  • A pointer is not a handle. A handle is not a pointer. At least in most cases. Defining STRICT in win32k revealed horrible things... (Timo Kreuzer)
  • Revert a part of 56478. (Timo Kreuzer)
  • Only set the surface's bitmap bits when iType == STYPE_BITMAP. (Timo Kreuzer)
  • Fixes booting with vbox drivers installed. (Timo Kreuzer)
  • Remove debug break point. Thanks to r3ddr4g0n for noticing. (Timo Kreuzer)
  • Add a define for non window pointers. Help out Timo. (James Tabor)
  • Add cjMaxBits parameter to GreCreateDIBitmapInternal (Timo Kreuzer)
  • Rename GDIBRUSH_* constants to BR_*, as they are named in gdikdx (Timo Kreuzer)
  • Commit what I forgot (Timo Kreuzer)
  • Add alerts and set window state to message box windows. Expands bug 5281. (James Tabor)
  • Rename PALETTE_AllocPalette2 to PALETTE_AllocPalette, allocate PALETTE and color array in one allocation, improve code (Timo Kreuzer)
  • When dereferencing an object without a handle, don't check for the ready-to-die flag (Timo Kreuzer)
  • Implement CreateDIBPalette(), replacing BuildDIBPalette. (Timo Kreuzer)
  • It creates a palette without a handle and handles DIB_PAL_COLORS as well as DIB_RGB_COLORS. Additionally it now handles DIB_PAL_BRUSHHACK, which is used for DIB brushes, when DIB_PAL_COLORS is passed to CreateDIBPatternBrush(). The palette is not created directly, but instead the indices into the DC palette are put into the palette and the real palette is created, when the brush is realized. The latter is not yet handled. (Timo Kreuzer)
  • fix build (Timo Kreuzer)
  • Someone passes iUsage == 2, so don't assert in that case, but ignore it as long as it's not supported. (Timo Kreuzer)
  • Fix regression of gdi32_winetest palette (Timo Kreuzer)
  • Create default hatch brush bitmaps on win32k init (Timo Kreuzer)
  • After creating a PDEV fill the fields in the ahsurf array that are not filled by the driver with these bitmaps (Timo Kreuzer)
  • don't create a new bitmap when a hatch brush is created, instead only store the style and use the related bitmap from the PDEV when realizing the brush. (Timo Kreuzer)
  • Fix the palette of DIB brushes, when realizing the brush (Timo Kreuzer)
  • Don't leak the bitmaps for DIB brushes in BRUSH_Cleanup (Timo Kreuzer)
  • Do not ASSERT that the object is not exclusively locked in GDIOBJ_vDereferenceObject. The idea behind this was to easily detect cases where someone would accidentally dereference an object, instead of unlocking it. But this function is used from other functions, that can definately deal with exclusively locked objects. Changing this would leat to code duplication / more complex code. (Timo Kreuzer)
  • Forgetting to unlock an object will still be detected by the kernel, when returning to user mode, since APC would still be disabled. (Timo Kreuzer)
  • Should fix failed assertion when running dx9 setup. (Timo Kreuzer)
  • Fix crash when pcti is null. . (James Tabor; #6759)
  • Implement EngMapSectionView and EngUnmapSectionView. Use EngUnmapSectionView in SURFACE_Cleanup. (Timo Kreuzer)
  • Don't assert on DIB brushes with BR_IS_DIBPALCOLORS, since we already handle this properly. (Timo Kreuzer)
  • Fix crash when sending activate application message and check if thread is in cleanup. Use kernel functions for thread data types. (James Tabor)
  • Fix build. (James Tabor)
  • Fix crashes due to CreateDIBitmap tests (Timo Kreuzer)
  • Alloca to use GDIOBJ_vReferenceObjectByPointer with exclusively locked objects (Timo Kreuzer)
  • Make sure the global mono palette actually has 2 entries (Timo Kreuzer)
  • Simplify allocation of default palette (Timo Kreuzer)
  • Implement GreGetSetColorTable, replacing IntSetDIBColorTable / IntGetDIBColorTable (Timo Kreuzer)
  • Make sure that memory possibly copied to user mode is zeroed. (Timo Kreuzer)
  • Mark dc brushes in GreGetSetColorTable as dirty (Timo Kreuzer)
  • Fixes gdi32_winetest bitmap regression (Timo Kreuzer)
  • Make CreateDIBPalette handle BITMAPCOREINFO (we need to handle this, since win32k can load bitmap files, that can contain these headers) (Timo Kreuzer)
  • Remove obsolete IntSetDIBColorTable, IntGetDIBColorTable (Timo Kreuzer)
  • Make EngSecureMem probe the buffer, so we have at least a minimum functionality, even though it's not safe (Timo Kreuzer)
  • Implement EngSecureMemForRead (Timo Kreuzer)
  • Use IntEngBitBlt from IntEngStretchBlt, when source and dest size are equal (Timo Kreuzer)
  • Note: SetWindowPos should be correct, (Dmitry Timoshkov : SetParent() should use ShowWindow() to make a reparented window visible and move a window to new position)
  • Fix bug 6796, use wine code to clear bits before checking to minimize or maximize. (James Tabor)
  • Fix all the wine Win test_window_styles and todo tests. (James Tabor)
  • Fix wine Win test_dialog_styles tests and todos. (James Tabor)
  • In DC_vSetOwner, do not take ownership of the current dc brush and pen, instead dereference them and select default brush and pen. Fixes bug #7070 (Timo Kreuzer)
  • Fix debug logging in GDIOBJ_vDereferenceObject (Timo Kreuzer)
  • create debug log event in GDIOBJ_vSetObjectOwner (Timo Kreuzer)
  • Check for psoMask == NULL in BltMask. Fixes part 2 of bug #7070 (Timo Kreuzer)
  • Handle unknown color types in TranslateCOLORREF (Timo Kreuzer)
  • properly translate the color back to RGB in NtGdiSetPixel (Timo Kreuzer)
  • Fixes a few hundred thousand gdi32 winetests (dib) :) (Timo Kreuzer)
  • Fix all the wine Win test_SetForegroundWindow and todo tests. (James Tabor)
  • Fix the remaining wine Win test_SetFocus to does. (James Tabor)
  • Silence debug traces, SMWCB is the one to tracked. (James Tabor)
  • Fix the remaining wine Win test_NCRedraw test. Broken since r6737. (James Tabor)
  • Miscellaneous fixes and changes. (James Tabor)
  • Don't check for send nonclient paint messages and bump up the paint count. This may spell the end of the PAINTING BUG spam. (James Tabor)
  • Users are not allowed to set null desktops. Fixes bug 6759. (James Tabor)
  • Fix a comment (Timo Kreuzer)
  • Fast fix attach thread input. Tested with win Msg test_SetFocus, fixed the WM_ACTIVATE issue, still needs more testing. , used the test case and it works. (James Tabor; #7098)
  • Turn off a debug print. Fixed wine Edit test_edit_control_2 SetFocus return and one more in Msg test_SetFocus. (James Tabor)
  • Fix attach thread input based on which thread is foreground. Tested with wine Msg test_SetFocus, CursorIcon test_SetCursor and test_ShowCursor, still needs more testing. and bug 7107, used the test cases and it works with Qemu. (James Tabor; #7098)
  • Implement SURFACE_vSetPalette and use it everywhere to set the palette for a surface. Make SURFACE::ppal const, so noone accidentally modifies it without properly handling the references. (Timo Kreuzer)
  • Fix debug and a spurious error during WinPos related tests. (James Tabor)
  • Add zap active and focus call. Fix comments. (James Tabor)
  • Fix assert with WinSnap. Added support functions to be used later. (James Tabor)
  • Add keyboard cue and combo list box signing. (James Tabor)
  • Move window check to the API interface. (James Tabor)
  • When cleaning DC, also "clean" the associated brushes (Jérôme Gardou)
  • Fixes some asserts hit with Baldur's Gate launcher (Jérôme Gardou)
  • Fix macro defitnition (Jérôme Gardou)
  • Take translation into account when inverting an XFORMOBJ (Timo Kreuzer; #7088)
  • Always use the matrices from the DCATTR instead of DCLEVEL (Timo Kreuzer; #7088)
  • Mark Device-to-World translation as invalid when the Window Origin is modified (Timo Kreuzer; #7088)
  • Fixes 7088 (Timo Kreuzer; #7088)
  • Change some #defines to enums (Timo Kreuzer)
  • Cleanup some obsolete stuff (Timo Kreuzer)
  • Check for NULL dc surface before dereferencing it in IntGdiRealizePalette. (Timo Kreuzer)
  • freeldr: seek to correct sector number, even after ~4GB. (Hervé Poussineau; #6669)
  • Check if the dc surface is NULL instead of ASSERTing (Timo Kreuzer)
  • Fix PREFAST warnings related to printf format strings, empty SEH handler, some possible NULL pointer dereferences, some unchecked return values (Timo Kreuzer)
  • trigraphs ... (Timo Kreuzer)
  • Use a global trivial CLIPOBJ if a NULL one is passed (Timo Kreuzer)
  • Don't pass a pointer to uninitialized memory to DrvBitBlt (Timo Kreuzer)
  • pass COLORADJUSTMENT to IntEngStretchBlt (Timo Kreuzer)
  • IntEngStretchBlt, EngStretchBltROP, DrvStretchBltROP always use a source, ASSERT that (Timo Kreuzer)
  • annotate pbrDefaultBrush and psurfDefaultBitmap as _Notnull_ (Timo Kreuzer)
  • Don't use uninitialized psoInput in EngStretchBltROP (Timo Kreuzer)
  • Use trivial CLIPOBJ instead of NULL in IntEngStretchBlt (Timo Kreuzer)
  • Always pass a source surface to EngStretchBltROP (Timo Kreuzer)
  • Temporarily comment out some ASSERTs that fail (Timo Kreuzer)
  • Use trivial Clip object, if NULL one is passed in IntEngAlphaBlend (Timo Kreuzer)
  • In NtGdiDescribePixelFormat allow passing NULL for the output pixel descriptor and copy the result *to* the caller not from the caller. (Timo Kreuzer)
  • Fix some format strings (Timo Kreuzer)
  • Update some annotations (Timo Kreuzer)
  • Fix build (Timo Kreuzer)
  • Implement CaptureUnicodeStringOrAtom, which handles user mode class names or atoms, and use it in some places. (Timo Kreuzer)
  • Fix a number of format strings (Timo Kreuzer)
  • STDOLE32.TLB] (Amine Khaldi)
  • Welcome to MSVC build. (Amine Khaldi)
  • Return non-null value when a dc without a bitmap selected is passed to NtGdiSetDIBitsToDeviceInternal (Timo Kreuzer)
  • Do not treat the release of the windows key as a hotkey if it was used as a modifier for another hotkey that was pressed (Giannis Adamopoulos)
  • Now if I press win+R only the Run window opens (Giannis Adamopoulos)
  • AttachThreadInput, this should fix the crash. Original crash (Giannis Adamopoulos; #7225)
  • WARNING: This code should be turned off until the restructuring is finished. Please read bug 7225! (Giannis Adamopoulos; #7225)
  • Fix complation when using diblib (Jérôme Gardou)
  • Use the right surface for direct DCs in DIB transfer functions (Jérôme Gardou)
  • It could have changed with a display settings change (Jérôme Gardou)
  • Use DC_vPrepareDCsForBlit in DIB transfer functions, as per Timo's remarks. (Jérôme Gardou)
  • Move more support for Desktop Proc into Win32k. Increase Desktop drawing by about 10%. Rearanged code and plugged in the server side callout. (James Tabor)
  • Fix a bug in TranslateCOLORREF(). It was depending on pdc->pSurface to be set. (Timo Kreuzer)
  • Allow passing NULL to EngFreeMem, like on Windows. (Timo Kreuzer)
  • Fixes mode switching with cirrus driver on qemu. (Timo Kreuzer)
  • CORE-6335 #resolve (Timo Kreuzer)
  • make sure at least one rect is allocated in REGION_PtsToRegion. Fixes failed assertion when starting pacman4000 (the game itself doesn't work though) (Timo Kreuzer)
  • CORE-5431 #resolve (Timo Kreuzer)
  • And all along I thought I had committed this... I guess it must work pretty well if I never noticed the difference :). This patch makes Win32k use session space instead of system space, now that we've had session space for a while. tkreuzer: review? (Alex Ionescu)
  • Unmap the desktop heap in IntFreeDesktopHeap. Fixes leaking session space memory, when creating and deleting desktops. (Timo Kreuzer)
  • I would revert the "hackfix" from r57348, but for me changing MiPteToAddress to MiAddressToPte looks more like a legit bug fix, rather than "increasing system view space to 36MB instead of 20MB". But I'm probably missing something. In that case, Alex, please revert your hack, it shouldn't be needed anymore. (Timo Kreuzer)
  • CORE-6688 #resolve (Timo Kreuzer)
  • Added descriptive DPRINT for an ioctl intended for the mount manager. Hopefully helps someone else trying to find that device 0x4d or 77 is, when no such device exists. It's not defined by value in header file but by ASCII 'M'. (Mike Nordell)
  • Seperate GreGetDIBitsInternal from NtGdiGetDIBitsInternal (Timo Kreuzer)
  • Rewrite IntSynthesizeDib (Timo Kreuzer)
  • Fixes heap corruption when doing screen shots or copying from paint (Timo Kreuzer)
  • CORE-6674 CORE-6093 #resolve (Timo Kreuzer)
  • Hack around completely broken GreGetDIBitsInternal. Fixes bugcheck caused by gdi32_winetest bitmap. (Timo Kreuzer)
  • Fix the hack, so it doesn't cause overwriting of usermode memory. (Timo Kreuzer)
  • Implement kdbg callbacks for gdi: "gdi!dumpht <type>" dumps the handle table, "gdi!handle <x>" dumps information about a handle. (Timo Kreuzer)
  • CORE-6650 #resolve (Timo Kreuzer)
  • Sorry forgot to commit this file (Timo Kreuzer)
  • Fix comment headers. (Hermes BELUSCA - MAITO)
  • Improve error-displaying function and add another one (to be used later on). (Hermes BELUSCA - MAITO)
  • Clear a part of code. (Hermes BELUSCA - MAITO)
  • Move gdi kdbg extension into a separate file, prefix names with ! to match WinDbg extensions more closely (e.g. "!"), imlement help, dumpht, handle, entry and eventlist commands. (Timo Kreuzer)
  • Remove duplicated floating point math functions (Timo Kreuzer)
  • Reduce size of desktop heap from 4MB to 400KB (Windows uses 200KB) (Timo Kreuzer)
  • Disable APCs when acquiring the pushlock. (Timo Kreuzer)
  • Fix detection of trivial clipping region (Timo Kreuzer)
  • CID 731584 (Timo Kreuzer)
  • Keep an additional reference while processing the message list of a message queue (Timo Kreuzer)
  • CID 716808 (Timo Kreuzer)
  • Use ExFreePoolWithTag instead of ExFreePool in SpiNotifyNCMetricsChanged. (Timo Kreuzer)
  • Fixes CID 716644 (Timo Kreuzer)
  • Use ExAllocatePoolWithTag instead of ExAllocatePool (Timo Kreuzer)
  • USER32] (Timo Kreuzer)
  • Chnge return type of ClientLoadLibrary to BOOL. Previously it returned HMODULE in both the load and unload case, being a meaningless value in the latter case. All users of this function were using it as a boolean parameter only. (Timo Kreuzer)
  • Fix missing colorTriple increment when creating the color table in GreGetDIBitsInternal. (Timo Kreuzer)
  • Probe buffer before writing to it (Jérôme Gardou)
  • Fail DIB Section creation if palette creation failed (Jérôme Gardou)
  • Accept to fill a BITMAPCOREINFO structure in NtGdiGetDIBitsInternal (Jérôme Gardou)
  • Add the ability to initialize an EBRUSHOBJ object without a device context (Jérôme Gardou)
  • Implement EXLATEOBJ_vInitSrcMonoXlate (Jérôme Gardou)
  • Use low level functions (IntEng*) to draw an icon. (Jérôme Gardou)
  • Now mode settings change (eg. 16->32bpp) is not so ugly. (Jérôme Gardou)
  • Try to fix MSVC build (Jérôme Gardou)
  • Use GdiBlt channel for relevant functions (Jérôme Gardou)





  • Handle transferring buffer to user mode in WH_CALLWNDPROC(RET) hooks if lParam is a pointer. (Jérôme Gardou)
  • This fixes the gallium3d opengl ICD, so newest VMWare opengl Driver should now work. (Jérôme Gardou)
  • Please TEST! (Jérôme Gardou)



  • Add some useful macros to wine/test.h (Timo Kreuzer)
  • Make function-style macros in test.h actually behave function-like (aka fix build) (Thomas Faber)
  • NTOSKRNL:SE] (Thomas Faber; #7138)
  • Use the correct pool tags for allocations in SepCaptureAcl/SepCaptureSid (Thomas Faber; #7138)
  • NTOSKRNL:SE] (Thomas Faber)
  • Do not dereference pointer before checking against NULL in SeSetSecurityDescriptorInfo (Thomas Faber)


  • Slightly reorganize architecture dependent headers, so that ASSERT can be used (Timo Kreuzer)
  • Some fixes for Vista/Win7 (Timo Kreuzer)