Difference between revisions of "ChangeLog-0.3.15"

From ReactOS Wiki
Jump to: navigation, search
m (Uncategorized)
m (Protected "ChangeLog-0.3.15": High traffic page (‎[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)))
 
(29 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This is the changelog for ReactOS™ [[0.3.15|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 [[ChangeLog-0.3.14|version 0.3.14]].
+
This is the changelog for ReactOS™ [[0.3.15|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 [[ChangeLog-0.3.14|version 0.3.14]].
 
= General =
 
= General =
 
== Contributors ==
 
== Contributors ==
Line 31: Line 31:
 
* Christoph von Wittich
 
* Christoph von Wittich
 
* Art Yerkes
 
* Art Yerkes
 +
 
=== Patch Submitters ===
 
=== Patch Submitters ===
 
* Carlo Bramini
 
* Carlo Bramini
* [[Edijs Kolesnikovičs]]
+
* Vincenzo Cotugno
 +
* Elton Chung
 +
* Peter Hater
 +
* Alex Henrie
 +
* Katayama Hirofumi
 +
* Edijs Kolesnikovics
 +
* Marcel Leyendeckers
 +
* numitus (domovoi94 at gmail dot com) r57058
 +
* Victor Martinez
 +
* Guido Pola
 +
* Ben Pye
 +
* Rodion overclocker@list.ru r56097
 +
* Lee Schroeder
 +
* Samuel Serapion
 +
* vort r58083
 +
* Alexander Yastrebov
 +
* Erdem Ersoy (eersoy93) (erdemersoy@live.com) (for some Turkish translations)
 +
 
 +
* Arda Tanrıkulu (ardatan) (ardatanrikulu@gmail.com) (for some Turkish translations)
  
 
=== Support Staff ===
 
=== Support Staff ===
Line 39: Line 58:
 
* Ziliang Guo
 
* Ziliang Guo
 
* Olaf Siejka
 
* Olaf Siejka
<!--
+
 
 
== Generic 0.3.15 Changes ==
 
== Generic 0.3.15 Changes ==
 +
* Headers have been cleaned up to reduce the number of dependencies dragged in by code.
 +
* Annotations for use with Visual Studio's static analyzer have been added to many modules.
 +
* Improvements to the various SDKs to increase compatibility and add new new data structures and interfaces for developing drivers, applications, and native applications.
 +
* A variety of bugs found by Visual Studio 2012's static code analyzer was fixed.
 +
* The project has switched over entirely to using CMake and rbuild support has been dropped. Continued work has been done to improve the build process.
 +
* The debug screen color has been changed to black for easier readability.
 +
* It is now possible to choose only one language instead of all language resources in a build.
 +
=== Installer ===
 +
* Removable media is now selectable as an installation target.
 +
* Unpartitioned space calculation now works if the first partition starts below the disk's track size.
 +
* ATL is now registered before anything else.
 +
==== CABMAN ====
 +
* The reading buffer is now dynamically sized to ensure it can hold a complete path instead of using MAX_PATH-like magic numbers.
 +
=== Wine Syncs ===
 +
<div class="ros_columns">
 +
* ADVPACK (1.5.19)
 +
* AMSTREAM (1.3.37)
 +
* ATL (1.5.19)
 +
* ATL100 (1.5.19)
 +
* AVIFIL32 (1.3.37)
 +
* BCRYPT (1.3.37)
 +
* CABINET (1.5.19)
 +
* COMCTL32 (1.5.26)
 +
* CREDUI (1.3.37)
 +
* CRYPT32 (1.3.37)
 +
* CRYPTDLG (1.3.37)
 +
* CRYPTNET (1.3.37)
 +
* CRYPTUI (1.3.37)
 +
* DBGHELP (1.3.37)
 +
* DWMAPI (1.3.37)
 +
* FUSION (1.5.4)
 +
* GDIPLUS (1.5.4)
 +
* HLINK (1.5.4)
 +
* HNETCFG (1.3.37)
 +
* HTTPAPI (1.3.37)
 +
* IMAADP32.ACM (1.3.37)
 +
* IMAGEHLP (1.3.37)
 +
* IMM32 (1.5.19)
 +
* INETCOMM (1.3.37)
 +
* INETMIB1 (1.3.37)
 +
* INSENG (1.3.37)
 +
* ITSS (1.5.4)
 +
* KERNEL32: FormatMessage() (1.5.4)
 +
* MCIAVI32 (1.3.37)
 +
* MCICDA (1.3.37)
 +
* MCISEQ (1.3.37)
 +
* MCIWAVE (1.5.4)
 +
* MCOQTZ32 (1.5.4)
 +
* MLANG (1.3.37)
 +
* MSADP32.ACM (1.3.37)
 +
* MSCMS (1.5.4)
 +
* MSCOREE (1.5.4)
 +
* MSCTF (1.3.37)
 +
* MSFTEDIT (1.3.37)
 +
* MSG711.ACM (1.3.37)
 +
* MSI (1.5.19)
 +
* MSIMTF (1.3.37)
 +
* MSISIP (1.3.37)
 +
* MSSIGN32 (1.5.4)
 +
* MSTASK (1.3.37)
 +
* MSXML (1.5.12)
 +
* MSXML2 (1.5.12)
 +
* MSXML3 (1.5.12)
 +
* MSXML4 (1.5.12)
 +
* MSXML6 (1.5.12)
 +
* NDDEAPI (1.3.37)
 +
* NTPRINT (1.3.37)
 +
* OBJSEL (1.3.37)
 +
* ODBCCP32 (1.3.37)
 +
* OLE32 (1.5.19)
 +
* OLEAUT32 (1.5.19)
 +
* PRINTUI (1.3.37)
 +
* PSTOREC (1.5.4)
 +
* QUERY (1.3.37)
 +
* RASAPI32 (1.3.37)
 +
* RICHED20 (1.5.19)
 +
* RSAENH (1.5.4)
 +
* SHLWAPI (1.5.13)
 +
* SPOOLSS (1.5.4)
 +
* STDOLE2.TLB (1.3.37)
 +
* STDOLE32.TLB (1.3.37)
 +
* STI (1.5.4)
 +
* SXS (1.5.4)
 +
* TOOLS/UNICODE (1.3.37)
 +
* TRAFFIC (1.5.4)
 +
* URL (1.5.4)
 +
* USER32 (1.5.10)
 +
* USP10 (1.5.24)
 +
* WIDL (1.5.11)
 +
* WINDOWSCODECS (1.5.19)
 +
* WINEMP3.ACM (1.3.37)
 +
* WINHTTP (1.5.4)
 +
* WININET (1.5.4)
 +
* WINTRUST (1.5.4)
 +
* WS2_32: async.c (1.5.4)
 +
* WTSAPI32 (1.3.37)
 +
* WUAPI (1.5.4)
 +
* XCOPY (1.3.37)
 +
* XMLLITE (1.5.19)
 +
</div>
 +
 
== Known Issues ==
 
== Known Issues ==
 +
* External USB hub support is currently disabled.
 
= Core Functionality =
 
= Core Functionality =
 
== Audio/Video Stack ==
 
== Audio/Video Stack ==
== Filesystems ==
+
=== VIDEOPRT ===
== Hardware Management ==
+
* The DEVICEMAP\VIDEO key is now created with a proper length by taking into account the NULL terminator, an issue originally exposed in ARWINSS.
== Kernel ==
 
== Memory Management ==
 
== Network Stack ==
 
== Shell == -->
 
== Startup/Shutdown ==
 
=== FreeLoader ===
 
* 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.
 
== BASE ==
 
=== APPLICATIONS ===
 
==== ATACTL ====
 
* Add atactl from the Uniata suite. It should be useful for troubleshooting uniata. ([[Amine Khaldi]])
 
* Sync with the latest UniATA version. ([[Amine Khaldi]])
 
* Add set_cpp() to CMake script. ([[Dmitry Gorbachev]])
 
* Revert r57265 until the testbot issues caused by earlier revisions are fixed. ([[Amine Khaldi]])
 
* Sync to 0.43f5. ([[Amine Khaldi]]) {{bug|6563|jira}}
 
==== CALC ====
 
* Update French translation. ([[Hermès Bélusca-Maïto]]; {{bug|7196}})
 
==== CHARMAP ====
 
* Implement LoadSettings() and SaveSettings(). ([[Edijs Kolesnikovičs]] with some minor changes by [[Amine Khaldi]]; {{bug|6925}})
 
* Declare variables extern. ([[Dmitry Gorbachev]])
 
===== XCOPY =====
 
==== CMDUTILS ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== DXDIAG ====
 
* Fix warning in Turkish translation. ([[Sylvain Petreolle]])
 
==== FONTVIEW ====
 
* When no file name is passed on the command line, open a file-open-dialog (milawynsrealm; {{bug|6803}})
 
* Halfplement printing (milawynsrealm <spaceseel at gmail got com>; {{bug|6803}})
 
* Replace Quit button with install button (milawynsrealm <spaceseel at gmail got com>; {{bug|6803}})
 
* Update French translation. ([[Hermès Bélusca-Maïto]]; {{bug|6803}})
 
==== KBSWITCH ====
 
* Properly use the single instance mutex ([[Pierre Schweitzer]])
 
==== MAGNIFY ====
 
* Fix display of formerly trucated info text in German language. (Robert Naumann {{bug|6218|jira}})
 
==== MSCONFIG ====
 
* Get the timeout correctly. ([[Edijs Kolesnikovičs]]; {{bug|6964}})
 
* Correctly update the selected command line text. ([[Edijs Kolesnikovičs]]; {{bug|6963}})
 
===== DEVMGMT =====
 
==== MSCUTILS ====
 
* 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]])
 
* 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.
 
** Do not enumerate the root device. ([[Eric Kohl]]; {{bug|6592}}|jira}})
 
* MS-compatible but interface contract violating return value for QueryInterface with NULL ppvObject. ([[Mike Nordell]]
 
==== NETWORK ====
 
* Implement "net" ([[Eric Kohl]]; {{bug|6413|jira}})
 
* 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]])
 
===== WLANCONF =====
 
* Fix a potential buffer overflow, fix a handle leak, fix an MSVC warning ([[Thomas Faber]])
 
* Add localization support. (Lee Schroeder; {{bug|6721|jira}})
 
  
==== RAPPS ====
+
== Client/Server Runtime ==
* Fix French translation encoding ([[Pierre Schweitzer]])
+
=== CSRSS ===
* Fix typos in French translation. (Philippe Morin)
+
CSRSS is undergoing a rewrite to take advantage of the new SMSS.
* Use COM for calling SHBrowseForFolder. ([[Hermès Bélusca-Maïto]])
+
* CSRSRV no longer starts win32k.sys, deferring that responsibility to SMSS.
* Allow choosing a directory for downloading. ([[Hermès Bélusca-Maïto]])
+
* CsrSrvCreateSharedSection is now called correctly based on registry/command line settings.
* Correct a typo in the name of a function. ([[Hermès Bélusca-Maïto]])
+
* Some initialization functions have been merged together.
==== REGEDIT ====
+
* The separate heaps in CSRSRV have been merged together. When the single DLL is broken up into separate DLLs, each DLL will have its own heap.
* Handle Ctrl-A in address bar. ([[Edijs Kolesnikovičs]] (terminedijs at yahoo dot com); {{bug|5936}})
+
* A new list has been created for console processes.
* 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 Kolesnikovičs]] <terminedijs at yahoo dot com>; {{bug|6920}})
+
* Process management functions now use a linked list like in Windows instead of a hash table.
* Implement silent mode so the winetest can run. ([[Art Yerkes]])
+
* CSRSRV now loads its own DLL, allowing it to support native functions from NTDLL.
* Acquire the necessary privileges when loading/unloading hives. ([[Hermès Bélusca-Maïto]]; {{bug|7159}})
+
* Code attempting to set new data/total length values in the LPC header has been purged, potentially fixing an issue where changing the structure of CSRSS messages resulted in bizarre failures.
* Improve permission acquirement for loading/unloading hives. (([[Hermès Bélusca-Maïto]]; {{bug|7159}})
+
* CSRSRV no longer accepts connections from unknown processes.
* Apply the "Refresh" command to the ListView in addition to the TreeView (([[Hermès Bélusca-Maïto]]; {{bug|7180}})
+
* CSRSRV no longer spawns a new thread for each client, instead creating them based on whether existing ones are deadlocked.
* Use COUNT_OF where applicable; miscellaneous readability and consistency fixes (([[Hermès Bélusca-Maïto]]; {{bug|7180}})
+
* CTRL-C and X button regressions due to new server to server communication implementation have been fixed.
* Space fixes in resource files; French translation fixes (([[Hermès Bélusca-Maïto]]; {{bug|7180}})
+
* Hacks in CsrSrvCreateThread have been removed now that worker threads are properly registered in CSRSS.
* Implement Import/Export of hive files. ([[Hermès Bélusca-Maïto]] (German translation by [[Thomas Faber]]); {{bug|7180}})
+
* The API loop has been rewritten to properly deal with messages and correctly manage processes, eliminating a major resource leak in the process.
* Use COUNT_OF where appropriate. Miscellaneous code cleanup. ([[Hermès Bélusca-Maïto]]; {{bug|7182}})
+
Functions Implemented
* Don't include these two headers twice for the resources. ([[Amine Khaldi]])
+
* CsrDestroyProcess
* Update informative messages ([[Edijs Kolesnikovičs]]; {{bug|6239|jira}}
+
* CsrDestroyThread
* WCHAR ==> TCHAR in (before a REALLY conversion of regedit into UNICODE) ([[Edijs Kolesnikovičs]] adapted by [[Hermès Bélusca-Maïto]] {{bug|6239|jira}})
 
* Correct some mistakes in displayed strings ([[Edijs Kolesnikovičs]] adapted by [[Hermès Bélusca-Maïto]])
 
* Improve informative / warning / error messages when importing registry files ([[Edijs Kolesnikovičs]] adapted by [[Hermès Bélusca-Maïto]])
 
* 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]] adapted by [[Hermès Bélusca-Maïto]]; {{bug|6239|jira}})
 
* Don't forget to close the file handle. ([[Hermès Bélusca-Maïto]])
 
* Convert the application's code to UNICODE ([[Hermès Bélusca-Maïto]])
 
* But the regproc.c's code is untouched (apart from the pseudo-error messages issued with fprintf) ([[Hermès Bélusca-Maïto]])
 
* Forgot to remove a comment ([[Hermès Bélusca-Maïto]])
 
* and this line of code (I'm sorry for the generated noise :-( ) ([[Hermès Bélusca-Maïto]])
 
* Re-number some resource IDs. ([[Hermès Bélusca-Maïto]])
 
* Add key exportation message-box error (thus removing some fwprintf calls). ([[Hermès Bélusca-Maïto]])
 
* Use IDS_MY_COMPUTER localized string instead of hardcoded one. ([[Hermès Bélusca-Maïto]])
 
===== CLB =====
 
* Code cleaning ([[Hermès Bélusca-Maïto]])
 
  
==== SETUP16 ====
+
=== Kernel-mode subsystem server (WIN32K) ===
* 32-Bit stub installer for 16-Bit Microsoft installers ([[Christoph von Wittich]])
+
* Rewrite CreateDesktop, OpenInputDesktop, SetThreadDesktop, AttachThreadInput, thread info creation
* TODO: -load this installer instead of the original 16bit Microsoft installer ([[Christoph von Wittich]])
+
* Properly initlilize ExDesktopObjectType and ExWindowStationObjectType
* improve error handling and string allocation ([[Christoph von Wittich]])
+
* Implement LockWorkStation
* check if setup.lst file exists ([[Christoph von Wittich]])
+
* Fix SwitchDesktop to actually show the new desktop
 +
* Fix GetObjectInformation that always failed
 +
* Move desktop window proc and message window proc in win32k
 +
* Fix some user object leaks
 +
* Allow the user handle table to grow in order to handle cases when we run out of handles
 +
* Correctly handle cases that the thread info or the process info failed to initialize
 +
* The WindowStations directory is now properly created for instances other than session 0.
 +
* GetFocus now correctly returns NULL when a thread is not in the foreground.
 +
* NtGdiSelectBitmap now correctly handles the situation where a device context's surface pointer is NULL.
 +
* Selecting the same bitmap in NtGdiSelectBitmap will no longer cause the bitmap to be released.
 +
* 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
  
==== WORDPAD ====
+
=== SMSS ===
* Fix _WIN32_IE redefinition ([[Thomas Faber]]; {{bug|7047}})
+
A new session manager subsystem has been implemented that will be used in conjunction with an upcoming rewrite of the Console/Server Runtime Subsystem. It has completely supplanted the old SMSS though still works in conjunction with an older CSRSS.
 +
* A new header that precisely documents the packet structure and protocols used for communication between SMSS and CSRSS has been added. The definitions match NT5.2.
 +
* All required registry configuration parsing functions have been implemented in the new SMSS.
 +
* Initialization of many internal data structures have been implemented for the new SMSS, ensuring it will present a properly configured and set up system when it takes over from the old SMSS.
 +
* The new SMSS is now responsible for the initial system configuration, including setting up the environment, pagefile, and registry.
 +
* The new SMSS is able to detect clean versus unclean boot/shutdown.
 +
* The new SMSS can now launch 'native' applications.
 +
* SmpSaveRegistryValue now properly deals with empty lists and correctly compares strings for equality.
 +
* The new SMSS is now responsible for launching winlogon.
 +
* When creating the page file, at least 64&nbsp;MB of space will be left free on small drives to allow 2nd stage to complete.
 +
Functions Implemented
 +
* SmpProcessFileRenames
 +
* SmpTranslateSystemPartitionInformation
 +
* SmpLoadSubsystemsForMuSession
 +
* SmpExecPgm
 +
* SmpSbCreateSession
 +
* SmpCallCsrCreateProcess
 +
* SmpLoadSubsystem
  
=== SERVICES ===
+
== Filesystems ==
* Fix handles leaks ([[Pierre Schweitzer]])
+
=== FASTFAT ===
* Make the handle to the shutdown event a global handle and set it when the service manager is being shut down. ([[Eric Kohl]])
+
* An error in VfatCreateFile that caused access denied to always be returned when opening a volume has been fixed.
* Close the start event properly. ([[Eric Kohl]])
+
=== FSRTL ===
* Log failed service starts and stops. ([[Eric Kohl]])
+
* MCB and Large MCB support has been integrated.
* Remove logically dead code. CID 513302. ([[Amine Khaldi]])
+
* File locking support has been added.
* Implement SERVICE_CONFIG_FAILURE_ACTIONS case in RQueryServiceConfig2W and RQueryServiceConfig2A. ([[Hermès Bélusca-Maïto]]; {{bug|7101}})
+
Functions Implemented
* Fix a typo and an indentation. [([Hermès Bélusca-Maïto]]; {{bug|7104}})
+
* FsRtlCheckNotifyForDelete
* Removing some code defects discovered by Coverity. ([[Hermès Bélusca-Maïto]]; {{bug|7105}})
+
* FsRtlNotifyCompleteIrp
* Implement REnumServiceGroupW. ([[Hermès Bélusca-Maïto]]; {{bug|7106}})
+
* FsRtlNotifyCompleteIrpList
* Removing the redundant function WaitForLSA() and use ScmWaitForLsa() instead. ([[Hermès Bélusca-Maïto]]; {{bug|7110}})
+
* FsRtlNotifySetCancelRoutine
* Automatically close handles and unlock database. ([[Hermès Bélusca-Maïto]]; {{bug|7111}})
+
* FsRtlNotifyFilterChangeDirectory
* Correct bugs introduced in the implementation of SERVICE_CONFIG_FAILURE_ACTIONS case in RQueryServiceConfig2W() and RQueryServiceConfig2A(). ([[Hermès Bélusca-Maïto]]; {{bug|7101}})
 
* Implement SERVICE_CONFIG_FAILURE_ACTIONS case in RChangeServiceConfig2W. ([[Hermès Bélusca-Maïto]]; {{bug|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-Maïto]]; {{bug|7122}})
 
* Improve a check in RQueryServiceConfig2W and RQueryServiceConfig2A ([[Hermès Bélusca-Maïto]]; {{bug|7123}})
 
* Correct behaviour of setting the service description. ([[Hermès Bélusca-Maïto]]; {{bug|7124}})
 
* Code cleaning and bugs correction. ([[Hermès Bélusca-Maïto]]; {{bug|7128}})
 
* Code cleaning and removing bugs. ([[Hermès Bélusca-Maïto]]; {{bug|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-Maïto]]; {{bug|7127}})
 
* Implement service database locking via RLockServiceDatabase / RUnlockServiceDatabase etc... and use this functionality. ([[Hermès Bélusca-Maïto]]; {{bug|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-Maïto]]; {{bug|7131}})
 
* 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. ([[Hermès Bélusca-Maïto]]; {{bug|7163}})
 
* Correct comments and code error introduced in rev 56844. ([[Hermès Bélusca-Maïto]]; {{bug|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. ([[Hermès Bélusca-Maïto]]; {{bug|7172}})
 
* Implement check for SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS type. ([[Hermès Bélusca-Maïto]]; {{bug|7179}})
 
* SAMLIB: Implement SamQueryInformatioGroup and SamSetInformationGroup. ([[Eric Kohl]])
 
* SAMSRV: Implement SamrQueryInformatioGroup and SamrSetInformationGroup. ([[Eric Kohl]])
 
* 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'. ([[Hermès Bélusca-Maïto]]; {{bug|7149}})
 
  
==== EVENTLOG ====
+
== HAL ==
* 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]])
+
* PCI device names are no longer truncated in debug output.
* Opening a non existing backup log file must fail. ([[Eric Kohl]])
+
* IrqlToSoftVector() is now implemented and used in HalRequestSoftwareInterrupt, ensuring the correct interrupt is triggered on AMD64.
* Opening an existing backup log files opens the file for reading only. ([[Eric Kohl]])
+
* The IRQL in HalpAllocateSystemInterrupt is now correctly set to the lowest vector.
* Add mscoree winetest to the rbuild build too. ([[Amine Khaldi]])
+
* HAL no longer sends bogus bus numbers to the PCI driver.
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
+
* Legacy HAL can now enumerate boot critical PCI devices and build the device stack for USB.
* 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]])
 
  
=== SETUP ===
+
== Hardware Management ==
* 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]])
+
=== MOUNTMGR ===
* Allow removable media to be selected as an installation target ([[Cameron Gutman]])
+
* Portable KeXxxSpinLock are now used.
* Fix broken unpartitioned space calculation if the first partition starts below the disk's track size (such as a 1MB aligned partition) ([[Cameron Gutman]])
+
=== USB ===
* Add a small keyboard class installation hack ([[Cameron Gutman]])
+
Work from the USB bringup branch has been merged in, allowing for basic functionality of many USB devices. Developers from the Haiku project also helped with understanding the USB specification. The old NT4 USB driver/stack has been removed. The following are parts of the USB stack that have been merged in.
* USB keyboards now load during 1st stage ([[Cameron Gutman]])
+
* Human Interface Device (HID) stack
* Print a bit more information when failing. ([[Jérôme Gardou]])
+
* Composite driver
* Fix installation directories set into unattend.inf, they were ignored and installed always into \ReactOS. ([[Sylvain Petreolle]])
+
* Generic hub driver
* Enable ext2 as an option in setup ([[Cameron Gutman]])
+
* Open Host Controller Interface driver
* Formatting and building file copy list works but setup stalls shortly after starting to copy files (NewCC on) ([[Cameron Gutman]])
+
* Enhanced Host Controller Interface driver
* Fix the checkpoint print so it doesn't happen anytime a usetup progress bar reaches 50% ([[Cameron Gutman]])
+
Additional development summary follows.
* Treat REG_DWORD values in inf files as unsigned values. ([[Eric Kohl]])
+
* Installation via USB CD-ROM now starts.
* Fix a little layout issue. ([[Eric Kohl]])
+
==== USBEHCI ====
=== SHELL ===
+
* Parsing of configuration descriptors has been cleaned up and simplified.
* Fix MSVC / 64 bit warnings ([[Timo Kreuzer]])
+
* Resetting of devices has been cleaned up, eliminating a delay while properly waiting for a device to actually report it has been reset.
* Fix several bugs in the copy command: ([[Timo Kreuzer]]; {{bug|5709}})
+
* Detection of new devices after companion controller handoff has been fixed.
** x:" is not a valid source path ()
+
==== USBHUB ====
** 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)
+
* Reset event handling for cases where a reset does not cause a new device to be created.
** was not correctly handled when passed in the output file name
+
==== USBOHCI ====
** factor out the code to create the file name from wildcards and make it readable (no, p, q, r are NOT reasonable variable names!)
+
* OHCI driver now correctly performs control transfers, allowing HID devices to finish initialization.
** Move code out of the loop that doesn't belong there
+
* Resets now function correctly with OHCI devices.
** Make sure the file names are printed when multiple files are copied or appended
+
* Mass storage devices using OHCI now work.
** write the count of written files (which is 1 when appending), not source files after the copy process is done
+
* Power switching configuration is set to a known state when initializing a controller.
** Remove an excessive newline when writing strings with ConPuts()
+
==== USBSTOR ====
** Improve readability a bit
+
* Error handling has been rewritten, fixing a hang when mass storage devices receive the read capacity request.
* Handle the + character only optionally as a token seperator, so that other commands like rename are not affected. ([[Timo Kreuzer]])
+
* Timer functions have been implemented.
* 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]])
+
* Support for USB floppy drives has been implemented.
* Add a newline to the output of the echo command ([[Timo Kreuzer]])
+
==== USBUHCI ====
* Terminate lines that show environment results from the SET command. ([[Art Yerkes]])
+
* An initial implementation of a driver for the Universal Host Controller Interface was added after the USB bringup work was merged back into trunk. Some parts are synced with the OHCI driver.
* 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 missing new line in the timer command results. Spotted by Mikael Lyngvig. ([[Aleksey Bragin]]; {{bug|7140}})
 
==== EXPLORER ====
 
* Broadcast WM_SETTINGCHANGE message to shell view window ([[Rafał Harabień]])
 
* Fixes Ctrl-Esc and minimize all windows. (Rodion overclocker@list.ru; {{bug|968}}, {{bug|6239}})
 
* Expand the environment variables when running startup programs ([[Edijs Kolesnikovičs]], slightly modified by [[Timo Kreuzer]]; {{bug|6953}})
 
* Handle the /select cmd option. ([[Edijs Kolesnikovičs]]; {{bug|6096}})
 
* Execute HKCU RunOnce entries as well. ([[Edijs Kolesnikovičs]]; {{bug|7062}})
 
* [[Edijs Kolesnikovičs]]: Expand environment strings during processing startup items in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run. ([[Aleksey Bragin]]; {{bug|6053}})
 
==== EXPLORER-NEW ====
 
* 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>; {{bug|6242}})
 
=== SYSTEM ===
 
==== DISKPART ====
 
* Rewrite argument parsing. (Lee Schroeder; {{bug|7170}})
 
* Correct command processing following the first command in interactive mode. ([[Roel Messiant]])
 
* Correct invocation of command-specific help functions. ([[Roel Messiant]])
 
==== FORMAT ====
 
* Handle read only devices and report them unsupported. (Mikael Lyngvig; {{bug|2081}})
 
* Forbid the formatting of the system drive. (Mikael Lyngvig; {{bug|2081}})
 
==== LSASS ====
 
* Load samsrv.dll and call SamIInitialize when lsass is started. ([[Eric Kohl]])
 
==== SMSS ====
 
* 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]])
 
* 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]])
 
* 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]])
 
* Move this condition up to the commented-out part (where it belongs). ([[Amine Khaldi]])
 
* Rename the folder back to smss now. ([[Amine Khaldi]]; {{bug|7278}})
 
==== USERINIT ====
 
* Improve the cmake file a bit and remove an unneeded include. ([[Amine Khaldi]])
 
== BOOT ==
 
==== BOOTDATA ====
 
* 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]])
 
* Add FailureActions to some services. ([[Hermès Bélusca-Maïto]]; {{bug|7125}})
 
* Correct the version signature of some inf files. ([[Hermès Bélusca-Maïto]]; {{bug|6549|jira}})
 
* HACK: Add artificially a symbolic link to the first COM port, because it happens for whatever reason that the serial.sys driver doesn't create it when it creates the Serial0 device. When this functionality is repaired, the HACK shall disappear. ([[Hermès Bélusca-Maïto]])
 
** 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 http://jira.reactos.org/browse/CORE-4263 ([[Hermès Bélusca-Maïto]])
 
* Remove unneeded %SystemRoot%\bin\data value in PATH environment variable. ([[Hermès Bélusca-Maïto]])
 
* 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. ([[Hermès Bélusca-Maïto]])
 
* Add setupapi.dll to the KnownDlls list. (Lee Schroeder; {{bug|6732|jira}})
 
==== BOOTCD ====
 
* Convert the cab generation into a custom command + custom target. ([[Amine Khaldi]])
 
== INCLUDE ==
 
* 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 LsarSetTrusted
 
DomainInfoByName. ([[Eric Kohl]])
 
* Add missing account right strings and system account flags. ([[Eric Kohl]])
 
  
== RTL ==
+
== Kernel ==
* Reimplement RtlSetCurrentDirectory_U. This fixes bugs & implements references count ([[Pierre Schweitzer]])
+
* Interlocked operations are now used for reference counting device objects.
* Fix the FIXME in RtlpDosPathNameToRelativeNtPathName_Ustr by incrementing references count ([[Pierre Schweitzer]])
+
* KeUpdateSystemTime has been refactored, making it 64bit portable and resolving potential concurrency issues.
* Document, define, implement, and export RtlSetThreadIsCritical. ([[Alex Ionescu]])
+
* The kernel no longer returns kernel handles to user mode code, which user mode code would be unable to use anyway, fixing usage of RtlQueryRegistryValues from user mode when the SUBKEY or TOPKEY flags are used.
* Work around Wine's misuse of critical section debug flags. Hopefully fixes KVM ([[Thomas Faber]])
+
* Stack alignment has been fixed in KiSwitchToBootStack for 64bit mode.
* Fix RtlLengthSecurityDescriptor ([[Timo Kreuzer]])
+
* KeContextToTrapFrame and KeTrapFrameToContext now correctly handle ExceptionFrame being NULL.
* Implement amd64 version of Implement RtlInitializeContext ([[Timo Kreuzer]])
+
* User mode exception dispatching has been implemented for 64bit mode.
* Add unwind info to amd64 debug asm functions ([[Timo Kreuzer]])
+
* CmpSetSystemValues will no longer attempt to close an uninitialized handle in its failure handling.
* 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]])
+
* SeCaptureSecurityDescriptor has been written to be cleaner and 64bit ready.
* Fix 64 bit warnings ([[Timo Kreuzer]])
+
* A variety of security descriptor related code has been fixed to stop making wrong assumptions about SECURITY_DESCRIPTOR structures.
* Add missing parameter checks to RtlAreBitsClear and RtlAreBitsSet ([[Timo Kreuzer]])
+
* PeFmtCreateSection no longer uses the ImageBase member of ImageOptionalHeader directly, instead going through ImageSectionObject->ImageBase.
* Force RtlIpToString APIs to behave inexplicably like on Windows, returning -1 instead of crashing when sprintfing to a NULL pointer. ([[Alex Ionescu]])
+
* Incrementing of the PFN lock has been moved into the region where it is actually used to avoid race conditions and simplify locking operations.
* Fix use of uninitialized variables in failure case of RtlSetCurrentDirectory_U. CID 15339, 15340 ([[Thomas Faber]])
+
* The kernel can now determine where it is booting from and where it is during remote boots, allowing it to progress slightly further during a PXE boot.
* Handles should be NULL, not 0 ([[Thomas Faber]])
+
* The kernel no longer needs to enumerate the root bus via the firmware mapper as the HAL now performs this function.
* 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]])
+
* KdInitSystem no longer suffers from a double crash due to INIT cleanup now happening.
* Add some temp AVL debugging code: In case an AVL table gets unbalanced, dump the table and a backtrace. ([[Timo Kreuzer]])
+
* Changing of process priorities actually perform privilege checks instead of spamming the debug log about the lack of the check.
* Remove pointless ASSERTs, instead set the balance of the new node to balanced, before inserting it. Dedicated to Alex.([[Timo Kreuzer]])
+
* The raw value of a thread's exit time is no longer used when the thread is still alive, fixing an issue where code thought all threads were dead.
* Simplify code, Implement RtlCreateBootStatusDataFile, RtlGetSetBootStatusData, RtlLockBootStatusData and RtlUnlockBootStatusData. ([[Eric Kohl]])
+
* A crash in KiSystemCall when WIN32K failed after switching to a larger kernel stack size has been fixed.
* Accept NULL Buffer/Size in RtlGetFullPathName_Ustr ([[Thomas Faber]])
+
* The correct minimum size is now sent back in response to filename queries where the initial buffer was too small to save the result.
* Fix NULL dereference in RtlGetFullPathName_UstrEx if no StaticString was given ([[Thomas Faber]])
+
* NtQuerySystemInformation now correctly skips zombie processes and uses the KTHREAD ThreadListEntry, which includes the idle process.
* Various other corrections to path functions. 17 test failures fixed overall. ([[Thomas Faber]])
+
* Privileged instructions are now properly detected in the general protection fault handler.
* Do not null terminate buffer before initializing its length in RtlDosSearchPath_Ustr. Use unicode string functions made for this purpose instead. ([[Thomas Faber]]; {{bug|7010}})
+
* The correct bit in the error code is now checked when checking for whether a read or write caused an exception.
* Use RtlAnsiStringToUnicodeString instead of mbstowcs to correctly handle manifests that aren't null-terminated ([[Thomas Faber]]; {{bug|6743}})
+
* SYSTEM_PROCESS_INFORMATION and SYSTEM_THREAD_INFORMATION structures have been rewritten to be correct.
* Really implement RtlRandomEx and add its values table ([[Pierre Schweitzer]])
+
* The DeviceClasses key is now created to allow for successful registration of device interfaces in 1st stage boot.
* Rename SavedValue to RtlpRandomConstantVector to allow RtlRandom & RtlRandomEx to have two different values tables ([[Pierre Schweitzer]])
+
* A hack intended to allow the PCI driver to load has been removed.
* Complete and fix documentation ([[Pierre Schweitzer]])
+
* Generic DPC functionality, a forced synchronization all-CPU DPC callback mechanism, has been implemented. As ReactOS only supports running on a single processor, this implementation only works on a single processor.
* Stop using magic values ([[Pierre Schweitzer]])
+
* Child devices are now linked in enumeration order, allowing PCI cards to enumerate in the correct order.
* bitmap.c[[Timo Kreuzer]]):
+
* Properly handle the case when conversion to gui thread fails
** hack away ASSERT() for now to fix tests (
+
Functions Implemented
** Optimize 64 bit builds ([[Timo Kreuzer]])
+
* KiSwapContextInternal (x64)
** add BSD license ([[Timo Kreuzer]])
+
* KeInitializeInterrupt (x64)
* Fix a bug in RtlNumberOfSetBits ([[Timo Kreuzer]])
+
* KeConnectInterrupt (x64)
* Fix a mistake in RtlNumberOfSetBits, check for index out of range in RtlFindNextForwardRun* ([[Timo Kreuzer]])
+
* KeSynchronizeExecution (x64)
* Implement RtlConvertVariantToProperty, RtlConvertPropertyToVariant, PropertyLengthAsVariant Those are just wrappers around Ole32 functions. ([[Pierre Schweitzer]])
+
* KiDpcInterruptHandler (x64)
* Fix c/p mistake in PropertyLengthAsVariant ([[Pierre Schweitzer]])
+
* KiIdleLoop (x64)
* Fix a really stupid mistake in RtlNumberOfSetBits ([[Timo Kreuzer]])
+
* KiInitializeUserApc (x64)
* Fix remainung RtlBitmapApi tests ([[Timo Kreuzer]])
+
* KiSwapProcess (x64)
* Properly enable validity check in RtlLeaveCriticalSection for debug builds ([[Thomas Faber]])
+
* KiSystemCallHandler (x64)
* Check the correct return status in RtlCreateUserProcess (CID 715961) ([[Thomas Faber]])
+
* KiInitializeContextThread (x64)
* Implement RtlpSafeCopyMemory, which uses SEH to copy the memory (not in freeldr) ([[Timo Kreuzer]])
+
* KiSwapContextResume (x64)
* Make RtlLargeIntegerToChar use RtlpSafeCopyMemory to copy the string to the target buffer. ([[Timo Kreuzer]]; {{bug|3767|jira}})
+
* KiRetireDpcList (x64)
* 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]])
+
* KiInterruptDispatch (x64)
* Separate condition calculation in RtlVerifyVersionInfo into an extra function. ([[Hermès Bélusca-Maïto]] {{bug|6611|jira}})
+
* KiSystemCallEntry64 (x64)
* Make CMAKE_BUILD_TYPE default to Debug for all our builds. ([[Amine Khaldi]])
+
* KiZwSystemService (x64)
* Exclude host tools when setting the default build type. ([[Amine Khaldi]])
+
* NtAreMappedFilesTheSame
* 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]])
+
* NtSetInformationObject
* Fix bugs in SD rewrite, bringing tests back to 73 failures instead of 117 (back to their normal). Use explicit checks when checking for present and default flags, just like Windows. Fixes winetest regressions. ([[Alex Ionescu]] {{bug|6713|jira}})
+
* NtQueryInformationProcess
* Cleanup, comment, and fix SID functions. For example, RtlEqualPrefixSid actually checks only the prefix, not the entire SID. ([[Alex Ionescu]])
+
* SeCheckPrivilegedObject
* 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]])
+
* ProcessUserModeIOPL
* 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]])
+
* Ke386SetIopl
* Fix a bug in RtlAreAnyAccessesGranted ([[Timo Kreuzer]])
+
* ProcessExecuteOptions
* Fix an MSVC warning in RtlEqualPrefixSid ([[Timo Kreuzer]])
+
* ThreadBreakOnTermination
* Fix RtlEnumResources prototype ([[Timo Kreuzer]])
+
* ProcessDebugObjectHandle
* Implement LdrEnumResources ([[Timo Kreuzer]])
 
  
== CMAKE ==
+
=== KDBG ===
* Define _inline to __inline when cross compiling. Dedicated to Alex. ([[Amine Khaldi]])
+
* Debugging to screen for 1st stage boot is now supported.
* Add wallpaper optional module to CMake build ([[Rafał Harabień]])
 
* Use relative paths for reactos.dff generation. May fix Pierre's issue, but a deeper fix is needed. 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. We have a much better way to assign them, thanks to Timo's excellent suggestions. Big thanks go to Geir Hauge for making us an awesome script that conveniently and automagically generates baseaddress.cmake. (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]])
 
* 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]])
 
* 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]])
 
* reduce debug spam (only tested on windows) 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]])
 
* 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]])
 
* 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]])
 
* Allow to build with link-time code generation. ([[Dmitry Gorbachev]])
 
* add a small functions for preprocessing files with C compiler. ([[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]])
 
* 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]]; {{bug|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]])
 
* 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]])
 
* Add ARM architecture support ([[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]])
 
* 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]])
 
* Prefer STREQUAL over MATCHES since we're comparing with strings here. Brought to you by [[Hermès Bélusca-Maïto]]. ([[Amine Khaldi]]; {{bug|7306}})
 
* 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]])
 
  
== 3RDPARTY ==
+
== Libraries ==
==== LIBPNG ====
+
=== ADVAPI32 ===
* Do not duplicate headers. Update out-of-sync public headers. (Vincenzo Cotugno)
+
* Unused, unimplemented, and Vista+ functions are no longer exported.
* Fix MSVC build. ([[Amine Khaldi]])
+
* A buffer overflow in LookupAccountSidA has been fixed.
* Sync to 1.5.12. (Vincenzo Cotugno; {{bug|7202}})
 
==== LIBTIFF ====
 
* Fix MSVC build. ([[Amine Khaldi]])
 
* Fix a warning ([[Thomas Faber]])
 
==== LIBXSLT ====
 
* Properly set a module type to take advantage of automatically setting the base address. ([[Amine Khaldi]])
 
* Add to the MSVC build. ([[Amine Khaldi]])
 
* WINE/CONFIG.H] ([[Amine Khaldi]])
 
* Don't automatically include buildno.h. ([[Amine Khaldi]])
 
==== ZLIB ====
 
* Update zlib to version 1.2.7.
 
** Enable zlib into wininet. (Vincenzo Cotugno; {{bug|7197}})
 
  
== CPL ==
+
=== CRT ===
==== DESK ====
+
* Multiple free issue fixed, resolving VLC crash on exit.
* Send WM_SETTINGCHANGE with wParam = 0 when applying changes ([[Rafał Harabień]])
 
* Fix a typo. Part of an old (Carlo Bramini; {{bug|3158}})
 
* Enhance 8-bit spectrum bitmap. (Lee Schroeder;{{bug|6069|jira}}
 
==== INETCPL ====
 
* Include the correct pt language rc file. ([[Amine Khaldi]])
 
==== ODBCCP32 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* uxtheme is forked. ([[James Tabor]])
 
==== WINED3DCFG ====
 
* Add a simple control panel applet for WineD3D runtime configuration. ([[Kamil Hornicek]])
 
==== DIRECTX ====
 
* sync ddraw, d3d8, d3d9 and wined3d with wine 1.5.11 ([[Jérôme Gardou]])
 
==== AMSTREAM ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
  
== WINE ==
+
=== COMCTL32 ===
* debug.h Remove unnecessary check (in ReactOS) that made Prefast sad. ([[Stefan Ginsberg]])
+
* Support has been added for the LVS_EX_TRANSPARENTSHADOWTEXT style.
* test.h Disable a false-positive C28182. ([[Stefan Ginsberg]])
+
Functions implemented.
* Import isinf and isnan implementations from libwine_port and adjust port.h and config.h to support them (
+
* DrawShadowText
** Remove isinf/isnan hacks from jscript and wined3d build files
 
** Add missing port.h include to jscript/array.c (sent and applied upstream) ([[Thomas Faber]]; {{bug|7027}})
 
* We have getaddrinfo ([[Thomas Faber]])
 
* Add ok_size_t(), ok_char() and ok_wstr() to test.h ([[Timo Kreuzer]])
 
* Remove useless casts from unicode.h ([[Thomas Faber]];{{bug|6418|jira}}
 
===== WINED3D =====
 
* Do not rely on undefined behavior to get values easily accessible as constants. ([[Thomas Faber]])
 
* Quick build fix. Will be sent to Wine, possibly modified. ([[Thomas Faber]])
 
* Fix msvc x64 build. ([[Amine Khaldi]]; {{bug|7032}})
 
* Remove unneeded powf.c and sqrtf.c. ([[Amine Khaldi]])
 
* Fix wined3d entrypoint. ([[Sylvain Petreolle]])
 
* Should fix directdraw 7,8,9 apps. ([[Sylvain Petreolle]])
 
* MSVC needs INFINITY and NAN from wine/port.h. ([[Jérôme Gardou]])
 
** It can't be included from a header ([[Jérôme Gardou]])
 
** Will be sent upstream ([[Jérôme Gardou]])
 
* Fix DestroyCaret, thanks Thomas... ([[James Tabor]])
 
  
== NTDLL ==
+
=== IPHLPAPI ===
* Implement amd64 version of LdrInitializeThunk and KiUserApcDispatcher ([[Timo Kreuzer]])
+
* ICMP functions are now correctly forwarded to icmp.dll.
* Export ExpInterlockedPopEntrySList* on amd64, too ([[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]])
 
* Fix uninitialized variable usage causing first chance exceptions during SMSS2 loading on livecd ([[Rafał Harabień]])
 
* 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]])
 
* Silences "LdrUnlockLoaderLock() called with an invalid cookie!" debug messages ([[Jérôme Gardou]])
 
==== OPENGL ====
 
* Import newest libMesa version, featuring functional gallium3D opengl ICD. ([[Jérôme Gardou]])
 
* Test app was Baldur's Gate (ddraw app, using wined3d)dll/opengl directory will contain more stuff later. ([[Jérôme Gardou]])
 
* Remove old libmesa code base ([[Jérôme Gardou]])
 
* Add fake iostream headers to fix MSVC compilation ([[Jérôme Gardou]])
 
* hack numerical_limits<float>::infinity() implementation until we have a real C++ library ([[Jérôme Gardou]])
 
* Oddly, empty headers seem to be enough for now ([[Jérôme Gardou]])
 
* Add some optimizations (GCC) on compilation of libMesa ([[Jérôme Gardou]])
 
* Move opengl32 to the opengl directory ([[Jérôme Gardou]])
 
* Disable ICD refcounting for now, it does more harm than good. ([[Jérôme Gardou]])
 
==== MESA ====
 
* Fix compilation for case sensitive systems ([[Jérôme Gardou]])
 
* Add a small "how to upgrade" guide ([[Jérôme Gardou]])
 
==== OPENGL32 ====
 
* fix wine tests a bit ([[Jérôme Gardou]])
 
* Use the TEB instead of TLS to store the thread curent context ([[Jérôme Gardou]])
 
* Track pixel format with window handle for device contexts ([[Jérôme Gardou]])
 
* Fix SetPixelFormat in case pixel format were already set ([[Jérôme Gardou]])
 
* Stub-plement glDebugEntry ([[Jérôme Gardou]])
 
* use MakeCurrent(NULL, NULL) to unset the current context. ([[Jérôme Gardou]])
 
  
== WIN32 ==
+
=== KERNEL32 ===
* Add undocumented flag CBM_CREATDIB ([[Timo Kreuzer]])
+
* IntReadConsoleOutputCharacter has been fixed to copy the correct number of characters.
==== ACTXPRXY ====
+
* ReadProcessMemory/WriteProcessMemory no longer attempt to write to an argument that could potentially be a NULL pointer.
* Use IRegistrar mechanism for registration. Fixes urlmon:misc and mshtml:dom crashes ([[Thomas Faber]]; {{bug|7113}})
+
* WriteProcessMemory now returns STATUS_ACCESS_VIOLATION instead of just BOOL due to third party code relying on this behavior.
==== ADVAPI32 ====
+
* InitCommandLines has been rewritten.
* Don't export Vista+, unused and unimplemented APIs. ([[Sylvain Petreolle]])
+
* GetProcessAffinityMask now uses BaseStaticServerData from CSRSS instead of querying for system information each time.
* Fix buffer overflow in LookupAccountSidA ([[Thomas Faber]]; {{bug|6752}})
+
* GetProcessShutdownParameters/SetProcessShutdownParameters now correctly use the LPC status code from CSRSS instead of the LPC API status code.
* The third parameter of LsaCreateAccount and LsaOpenAccount is an ACCESS_MASK. ([[Eric Kohl]])
+
* GetProcessWorkingSetSizeEx/SetProcessWorkingSetSizeEx has been implemented and is now used by GetProcessWorkingSetSize/SetProcessWorkingSetSize.
* 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]])
+
* GetExitCodeProcess now checks for VDM processes to get the appropriate exit code.
* Use LSA functions to query the account domain SID. ([[Eric Kohl]])
+
* GetStartupInfoA is now thread safe and no longer assumes all ANSI to Unicode conversions will succeed.
* Get the logon user SID using the new SAM keys and values. This is still a hack. ([[Eric Kohl]])
+
* GetStartupInfoW now correctly supplies ShellInfo data and crashes if given a NULL input.
* RegCreateKeyExA/W and RegOpenKeyExA/W: Handle Option REG_OPTION_OPEN_LINK properly. This fixes four wine tests. ([[Eric Kohl]])
+
* ExitProcess now uses SEH and the PEB lock.
* Fix misuse of RtlCreateUnicodeStringFromAsciiz ([[Thomas Faber]])
+
* TerminateProcess now correctly sets the ERROR_INVALID_HANDLE error code.
* Fix a potential memory leak. Spotted by Hermès ([[Thomas Faber]])
+
* FatalAppExitA no longer always assumes success.
* Implement and export RegDeleteKeyEx{A,W} (Thanks Alex). ([[Amine Khaldi]])
+
* FatalAppExitW now raises a hard error.
* Implemented the beginnings of InitiateShutdownA/W (nothing works yet, and it's not exported).
+
* FatalExit now displays a debugger input interface on checked build just like Windows.
** Running InitiateSystemShutdownA/W invokes InitiateSystemShutdownExA/W while
+
* SetPriorityClass now tries to acquire the real time privilege as needed and handles failures to do so.
** using "Other (Planned)" as the reason code.
+
* GetProcessVersion has been rewritten.
** The "Other (Planned)" reason code seemed to be the best default
+
* lpfnGlobalRegisterWaitForInputIdle has been renamed to UserWaitForInputIdleRoutine.
** option so far.
+
* GetQueuedCompletionStatus error status has been fixed to be WAIT_TIMEOUT.
** Added the shutdown flags that are used for InitiateShutdownA/W inside of winreg.h.
+
* When initializing console support, this DLL now attempts to connect to the console server.
** Include the reason.h header inside the winreg.h header so that the reason
+
* KERNEL32 now correctly overrides the thread starting function the RTL exports so that CreateRemoteThread is ultimately called, fixing registration of worker threads with CSRSS.
** codes can be properly called. This conforms to the VC2010 method of adding this support.
+
* A unified LPC message including thread information is now sent instead of two separate messages when a new process is created, increasing performance.
** Added the declarations for InitiateSystemShutdownExA/W and InitiateShutdownA/W inside of winreg.h.  
+
* CreateHardLinkA/W have been cleaned up and now correctly set an error on failure.
** In winuser.h, change the definitions for EWX_* to conform to MSDN
+
* I/O completion functions have been cleaned up and annotated.
** http://msdn.microsoft.com/en-us/library/windows/desktop/aa376868%28v=vs.85%29.aspx
+
* Lock/UnlockFile functions no longer accept console handles and now correctly handle STATUS_PENDING/ERROR_IO_PENDING situations.
** Added definition support for EWX_HYBRID_SHUTDOWN which is found in Windows 8.
+
* The file change notification functions have been rewritten.
** Calling InitiateSystemShutdownExA will convert strings to UNICODE and send it
+
* Support for asynchronous I/O callbacks has been implemented.
** over to InitiateSystemShutdownExW. The same is also for InitiateShutdownA. (milawynsrealm:; {{bug|7245}})
 
* Correctly handle NULL passwords for services. ([[Hermès Bélusca-Maïto]]. Fixes crash in advapi32_winetest:service. , bug 7293; {{bug|7239}})
 
* Implement LsaClearAuditLog. ([[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]])
 
* Implement LsaGetRemoteUserName, LsaQueryDomainInformationPolicy and LsaSetDomainInformationPolicy. ([[Eric Kohl]])
 
* Implement LsaQueryForestTrustInformation and LsaSetForestTrustInformation. ([[Eric Kohl]])
 
* Pre-implement InitiateSystemShutdownExW. (Lee Schroeder.; {{bug|6613|jira}})
 
  
==== ADVPACK ====
+
=== NETSHELL ===
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
+
NETSHELL has been converted into C++ to improve readability.
==== ATL ====
 
* Fix a bug in CComModule::UpdateRegistryFromResource that lead resources not to be unregistered ([[Pierre Schweitzer]])
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
==== AVIFIL32 ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
==== BCRYPT ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== BROWSEUI ====
 
* 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]])
 
==== CABINET ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Really use random temporary file name ([[Jérôme Gardou]])
 
==== COMCTL32 ====
 
* 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]])
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
* Add DrawShadowText implementation ([[Rafał Harabień]])
 
* Add support for LVS_EX_TRANSPARENTSHADOWTEXT style ([[Rafał Harabień]])
 
* Draw shadow if item has focus but isn't selected ([[Rafał Harabień]])
 
* 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ń]]; {{bug|6910}})
 
==== COMDLG32 ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
* Don't modify a dialog template resource directly, instead make a copy of it. ([[Timo Kreuzer]])
 
==== CREDUI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== CRTDLL ====
 
* Create an import lib (needed for upcoming test) ([[Timo Kreuzer]])
 
==== CRYPT32 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Fix MSVC build. Sent and applied upstream. ([[Thomas Faber]])
 
==== CRYPTDLG ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Update the sync notes for clusapi, comcat, compstui and cryptdll. ([[Amine Khaldi]])
 
==== CRYPTNET ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== CRYPTUI ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
* Disregard the messed up rc files temporarily for msvc build. Arch, fix your s.it ! ([[Amine Khaldi]])
 
==== DBGHELP ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
==== DEVMGR ====
 
* 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. (Hermès Bélusca-Maïto {{bug|6638|jira}})
 
==== DWMAPI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== FUSION ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Install fusion.dll where it belongs. ([[Sylvain Petreolle]])
 
* Never ever trust the wine file layout. ([[Sylvain Petreolle]])
 
* wine can load a dll when there is no file using builtins, while normal windows dont. ([[Sylvain Petreolle]])
 
* This fixes fusion beeing installed in the wrong places. ([[Sylvain Petreolle]])
 
* Loading the 2nd and 3rd copy of fusion fails atm. ([[Sylvain Petreolle]])
 
* Add a 4th instance of fusion.dll back into system32. ([[Sylvain Petreolle]])
 
* doesnt match any actual windows system but needed for wine's msi.) ([[Sylvain Petreolle]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== GDIPLUS ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== HLINK ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== HNETCFG ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== HTTPAPI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== IMAGEHLP ====
 
* Fix CMake build (will be that way after sync) ([[Pierre Schweitzer]])
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
==== IMM32 ====
 
* Properly set the compiler flag. ([[Amine Khaldi]])
 
* Sync to Wine 1.3.37 ([[James Tabor]])
 
* Remove unused files ([[Thomas Faber]])
 
==== INETCOMM ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== INETMIB1 ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
==== INSENG ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== IOLOGMSG ====
 
* Build iologmsg.dll. ([[Eric Kohl]])
 
==== IPHLPAPI ====
 
* 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]])
 
==== ITSS ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== KERNEL32 ====
 
* 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:
 
** 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!
 
** 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.
 
** Rewrite InitCommandLines to be much simpler. No normalization or copying or ANSi/OEM logic is needed.
 
** GetProcessAffinityMask should use the BaseStaticServerData from CSRSS instead of querying system information each time.
 
** GetProcessShutdownParameters and SetProcessShutdownParameters should use the LPC status code from CSRSS, not the LPC API status code.
 
** GetProcessWorkingSetSize now calls GetProcessWorkingSetSizeEx.
 
** Implement GetProcessWorkingSetSizeEx.
 
** SetProcessWorkingSetSize now calls SetProcessWorkingSetSizeEx.
 
** Implement SetProcessWorkingSetSizeEx.
 
** Acquire the required privilege in SetProcessWorkingSetSize(Ex).
 
** Fail with correct status code in SetProcessWorkingSetSize(Ex).
 
** GetExitCodeProcess should check if this is a VDM process and get the exit code that way.
 
** GetStartupInfoW should not fail if the input is NULL. It should crash.
 
** GetStartupInfoW was not filling out the lpReserved field, which should contain the ShellInfo buffer.
 
** GetStartupInfoW was always setting standard handles -- it should not do so if those are console handles.
 
** GetStartupInfoA was not thread-safe.
 
** GetStartupInfoA was assuming all Unicode->ANSI conversions will be successful.
 
** GetStartupInfoA was not filling out lpReserved either.
 
** ExitProcess was not using SEH and was not using the PEB lock.
 
** TerminateProcess was not setting ERROR_INVALID_HANDLE last error code.
 
** FatalAppExitA was not using static TEB buffer, and was always assuming success.
 
** FatalAppExitW was doing some sort of bizarre hack. It now raises as a hard error as it should.
 
** FatalExit now displays a debugger input interface on checked builds, just like Windows.
 
** SetPriorityClass now tries to acquire the real time privilege when needed, and handles failure to do so.
 
** GetProcessVersion rewritten to be cleaner and simpler.
 
** Annotate and reformat functions where needed.
 
** Rename lpfnGlobalRegisterWaitForInputIdle to UserWaitForInputIdleRoutine
 
** GetProcessPriorityBoost is now BOOL-safe.
 
** IsWow64Process now sets NT error code using only one API.
 
** CommandLineStringA/W -> BaseAnsiCommandLine/BaseUnicodeCommandLine. ([[Alex Ionescu]])
 
* Fix error status of GetQueuedCompletionStatus, which should set the error to WAIT_TIMEOUT (Samuel Serapion (samcharly_hotmail_com); {{bug|6907}})
 
* Fixes 4 failing winetests (Samuel Serapion (samcharly_hotmail_com); {{bug|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]])
 
* 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]])
 
* 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]]; {{bug|6874}})
 
* Swap GetFullPathName success/failure cases in BasePushProcessParameters. Fixes kernel32:GetModuleFileName test. ([[Thomas Faber]]; {{bug|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]])
 
* 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]]; {{bug|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]]; {{bug|6595}})
 
* Bring back previous implementation of GetGeoInfo & co. ([[Aleksey Bragin]]; {{bug|6595}})
 
* Fix GEO_OFFICIALLANGUAGES in the headers. ([[Aleksey Bragin]]; {{bug|6595}})
 
* Thanks to Kamil Hornicek and Samuel Serapion for finding the problem and creating patches. ([[Aleksey Bragin]]; {{bug|6595}})
 
* Sync FormatMessage implementation to Wine 1.5.4. Fixes crash in kernel32_winetest:format_msg. ([[Thomas Faber]]; {{bug|7217}})
 
* Fix a comment and a last error value. By Hermes Belusca. ([[Amine Khaldi]]; {{bug|7240}})
 
* Fix buffer overflow in PeekNamedPipe ([[Thomas Faber]])
 
* Remove svn:keywords properties. ([[Sylvain Petreolle]])
 
* Add iconv. ([[Mike Nordell]])
 
* Reworking the Find* APIs in kernel32. Fixes some kernel32_winetest:file failures.
 
** The FindExInfoBasic information level for FindFirstFileEx, is also implemented.
 
** Update ndk and psdk headers regarding to this work. ([[Hermès Bélusca-Maïto]]; {{bug|6623|jira}})
 
==== LSASRV ====
 
* Initialize an uninitialized variable in AttributeSize. Fixes crashing advapi32_winetest lsa ([[Timo Kreuzer]])
 
* Fix return value of LsarQueryAccountDomain ([[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]])
 
* 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 http://code.google.com/p/mimikatz/source/browse/trunk/librairies/sekurlsa/secrets.cpp?r=24. ([[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]])
 
==== MCIAVI32 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MCICDA ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MCISEQ ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MCIWAVE ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== MLANG ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Fix entrypoint and add startup code to fix registration of mlang classes. Fixes crashes and failures in inetcomm:mimeintl winetest and adds back many tests in mlang winetest ([[Rafał Harabień]])
 
* Remove unneeded import library references ([[Thomas Faber]])
 
* Mark modules as synced to 1.5.4 if they are ([[Thomas Faber]])
 
* Add missing win32 dlls ([[Thomas Faber]])
 
==== MSAFD ====
 
* 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]])
 
==== MSCMS ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== MSCOREE ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Add InstallRoot key. ([[Sylvain Petreolle]])
 
* It is reg_sz and contains the full path to the installation directory. ([[Sylvain Petreolle]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== MSCTF ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MSFTEDIT ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MSHTML ====
 
* Adopt a compatible syntax for the resource files. ([[Amine Khaldi]])
 
==== MSI ====
 
* Sync msi.dll with Wine head ([[Pierre Schweitzer]])
 
* Adopt a compatible syntax for the resource file. ([[Amine Khaldi]])
 
* Add some registration that was missing from the sync. ([[Amine Khaldi]])
 
* Properly sync to Wine 1.3.37. This partially reverts r55046. ([[Amine Khaldi]])
 
* Create InstallerLocation key, regression from r55046. ([[Sylvain Petreolle]])
 
* Fixes msi installer check in bug 6879. ([[Sylvain Petreolle]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.10 ([[Amine Khaldi]])
 
==== MSIMTF ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MSISIP ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MSSIGN32 ====
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== MSTASK ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== MSXML ====
 
* Import from Wine. ([[Amine Khaldi]])
 
==== MSXML2 ====
 
* Import from Wine. ([[Amine Khaldi]])
 
==== MSXML3 ====
 
* 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]];{{bug|6645|jira}})
 
* Make GpGraphics save/restore state id's a bit more like Windows. Fixes a winetest graphics state check failure. ([[Mike Nordell]])
 
==== MSXML4 ====
 
* Import from Wine. ([[Amine Khaldi]])
 
==== MSXML6 ====
 
* Import from Wine. ([[Amine Khaldi]])
 
==== NDDEAPI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== NETSHELL ====
 
* Rewrite in C++ to improve readability ([[Rafał Harabień]])
 
* Add surrogate pair macros. ([[James Tabor]])
 
* Remove 16 bit code. ([[James Tabor]])
 
==== NEWDEV ====
 
* Remove a hack needed because DN_DISABLEABLE was never set ([[Cameron Gutman]])
 
==== NTDSAPI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== NTPRINT ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== OBJSEL ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== OLE32 ====
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
* Do not set DllGetClassObject as private. Fixes comcat msvc build. ([[Amine Khaldi]])
 
==== PRINTUI ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== PSTOREC ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== QUERY ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== RASAPI32 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Export RasGetLinkStatistics (as a stub). ([[Amine Khaldi]]; {{bug|6731|jira}})
 
==== RICHED20 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== RPCRT4 ====
 
* Make rpcrt4_ros.diff actually reflect our difference to Wine ([[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]])
 
==== RSAENH ====
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== SAMLIB ====
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Update i386-dis.c to CVS 1.48. Fixes some Intel syntax disassembly bugs. ([[Thomas Faber]])
 
* Use setjmp instead of _setjmp ([[Thomas Faber]])
 
* Fix MSVC build and add the module to our build. ([[Amine Khaldi]])
 
* Implement SamGetAliasMembership, SamQueryInformationAlias and SamSetInformationAlias. ([[Eric Kohl]])
 
* Add stub SamLookupNamesInDomain. ([[Eric Kohl]])
 
* Prevent multiple declarations of SAM types. ([[Eric Kohl]])
 
==== SAMSRV ====
 
* 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]])
 
* Fix dialog painting marked as WIP (Hermes Belusca; {{bug|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]])
 
* 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]])
 
* Implement SamIFree_SAMPR_RETURNED_USTRING_ARRAY and SamIFree_SAMPR_ULONG_ARRAY. ([[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]])
 
  
==== SETUPAPI ====
+
=== NTDLL ===
* Import SetupDuplicateDiskSpaceListA/W and SetupQuerySpaceRequiredOnDriveW from Wine 1.5.4. ([[Amine Khaldi]])
+
* LdrpCheckForLoadedDll has been fixed to try and resolve KVM/QEMU crashes.
* Sync SetupCreateDiskSpaceListW with Wine head. ([[Sylvain Petreolle]])
+
* An uninitialized variable usage was causing a first chance exception with the new SMSS when booting a livecd.
* Fixes remaining setupapi:diskspace test failures. ([[Sylvain Petreolle]])
+
* Server to server calls are now supported.
==== SHELL32 ====
+
Functions Implemented
* Add drop shadows support for desktop ([[Rafał Harabień]])
+
* LdrInitializeThunk (x64)
* Set proper label color based on background color when drop shadows is disabled ([[Rafał Harabień]])
+
* KiUserApcDispatcher (x64)
* 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ń]]; {{bug|6568}})
 
* Prefix the local version.h and version.rc with shell32_. ([[Amine Khaldi]])
 
* Include the rgs resource files in a portable way. ([[Amine Khaldi]])
 
* Improve shortcut properties dialog.
 
** Fix folder properties dialog.
 
** Improve file properties dialog.
 
** Improve drive properties dialog.  
 
** Remove trailing backslash in shellink working dir ([[Edijs Kolesnikovičs]]; {{bug|7000}})
 
* Fix a trace message, noticed by [[Edijs Kolesnikovičs]] ([[Timo Kreuzer]])
 
* 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]];{{bug|6722|jira}})
 
* 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]]; {{bug|6099|jira}})
 
  
==== SHLWAPI ====
+
=== RTL ===
* Sync to Wine 1.5.13. ([[Amine Khaldi]])
+
* Reference counting in RtlpDosPathNameToRelativeNtPathName_Ustr has been fixed.
* StrToInt64ExW (Unicode) and StrToInt64ExA (Ascii) are missing in SHLWAPI.DLL ([[Amine Khaldi]]; {{bug|5759|jira}})
+
* Some misuse of critical section debug flags in WINE code has been worked around.
 +
* 64bit version of HEAP_COMMON_ENTRY has been fixed so that each used field is at its correct position.
 +
* It is now possible for the thread starting function to be correctly overridden.
 +
* RtlIpv4AddressToStringA and RtlIpv4AddressToStringW now crash on a NULL buffer to match behavior on Windows.
 +
* RtlIpToString functions now return -1 instead of crashing when given a NULL buffer to match behavior on Windows.
 +
Functions Implemented
 +
* RtlSetCurrentDirectory_U
 +
* RtlSetThreadIsCritical
 +
* RtlInitializeContext (x64)
 +
* RtlSetThreadPoolStartFunc
 +
* RtlSetThreadErrorMode
 +
* RtlGetThreadErrorMode
  
==== SPOOLSS ====
+
=== SHELL32 ===
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
+
* A combination of improvements to color and style for the desktop has been implemented, including drop shadows.
==== STI ====
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== SXS ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
==== SYSSETUP ====
 
* Register atl before anything else. ([[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]])
 
* 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]])
 
* 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]])
 
* Use a writable buffer for lpCommandLine in CreateProcessW. Simplify starting of control panel applets. (Hermès Bélusca; {{bug|6570|jira}})
 
  
==== TRAFFIC ====
+
=== SMLIB ===
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
+
Functions Implemented
==== URL ====
+
* SmConnectToSm
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
+
* SmExecPgm
==== USERENV ====
+
* SmSessionComplete
* Simplify AcquireRemoveRestorePrivilege. Improve clean-up & acquire privilege before unloading hive in CreateUserProfileW. (Hermes Belusca; {{bug|7160}})
+
=== USER32 ===
* Implement stubs for userenv.dll. (Hermes Belusca; {{bug|7184}})
+
* A resource leak involving fonts when switching between applications has been dealt with.
==== UXTHEME ====
+
* RealChildWindowFromPoint now skips invisible windows.
* fix a few winetests (Ben Pye)
+
=== UXTHEME ===
* Stop using ObfXXX and IofXXX in C code. This is bad style. Always use the non-f versions in C code. ([[Stefan Ginsberg]])
+
UXTHEME has now been forked from Wine and is solely maintained by this project.
* 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]])
+
* Loading of MENUEX resources has been fixed.
* Partial sync port Wine 1.5.4 for system.c. ([[James Tabor]])
 
* Sync port up to Wine 1.5.4 and head. ([[James Tabor]])
 
* Add RegisterClassNameW to ComCtl32. ([[James Tabor]])
 
  
==== VERSION ====
+
== Memory Management ==
* Remove unnecessary lz32 import. ([[Sylvain Petreolle]])
+
* The memory manager allocates a full 64&nbsp;KB memory block and returns it to the requesting code instead of merely aligning it to a 64&nbsp;KB boundary and returning a block of memory sized to the original request. A hack has been added so that even though the full 64&nbsp;KB allocation still occurs, the allocating code is only informed about the block of memory that matches its requested size.
==== WINDOWSCODECS ====
+
* The memory manager now correctly deals with file access rights when mapping sections.
* Type safety for MSVC compat layer ([[Thomas Faber]])
+
* MmFindGapBottomUp and MmFindGapTopDown have been reimplemented to properly create memory areas in the right places.
==== WINHTTP ====
+
* MI_REAL_SYSTEM_RANGE_START has been defined to be the canonical system space base address and MmSystemRangeStart switched to a broken value to match behavior on Windows for 32bit mode. MmSystemRangeStart has the correct value for 64bit mode.
* Sync to Wine 1.5.4 ([[Thomas Faber]]; {{bug|7186}})
+
* A variety of page table initialization functions have been improved.
* Fïx warnings ([[Thomas Faber]]; {{bug|7186}})
+
* MiRosTakeOverPebTebRanges has been renamed to MiRosTakeOverSharedUserPage and changed to only take over shared memory. Previous implementation did not even take over PEB/TEB memory correctly.
==== WININET ====
+
* MiResolveDemandZeroFault is now used directly instead of creating a demand zero PDE and calling MiDispatchFault.
* Add zlib include path / link. ([[Sylvain Petreolle]])
+
* MmArmAccessFault has been simplified in cases where page faults from user and kernel mode result in the same codepath. MmArmAccessFault also now supports 3/4 level page tables.
* Better mark ROS-specific changes
+
* The memory manager can now distinguish between kernel and user mode pages when using 3/4 level page tables.
** Make wininet_ros.diff sensible
+
* MiNonPagedSystemSize is now used when creating the system NP memory area instead of making assumptions about the memory layout.
** Update wininet.h
+
* Allocation for PDE pages now goes through ARM3, which resolves an issue where the old memory manager leaked them. This partially fixes the highly problematic 'mshtml' bug that testers encountered in 0.3.14.
** Sync to Wine 1.5.4. Resource files left untouched.  
+
* MiFindEmptyAddressRangeDownTree now returns the right value in error cases.
** Fix INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT if SSL support unavailable (already applied upstream) ([[Thomas Faber]]; {{bug|7117}})
+
* Leaks of page table entries from deleted TEBs and VA mappings have been squashed.
* Fix sock_namelen type in FTP_Connect. Already sent to Wine. ([[Thomas Faber]])
+
* Unnecessary boot registry, NLS, and heap data are now being properly cleaned up, reducing memory usage after 3rd stage boot.
* Initialize Winsock before using getaddrinfo (and in general). Fixes test regressions from r56773. ([[Thomas Faber]]; {{bug|7135}})
+
* INIT and SCN_MEM_DISCARDABLE sections from all drivers and the kernel are now properly freed, reducing memory usage.
* Merge fix for buffer overrun causing rapps to crash http://www.winehq.org/pipermail/wine-patches/2012-July/115909.html ([[Cameron Gutman]])
+
* User shared data is now correctly released at process cleanup, eliminating the last major leak that was part of the 'mshtml' issue.
 +
* Pool tag tracking has been implemented for both small and big allocations. Expansion is not yet supported.
 +
* Memory allocation failures are now handled more correctly, with support for various debug and caller flags instead of simply returning NULL.
 +
* Counters for paged and nonpaged pool have been implemented.
 +
* The memory system is now VAD-based instead of using memory areas.
 +
* Page fault handling has been considerably improved to handle a variety of situations and conditions.
 +
Implemented Functions
 +
* MiBuildPfnDatabase (x64)
 +
* MiAddDescriptorToDatabase (x64)
 +
* MiBuildPfnDatabaseFromPageTables (x64)
 +
* MiSetupPfnForPageTable (x64)
 +
* MmCreateProcessAddressSpace (x64)
 +
* MmGetPageTableForProcess (x64)
 +
* MmUnmapPageTable (x64)
 +
* MmGetPageFileMapping (x64)
 +
* MmDeleteProcessPageDirectory (x64)
 +
* MiSynchronizeSystemPde
 +
* MmFreeLoaderBlock
 +
* MmSetExecuteOptions
 +
=== Common Cache ===
 +
A reintegration checkpoint from the NewCC branch occurred. This checkpoint brings with it a variety of improvements including clearer delineation of ownership over memory objects, lockfree blocking operations, and overall cleaner and simpler code. NewCC is not enabled by default and has a separate mode for its usage. When NEWCC mode is turned on, third party filesystem drivers are actually able to function.
  
==== WINTRUST ====
+
== Network Stack ==
* Sync to Wine 1.5.4 ([[Thomas Faber]])
+
=== WINSOCK32 ===
* Do not delay-import imagehlp. Fixes crash in wintrust:crypt ([[Thomas Faber]]; {{bug|7171}})
+
* Invalid AQ_WIN16 comparisons fix was imported from Wine.
==== WS2_32 ====
 
* Fix invalid AQ_WIN16 comparisons. Spotted by you-know-what. Fix taken from Wine. ([[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]]; {{bug|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]])
 
  
==== WS2_32_NEW ====
+
== Services ==
* Fix uninitialized variable usage warning, based on a ([[Edijs Kolesnikovičs]]; {{bug|6828}})
+
* Log files opened via the event log service are should only be closed when its owning service has stopped.
==== WSHTCPIP ====
+
* Attempting to open a non-existent backup log file now fails while attempting to open an existing backup log file will only allow for reads.
* Fix MSVC warnings, more useful DPRINT ([[Thomas Faber]])
+
* LogfInitializeNew and LogfInitializeExisting now return NTSTATUS instead of BOOL.
* Add better debugging for unsupported options ([[Cameron Gutman]])
 
* Implement setting SO_DONTROUTE (nop) ([[Cameron Gutman]])
 
* Return WSAENOPROTOOPT for invalid SOL_SOCKET options ([[Cameron Gutman]])
 
==== WTSAPI32 ====
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
==== WUAPI ====
 
* Sync to Wine 1.5.4 ([[Thomas Faber]])
 
* Add missing interface registration ([[Thomas Faber]])
 
==== XINPUT1_3 ====
 
* Move header file to PSDK, where it belongs ([[Thomas Faber]])
 
==== XMLLITE ====
 
* Sync to Wine 1.3.37 ([[Rafał Harabień]])
 
  
== DRIVERS ==
+
== Shell ==
=== BLUETOOTH ===
+
=== EXPLORER ===
==== FBTUSB ====
+
* The shell now receives a WM_SETTINGCHANGE message when styles are changed.
* Add to build and bootcd ([[Cameron Gutman]])
+
== Startup/Shutdown ==
* Properly add fbtusb. This fixes both gcc and msvc builds. ([[Amine Khaldi]])
+
* Filesystem drivers are now loaded on demand instead of at boot.
* Fix whitespace issues ([[Thomas Faber]])
+
=== FreeLoader ===
* Explicitly mark the functions as stdcall. ([[Amine Khaldi]])
+
* A wrong buffer size calculation that could cause memory corruption was fixed.
=== BUS ===
+
* The low 1&nbsp;MB of memory is no longer mapped into kernel space.
==== ACPI ====
+
* A new heap implementation has been created, optimizing and reducing memory usage by about 4&nbsp;MB.
* Check that we're not reporting the same device multiple times ([[Cameron Gutman]])
+
<!-- == BASE ==
* Ignore resource producers when reporting resources ([[Cameron Gutman]])
+
{{Notice|Please note that some information on this page is still missing or incomplete. It will be added soon.}}
* Properly tag alternate interrupt and DMA resources ([[Cameron Gutman]])
+
=== APPLICATIONS ===
* Only iterate through the first dependent function (for now) ([[Cameron Gutman]])
+
==== ATACTL ====
* Remove remnant of old boot method. ([[Stefan Ginsberg]])
+
==== CALC ====
* Add translation code for ACPI_RESOURCE_TYPE_FIXED_IO ([[Cameron Gutman]])
+
==== CHARMAP ==== -->
* 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]])
 
==== PCI ====
 
* Get rid of some magic numbers ([[Thomas Faber]])
 
* Add an unload handler to prevent warnings from the I/O manager ([[Cameron Gutman]])
 
==== PCIX ====
 
* Fix broken ASSERT ([[Stefan Ginsberg]])
 
* Fix usage of wrong (and uninitialized) variable in the Unicode case for PciGetDescriptionMessage. ([[Stefan Ginsberg]])
 
==== CDFS ====
 
=== FILESYSTEMS ===
 
* Prevent an infinite loop in CdfsDeviceIoControl if the the verify request is successful but IoCallDriver keeps returning STATUS_VERIFY_REQUIRED ([[Cameron Gutman]])
 
==== FASTFAT ====
 
* Check the return value of CcPinRead ([[Cameron Gutman]])
 
* Fix an if condition in VfatCreateFile causing opening a volume to always return access denied ([[Thomas Faber]])
 
* Powered by VS11 ([[Thomas Faber]])
 
==== NPFS ====
 
* Keep a reference count for FCBs to prevent race conditions when closing multiple handles to the same pipe concurrently ([[Thomas Faber]]; {{bug|7205}})
 
* Acquire the pipe list lock in NpfsQueryDirectory to guard against concurrent deletion of pipes ([[Thomas Faber]]; {{bug|7205}})
 
* Do not pass non-boolean Alertable values to KeWaitForSingleObject ([[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]])
 
* 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]])
 
==== MOUNTMGR ====
 
=== FILTERS ===
 
* Silence false GCC warnings ([[Thomas Faber]])
 
* Update some modules that didn't change between syncs. ([[Amine Khaldi]])
 
* Fix some string length calculations. ([[Dmitry Gorbachev]])
 
=== HID ===
 
==== HIDCLASS ====
 
* Call mini driver for pnp events ([[Johannes Anderwald]])
 
* Wait for all pending irps to complete ([[Johannes Anderwald]])
 
* Signal event when last pending transfer is done ([[Johannes Anderwald]])
 
* Reject new transfers when stop is in progress ([[Johannes Anderwald]])
 
* Disable removal of PDOs due to IRP cancellation issues ([[Cameron Gutman]])
 
* Add a missing break, preventing a null pointer dereference. CID 515263. ([[Amine Khaldi]])
 
==== HIDPARSE ====
 
* Fix several wrong translated scan codes ([[Johannes Anderwald]])
 
==== HIDUSB ====
 
* Check if boot procol is supported ([[Johannes Anderwald]]; {{bug|6886}})
 
* Don't assert on boot protocol active ([[Johannes Anderwald]]; {{bug|6886}})
 
* Retrieve protocol after configuration has been selected ([[Johannes Anderwald]]; {{bug|6886}})
 
* Fixes HID regression ([[Johannes Anderwald]]; {{bug|6886}})
 
* Fix bug when removing device object found by Cameron Gutman ([[Johannes Anderwald]])
 
==== KBDHID ====
 
* Fix extended keys (scan-codes prefixed with E0) translation. Fixes Win-key. ([[Rafał Harabień]])
 
==== I8042PRT ====
 
=== INPUT ===
 
* All this file is a big hack and should be removed one day…" - Today is that day! setup.c is no more! ([[Cameron Gutman]])
 
* Move keyboard drivers to the Keyboard.Load section ([[Cameron Gutman]])
 
==== KBDCLASS ====
 
* Kill the rest of the input stack hack of doom ([[Cameron Gutman]])
 
* Demote an assertion into a warning ([[Cameron Gutman]])
 
==== MOUCLASS ====
 
* Fix a file object reference leak on legacy enumerated keyboard and mouse port drivers ([[Cameron Gutman]])
 
==== KS ====
 
=== KSFILTER ===
 
* Add PnP hack for IoSetDeviceInterfaceState ([[Johannes Anderwald]])
 
* Handle custom sized nodes ([[Johannes Anderwald]])
 
* Fix property item merge in KsMergeAutomationTable ([[Johannes Anderwald]])
 
* Fix misuse of UlongToPtr ([[Timo Kreuzer]])
 
==== AFD ====
 
=== NETWORK ===
 
* 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
 
** It now attempts to keep its 64K receive buffer completely full at all times
 
** 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]])
 
===== PCNET =====
 
==== DD ====
 
* Fix incorrectly truncated FullDuplex BOOLEAN ([[Thomas Faber]])
 
==== LAN ====
 
* 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]])
 
==== NDIS ====
 
* 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]]; {{bug|7191}})
 
* Remove spurious form feeds from NDIS code. (Lee Schroeder; {{bug|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]];{{bug|6064|jira}})
 
==== TCPIP ====
 
* Fix a crash when a NIC driver indicates the media state before we're expecting it ([[Cameron Gutman]])
 
* Fixes bug {{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]])
 
* 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]])
 
==== BLUE ====
 
=== SETUP ===
 
* Fix code designed to avoid touching the hardware if it is already owned ([[Cameron Gutman]])
 
=== STORAGE ===
 
* 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]])
 
==== CLASS ====
 
===== CDROM_NEW =====
 
* Misc build fixes for mingw and msvc with cmake ([[Johannes Anderwald]])
 
* Explicitly mark the functions as stdcall. ([[Amine Khaldi]])
 
===== CLASS2 =====
 
* 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]])
 
===== DISK_NEW =====
 
* Silence GCC 4.6 array bounds warning/error. ([[Dmitry Gorbachev]])
 
* Explicitly mark the functions as stdcall. ([[Amine Khaldi]])
 
===== RAMDISK =====
 
* Implement RamdiskSetPartitionInfo and make use of it ([[Pierre Schweitzer]])
 
* Also use RamdiskGetPartitionInfo in RamdiskWorkerThread ([[Pierre Schweitzer]])
 
* Implement RamdiskFlushBuffers, RamdiskUnload ([[Pierre Schweitzer]])
 
* Implement RamdiskScsi, RamdiskSystemControl, RamdiskPower ([[Pierre Schweitzer]])
 
* Implement RamdiskRemoveBusDevice. ([[Pierre Schweitzer]])
 
* Stubplement RamdiskDeleteDiskDevice. ([[Pierre Schweitzer]])
 
* Use them in RamdiskPnp. ([[Pierre Schweitzer]])
 
==== CLASSPNP ====
 
* 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]])
 
* Make srb volatile, since it's assigned inside SEH and referenced in finally ([[Timo Kreuzer]])
 
==== IDE ====
 
===== UNIATA =====
 
* Try to fix KVM testbot ([[Cameron Gutman]])
 
* Update Uniata to 41b5. Thanks to Alter for the great driver and Olaf Siejka for preparing the patch, getting our changes upstream and testing the updated version. ([[Aleksey Bragin]]; {{bug|7148}})
 
* Improve the way DDKAPI, DDKCDECLAPI and DDKFASTAPI are defined. With that we don't need ReactOS specific defines anymore. ([[Amine Khaldi]])
 
* Sync with UniATA v0.42e2. ([[Amine Khaldi]])
 
* Hello AHCI support, you've been missed ! (that's WIP but still) ([[Amine Khaldi]])
 
* Sync with v0.42h. ([[Amine Khaldi]])
 
* Sync with v0.42i2. ([[Amine Khaldi]])
 
* Sync to 0.43a1. ([[Amine Khaldi]]; {{bug|7237}})
 
* Sync to 0.43f5. ([[Amine Khaldi]])
 
* Sync to 0.43f5. ([[Amine Khaldi]])
 
* Sync to 0.44b4. ([[Amine Khaldi]];{{bug|6563|jira}})
 
==== SCSIPORT ====
 
* 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]]; {{bug|7147}})
 
* Thanks to Alter (UniATA author) for finding the problem and providing solution. ([[Aleksey Bragin]]; {{bug|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]]; {{bug|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]])
 
=== USB ===
 
* Don't compile nt4 compat driver for amd64 ([[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:
 
* Alex Ionescu
 
* Amine Khaldi
 
* Cameron Gutman (
 
* Johannes Anderwald
 
* Michel Martin
 
* Thomas Faber
 
* Thomas Lotz(Haiku)
 
* Let's start the ReactOS revolution ([[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]])
 
==== USBCCGP ====
 
* Remove assert hit during install of hid devices ([[Johannes Anderwald]])
 
* Send unconfigure request when the device is removed ([[Johannes Anderwald]])
 
* Fix retrieving string descriptors ([[Johannes Anderwald]])
 
* Print interface details when dumping the function descriptor ([[Johannes Anderwald]])
 
* Fix bug USBCCG_AppendInterfaceNumber, which is not yet used ([[Johannes Anderwald]])
 
* Handle IRP_MN_QUERY_INTERFACE ([[Johannes Anderwald]])
 
* Implement support for getting string descriptors (may need more work) ([[Cameron Gutman]])
 
* USB mass storage devices which are part of a composite device now initialize ([[Cameron Gutman]])
 
* Add a DriverUnload handler as required by WDM spec ([[Cameron Gutman]])
 
* Fix hardware/compatible id generation (still abusing UNICODE_STRING though) ([[Thomas Faber]])
 
* Do not touch unsupported IRP_MN_QUERY_ID requests ([[Thomas Faber]])
 
==== USBD ====
 
* Rewrite broken USBD_CreateConfigurationRequestEx ([[Johannes Anderwald]])
 
* It did not calculate the required urb size correctly ([[Johannes Anderwald]])
 
* It did not store the correct number of provided interfaces ([[Johannes Anderwald]])
 
* Length of each interface information was wrong ([[Johannes Anderwald]])
 
==== USBEHCI ====
 
* Do not queue a work item twice ([[Johannes Anderwald]])
 
* Store full configuration descriptor ([[Johannes Anderwald]])
 
* skip intermediate descriptors until the requested descriptor is found while parsing the configuration descriptor ([[Johannes Anderwald]])
 
* simplify CUSBDevice::GetConfigurationDescriptors ([[Johannes Anderwald]])
 
* check if an interface descriptor has endpoint descriptors ([[Johannes Anderwald]])
 
* Abort pipe when performing sync reset request ([[Johannes Anderwald]])
 
* add assert to check for bogus interface descriptors ([[Johannes Anderwald]])
 
* use endpoint max packet size when available ([[Johannes Anderwald]])
 
* flip data toggle after each transfer ([[Johannes Anderwald]])
 
* use maximum of 4 pages or rest current buffer size when performing a bulk requests ([[Johannes Anderwald]])
 
* use nak reload count 3 ([[Johannes Anderwald]])
 
* perform 1 transaction per frame ([[Johannes Anderwald]])
 
* Fix very long delay between setting the reset bit and clearing it ([[Cameron Gutman]])
 
* Wait for the port to come back enabled before finishing the reset ([[Cameron Gutman]])
 
* Don't wait for a port to stabilize unless there's actually a device connected ([[Cameron Gutman]])
 
* Remove assertion which no longer holds ([[Johannes Anderwald]])
 
* Delete old queue head after a new queue head has been sucessfully fetched ([[Johannes Anderwald]])
 
* Don't clear extra bits when acknowledging a port connect status change ([[Cameron Gutman]])
 
* When releasing a low or full speed device, set the EHCI_PRT_RELEASEOWNERSHIP bit with the current port status so that any change bits are acknowledged ([[Cameron Gutman]])
 
* Fixes detecting new devices after a companion controller handoff ([[Cameron Gutman]])
 
* Fix retrieving configuration index for real ([[Johannes Anderwald]])
 
* Some misc fixes to Prefast. ([[Stefan Ginsberg]])
 
* Disable removal of FDOs due to reinitialization issues ([[Cameron Gutman]])
 
* Clear unwanted bits
 
** Fix wait time as in spec
 
** Wait max 500ms for the reset bit to clear, otherwise restart the reset sequence
 
** Check if work item is currently queued ([[Johannes Anderwald]])
 
* More EHCI reset fixes and general code cleanup ([[Cameron Gutman]])
 
* Discard any changes on ports that were given to the companion controller ([[Cameron Gutman]])
 
* Create a macro for properly checking for low speed devices ([[Cameron Gutman]])
 
* Check again for a low speed device after the EHCI reset completes ([[Cameron Gutman]])
 
* Don't ignore status changes on ports that we have released (revert part of r55851) ([[Cameron Gutman]])
 
* Rewrite configuration handling, WIP ([[Johannes Anderwald]])
 
* Use libusb library ([[Johannes Anderwald]])
 
* Apply interface changes ([[Johannes Anderwald]])
 
* Don't halt the controller while the BIOS still has control of it ([[Cameron Gutman]])
 
* Fix regressions caused by libusb ([[Johannes Anderwald]])
 
* Add back the m_PortResetInProgress hack for broken vbox behavior ([[Cameron Gutman]])
 
* Partly implement support for interrupt transfers, WIP, untested ([[Johannes Anderwald]])
 
* Check if allocation of queue heads failed ([[Johannes Anderwald]])
 
* Implement removing of completed queue head ([[Johannes Anderwald]])
 
 
 
==== USBHUB ====
 
* Check if the request is for a valid PDO ([[Johannes Anderwald]])
 
* Handle errors returned from the HCD correctly ([[Cameron Gutman]])
 
* Fix reset event handling in cases where reset does not end up in a new device created ([[Cameron Gutman]])
 
* My MacBook Pro completes USB initialization free of hangs now (usbstor disabled) ([[Cameron Gutman]])
 
* Use root device handle which is is prerequisite for usb hub support ([[Johannes Anderwald]])
 
* Check if FDO is root hub fdo ([[Johannes Anderwald]])
 
* Partly implement fdo hub initialization ([[Johannes Anderwald]])
 
* Implement IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE, IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO ([[Johannes Anderwald]])
 
* Handle retrieving string descriptors failure ([[Johannes Anderwald]])
 
* Implement retrieving USB_BUS_INTERFACE_USBDI_GUID interface ([[Johannes Anderwald]])
 
 
 
==== USBOHCI ====
 
* Set endpoint direction indicator for control transfers ([[Johannes Anderwald]])
 
* Mask Version bits when printing out version ([[Johannes Anderwald]])
 
* Implement function for dumping endpoint descriptor ([[Johannes Anderwald]])
 
* Implement retrieving pid direction from setup packet ([[Johannes Anderwald]])
 
* Flip the pid direction for the status descriptor when data is transferred ([[Johannes Anderwald]])
 
* Return packet size 8 when using the control pipe ([[Johannes Anderwald]])
 
* OHCI control transfer hang is gone ([[Johannes Anderwald]])
 
* OHCI control should now work and attached HID devices finish initialization ([[Johannes Anderwald]])
 
* Remove massive hacks from our port reset code ([[Cameron Gutman]])
 
* We now wait for the reset complete interrupt instead of stalling 10ms and continuing ([[Cameron Gutman]])
 
* Don't wait for a port to stabilize unless there's actually a device connected ([[Cameron Gutman]])
 
* Fix regressions which resulted in hang after reseting device Introduced in revision 55662 ([[Johannes Anderwald]])
 
* Don't preserve command status values when notifying controller of a new bulk / control endpoint ([[Johannes Anderwald]])
 
* Abort pipe & reset data toggle in the sync reset routine ([[Johannes Anderwald]])
 
* Allocate interface descriptors and endpoint handles when creating the configuration descriptor ([[Johannes Anderwald]])
 
* Implement routine for allocating chained descriptors ([[Johannes Anderwald]])
 
* Implement data toggle for bulk&interrupt transfers ([[Johannes Anderwald]])
 
* Mass storage devices should now work in real hardware with OHCI controller ([[Johannes Anderwald]])
 
* Tested in real hardware with NEC Corporation USB [1033:0035] (rev 43) ([[Johannes Anderwald]])
 
* Queue a work item to handle an enable status change condition ([[Cameron Gutman]])
 
* Set the power switching configuration into a known state when initializing the controller ([[Cameron Gutman]])
 
* Finally fix the OHCI reset bug for real and remove hacks ([[Cameron Gutman]])
 
* Delete configuration descriptors when device is deleted ([[Johannes Anderwald]])
 
* Handle unconfigure request ([[Johannes Anderwald]])
 
* Fix indication of USB_PORT_STATUS_RESET changes ([[Cameron Gutman]])
 
* Fixes premature completion of resets causing assertions to fail ([[Cameron Gutman]])
 
* Don't assume iConfiguration value of configuration descriptor is zero based aligned ([[Johannes Anderwald]])
 
* Fixes bugcheck in VmWare ([[Johannes Anderwald]])
 
* Try to fix some real hardware OHCI initialization hangs ([[Cameron Gutman]])
 
* Fix a broken assertion and print out the alignment mask and HCCA pointer ([[Cameron Gutman]])
 
* Implement per-port power control ([[Cameron Gutman]])
 
* Don't overwrite the status from ClearPortFeature with STATUS_SUCCESS ([[Cameron Gutman]])
 
* Partially fixes full speed port handoff ([[Cameron Gutman]])
 
* Use libusb library ([[Johannes Anderwald]])
 
* Fix regressions introduced by libusb ([[Johannes Anderwald]])
 
* Add a OHCI reset hack based on Linux code ([[Cameron Gutman]])
 
* Add back getting port count in a loop to work around AMD chipset errata ([[Cameron Gutman]])
 
 
 
==== USBSTOR ====
 
* Rewrite error handling ([[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]])
 
* Implement timer routine which checks for hung srbs, not yet activated ([[Johannes Anderwald]])
 
* Stop timer when the device is stopped
 
** Implement function to check if the attached device is a floppy device
 
** Implement function to send read format capacity request
 
** Implement missing hardware id / device id support for floppy
 
** Add retry count parameter for debugging purposes  Tested in VBox + VmWare + RH ([[Johannes Anderwald]])
 
* Only send read format capacity when the device type is zero (direct access device) ([[Johannes Anderwald]])
 
* Queue inquriry & format capacity command with an irp ([[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]])
 
* 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]])
 
 
 
==== USBUHCI ====
 
* Start implementing UHCI controller ([[Johannes Anderwald]])
 
* Implement function to retrieve queue head for the specified transfer type ([[Johannes Anderwald]])
 
* Pass device speed to IUSBRequest initialization routines ([[Johannes Anderwald]])
 
* Implementing inserting the new queue head into the required queue head ([[Johannes Anderwald]])
 
* Implement support for control transfers, not yet used ([[Johannes Anderwald]])
 
* Implement starting the controller ([[Johannes Anderwald]])
 
* UHCI has 2 ports ([[Johannes Anderwald]])
 
* Sync shared parts with usbohci driver ([[Johannes Anderwald]])
 
* Fixes memory bug, includes data toggle support, device cleanup etc... ([[Johannes Anderwald]])
 
* Write the configure bit ([[Johannes Anderwald]])
 
* Clear connection change and port suspend bit when set after controller initialization ([[Johannes Anderwald]])
 
* Queue work item after the reset port is complete ([[Johannes Anderwald]])
 
* Disable port before reseting it ([[Johannes Anderwald]])
 
* Wait time for reset is 50ms, not 25ms ([[Johannes Anderwald]])
 
* Clear reset change bit when clearing reset feature ([[Johannes Anderwald]])
 
* Implement enabling port feature ([[Johannes Anderwald]])
 
* Queue dpc when the interrupt indicates completion of a transfer or an error interrupt ([[Johannes Anderwald]])
 
* Implement checking if a queue head is complete ([[Johannes Anderwald]])
 
* Free queue heads and associated endpoint descriptors ([[Johannes Anderwald]])
 
* Detect the size of the configuration descriptor before obtaining the full configuration descriptor ([[Johannes Anderwald]])
 
* Fix integer overflow in BuildTransferDescriptorChain ([[Johannes Anderwald]])
 
* Implement abort pipe ([[Johannes Anderwald]])
 
* Implement support for interrupt transfers ([[Johannes Anderwald]])
 
* Add rbuild file and enable build ([[Cameron Gutman]])
 
* OHCI -> UHCI ([[Johannes Anderwald]])
 
* Implement timer routine which checks for new detected devices. In case a port change is detected, the sce callback routine is invoked ([[Johannes Anderwald]])
 
* Fix initialization bugs in real hardware ([[Johannes Anderwald]])
 
* Remove left-over assert ([[Johannes Anderwald]])
 
* Enable port after reset ([[Johannes Anderwald]])
 
* Delay for the correct amount of time when performing a global reset and a port reset ([[Cameron Gutman]])
 
* Loosen the loop timings a bit to allow for more time for real hardware to complete start/stop/reset ([[Cameron Gutman]])
 
* Clear only the change bits that were set and handle both bits in the either case ([[Cameron Gutman]])
 
* Perform a synchronous callback when the reset completes ([[Cameron Gutman]])
 
* Invert data toggle ([[Johannes Anderwald]])
 
* Use libusb ([[Johannes Anderwald]])
 
* Don't modify PCI configuration in AddDevice function ([[Cameron Gutman]])
 
* Enable usbuhci for testing ([[Cameron Gutman]])
 
* Load USBUHCI during 1st stage setup ([[Johannes Anderwald]])
 
 
 
=== WDM ===
 
==== AUDIO ====
 
===== BACKPLN =====
 
====== PORTCLS ======
 
* Silence some debug info. ([[Amine Khaldi]])
 
* Fix broken "pointer arithmetics" ([[Timo Kreuzer]])
 
* Properly handle interrupt sharing for InterruptSyncModeAll and InterruptSyncModeRepeat ([[Cameron Gutman]])
 
===== FILTERS =====
 
====== KMIXER ======
 
* Fix Pin_fnFastWrite return value in failure case. (Vincenzo Cotugno)
 
 
 
== HAL ==
 
* 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]]; {{bug|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]])
 
=== HALX86 ===
 
* Fix halx86 release build ([[Pierre Schweitzer]])
 
* Revert r56080 ([[Pierre Schweitzer]])
 
* Fix the fix of r56090 ([[Pierre Schweitzer]])
 
== INCLUDE ==
 
=== ASM ===
 
* Modify syscall stub macros to be compatible with the new amd64 stubs ([[Timo Kreuzer]])
 
=== CRT ===
 
* 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]]; {{bug|6903}})
 
* Found by Thomas Faber. for details. ([[Jérôme Gardou]]; {{bug|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; {{bug|7085}})
 
* Separate some _CI* functions into their own files and export them from ntdll. (Vincenzo Cotugno; {{bug|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]]; {{bug|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]]; {{bug|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. ([[Hermès Bélusca-Maïto]])
 
* Fix msvcrt_apitest:CommandLine test. ([[Hermès Bélusca-Maïto]])
 
* CORE-6717 #comment Fixed in revision r57536. #resolve ([[Hermès Bélusca-Maïto]])
 
=== DDK ===
 
* 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]])
 
=== NDK ===
 
* Properly define RTLP_CURDIR_REF ([[Pierre Schweitzer]])
 
* LDR_CALLBACK's second parameter is a PCHAR. ([[Alex Ionescu]])
 
* D'oh. ([[Alex Ionescu]])
 
* Fix amd64 definitions of SYNCH_LEVEL, DISPATCH_LENGTH, KINTERRUPT, KTHREAD, KPROCESS, EPROCESS ([[Timo Kreuzer]])
 
* 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]])
 
=== PSDK ===
 
* Fix CMake msi.dll build? ([[Pierre Schweitzer]])
 
* Sync rpcproxy.h with Wine head ([[Pierre Schweitzer]])
 
* Add some annotations. ([[Amine Khaldi]])
 
* Add __out_data_source annotation. ([[Amine Khaldi]])
 
* Missed this one. ([[Amine Khaldi]])
 
* PSDK} ([[Timo Kreuzer]])
 
* Add missing BYTE GAMMA_TABLES declaration ([[Timo Kreuzer]])
 
* Fix some annotations in winddi.h. ([[Amine Khaldi]])
 
* Update wincrypt.h from Wine. ([[Amine Khaldi]])
 
* Update winuser.h annotations. ([[Amine Khaldi]])
 
* Update winsock2.h annotations. ([[Amine Khaldi]])
 
* Update dwmapi.h from Wine. ([[Amine Khaldi]])
 
* Update mmddk.h from Wine. ([[Amine Khaldi]])
 
* IMAADP32.ACM] ([[Amine Khaldi]])
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
* Update winbase.h annotations. ([[Amine Khaldi]])
 
* Update wincon.h annotations. ([[Amine Khaldi]])
 
* Update wtsapi32.h from Wine. ([[Amine Khaldi]])
 
* Import cor.idl, cordebug.idl and metahost.idl from Wine. ([[Amine Khaldi]])
 
* Remove the now unneeded cor.h. ([[Amine Khaldi]])
 
* Update corerror.h, corhdr.h, mscoree.idl and winsxs.idl from Wine. ([[Amine Khaldi]])
 
* Update the cmake and rbuild files to reflect the changes. ([[Amine Khaldi]])
 
* ntdddisk.h: Improve some definitions and add some missing ones. ([[Amine Khaldi]])
 
* access.idl Remove incorrect annotation ([[Stefan Ginsberg]])
 
* usbioctl.h Not really a Prefast issue, but switch to use ANYSIZE_ARRAY like we do everywhere else. ([[Stefan Ginsberg]])
 
* winddi.h EngQueryDeviceAttribute's 6th parameter is IN, not OUT ([[Stefan Ginsberg]])
 
* winefs.h Fix FileEncryptionStatus to use annotations. Its definition in winbase.h already has them and this caused a conflict. ([[Stefan Ginsberg]])
 
* Add missing definitions to wingdi.h ([[Timo Kreuzer]])
 
* Update DBGKD_MAJOR_TYPES. Dedicated to Alex ;) ([[Stefan Ginsberg]])
 
* declare ISAXXMLReader beofre ISAXXMLFilter, one inherits the other. ([[Jérôme Gardou]])
 
* addendum to r56150 ([[Jérôme Gardou]])
 
* Sync cryptuiapi.h with Wine. (Carlo Bramini; {{bug|7016}})
 
* Add the missing PWIN32_FIND_DATA type. ([[Amine Khaldi]])
 
* Add nldef.h and include it in mstcpip.h. ([[Amine Khaldi]])
 
* Add netiodef.h. ([[Amine Khaldi]])
 
* Add some missing definitions in ntdef.h and winnt.h. ([[Amine Khaldi]])
 
* Add missing HS_API_MAX definition. ([[Amine Khaldi]])
 
* Add some missing definitions. ([[Amine Khaldi]])
 
* Sync shldisp.idl with Wine. ([[Amine Khaldi]])
 
* Fix a typo. ([[Amine Khaldi]])
 
* Add some missing definitions. ([[Amine Khaldi]])
 
* Add __post_invalid to specstrings.h ([[Timo Kreuzer]])
 
* Add missing InterlockedCompareExchangePointerAcquire and InterlockedCompareExchangePointerRelease for x86 to winbase.h ([[Timo Kreuzer]])
 
* Add missing MemoryBarrier definition ([[Timo Kreuzer]])
 
* Add missing C definition of InlineIsEqualGUID in guiddef.h ([[Timo Kreuzer]])
 
* Use portable TYPE_ALIGNMENT instead of __builtin_alignof in mstcpip.h ([[Timo Kreuzer]])
 
* Remove definition of DL_EUI48 from netiodef.h, since it's already definied as a forward declaration in mstcpip.h ([[Timo Kreuzer]])
 
* Make WS2TCPIP_INLINE extern inline instead of static inline to fix warnings about usage in non static inline functions ([[Timo Kreuzer]])
 
* Fix WS2TCPIP_INLINE in ws2tcpip.h as well ([[Timo Kreuzer]])
 
* Fix winnt.h include guard definition ([[Timo Kreuzer]])
 
* intsafe.h: ([[Timo Kreuzer]])
 
* Fix type redefinitions when ntdef.h is included ([[Timo Kreuzer]])
 
* Implement (Rtl)LongLongSub and (Rtl)UlongLongMult ([[Timo Kreuzer]])
 
* Add some more definitions ([[Timo Kreuzer]])
 
* misc fixes ([[Timo Kreuzer]])
 
* intsafe.h: Fix a typo ([[Timo Kreuzer]])
 
* Add ULongMult ([[Timo Kreuzer]])
 
* intsafe.h: add some more definitions ([[Timo Kreuzer]])
 
* Add httprequest.idl and httprequestid.h from Wine 1.5.4 ([[Thomas Faber]])
 
* Update winhttp.h to Wine 1.5.4 ([[Thomas Faber]])
 
* Add missing alignment defines to winnt.h (copied from ntdef.h) ([[Thomas Faber]])
 
* Update bcrypt.h to Wine 1.5.4 ([[Thomas Faber]])
 
* At least Wine's headers suck as much as ours ([[Thomas Faber]])
 
* NDK] ([[Thomas Faber]])
 
* Fix build ([[Thomas Faber]])
 
* Revert bcrypt.h. Our headers are doomed to be forever incompatible ;) ([[Thomas Faber]])
 
* Fix bogus initializer in IN4ADDR_SCOPE_ID (aka let's not copy MS's header bugs) ([[Thomas Faber]])
 
* Fix some annotations in winddi.h ([[Timo Kreuzer]])
 
* Add annotations to ntgdi.h (incomplete) ([[Timo Kreuzer]])
 
* Mark Disconnect() method of INetConnectionConnectUi as pure in netcon.h ([[Dmitry Gorbachev]])
 
* Use __attribute__((weak)) instead of __declspec(selectany) until http://llvm.org/bugs/show_bug.cgi?id=13778 is fixed. ([[Amine Khaldi]])
 
* Add missing exception flags to winnt.h ([[Timo Kreuzer]])
 
* Sync some headers and idl files with Wine. ([[Amine Khaldi]])
 
* Import xmldom.h from Wine. ([[Amine Khaldi]])
 
* Add _Check_return_opt and _Check_return_wat_ annotations ([[Timo Kreuzer]])
 
* Remove non-existing enumeration _POLICY_LOCAL_INFORMATION_CLASS and functions LsaQueryLocalInformationPolicy and LsaSetLocalInformationPolicy. ([[Eric Kohl]])
 
* Sync wintrust.h with Wine 1.5.14 ([[Amine Khaldi]])
 
* CORE-6365 #resolve #comment Committed in r57425. Thanks Carlo ;) ([[Amine Khaldi]])
 
=== REACTOS ===
 
==== IDL ====
 
* Add ACF and IDL file for the SAM RPC interface. ([[Eric Kohl]])
 
==== LIBS ====
 
===== CPORTLIB =====
 
* Fix an MSVC warning ([[Timo Kreuzer]])
 
===== PSEH =====
 
* 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]])
 
===== ZLIB =====
 
* Do not duplicate header files. (Vincenzo Cotugno)
 
* Remove svn:keywords properties. ([[Sylvain Petreolle]])
 
==== SUBSYS ====
 
===== CSRSS =====
 
* 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. ([[Hermès Bélusca-Maïto]])
 
=== XDK ===
 
* Massive annotations commit. Dedicated to Timo. ([[Amine Khaldi]])
 
* fix ASSERTs in amd64 inline functions ([[Timo Kreuzer]])
 
* fix definition of KWAIT_BLOCK ([[Timo Kreuzer]])
 
* These fixes are not critical, so I don't update wdm.h to avoid additional recompilation ([[Timo Kreuzer]])
 
* Forgot this one in 55840 ([[Stefan Ginsberg]])
 
* Move exception stuff to rtltypes.h ([[Timo Kreuzer]])
 
* Add missing exception flags ([[Timo Kreuzer]])
 
* Add _DISK_GEOMETRY_EX forward declaration ([[Timo Kreuzer]])
 
==== ADNS ====
 
== LIB ==
 
=== 3RDPARTY ===
 
* Fix incorrect socket validity check that fails for unsigned types ([[Cameron Gutman]])
 
==== LIBWINE ====
 
* Sync some debugging functions with Wine. ([[Amine Khaldi]])
 
=== CMLIB ===
 
* 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]]; {{bug|7162}})
 
* Revert 56884, as Timo says 3 is a correct value for this structure. ([[Aleksey Bragin]])
 
* Remove unused HFILE_TYPE_ALTERNATE. ([[Aleksey Bragin]]; {{bug|7162}})
 
* Reapply changes from r56884: Hermes Belusca: Fix wrong definition of CMHIVE structure. ([[Aleksey Bragin]]; {{bug|7162}})
 
* Forgot part of last patch. ([[Alex Ionescu]])
 
=== DNSLIB ===
 
* Nothing links to it, don't compile it. ([[Amine Khaldi]])
 
==== CSQ ====
 
=== DRIVERS ===
 
* Do not complete IRP while likely holding a spinlock ([[Thomas Faber]])
 
==== HIDPARSER ====
 
* Fix scan-codes for PrintScreen and PauseBreak ([[Rafał Harabień]])
 
* Implement translating customer page to scan-codes ([[Rafał Harabień]])
 
* first cause of broken commits: the headers. Addendum r56048 ([[Jérôme Gardou]])
 
==== IP ====
 
* Favor routers that have responded to our ARP queries during route selection ([[Cameron Gutman]])
 
==== LIBUSB ====
 
* Add library which implements generic host controller tasks ([[Johannes Anderwald]])
 
* Check the device descriptor is valid ([[Johannes Anderwald]])
 
* Implement function to return max packet size ([[Johannes Anderwald]])
 
* Fix infinite loop ([[Johannes Anderwald]])
 
* Don't assert that the clear stall will complete successfully since it may be sent for a removal ([[Cameron Gutman]])
 
* Fixes removal surprise removal of HID devices ([[Cameron Gutman]])
 
* Revert most of r53392 effects. ([[Hervé Poussineau]])
 
* When IoReportDetectedDevice() creates a PDO, the PDO is in no way related to the DriverObject given to the function. ([[Hervé Poussineau]])
 
* Driver calling IoReportDetectedDevice() should then ensure that it attachs a FDO on top of this PDO. ([[Hervé Poussineau]])
 
* freeldr/pxe: remove some traces ([[Hervé Poussineau]])
 
* Fix bug while scanning endpoint descriptors ([[Johannes Anderwald]])
 
* Do not assume interface info has the correct number of pipes set ([[Johannes Anderwald]])
 
* Fix alternate interface handling ([[Johannes Anderwald]])
 
* Tested in VBox + USB Audio Device ([[Johannes Anderwald]])
 
* Fix broken pointer arithmetic ([[Cameron Gutman]])
 
* Fix more PtrToUlong fun ([[Timo Kreuzer]])
 
* Implement URB_FUNCTION_VENDOR_DEVICE ([[Thomas Faber]])
 
* Sensibly handle unknown requests in HandleClassDevice ([[Thomas Faber]])
 
* DPRINT fixes ([[Thomas Faber]])
 
* Return the actual number of bytes copied for configuration descriptor requests ([[Thomas Faber]])
 
* Fix MSVC warnings and NULL vs 0 vs FALSE issues ([[Thomas Faber]])
 
* Whitespace and DPRINT fixes ([[Thomas Faber]])
 
* Compile with no RTTI and exception handling. ([[Dmitry Gorbachev]])
 
* Remove "bashisms" from configure.sh script, simplify it a bit. ([[Dmitry Gorbachev]])
 
* Handle configuration descriptors partial reads. By Jérôme Gardou. ([[Amine Khaldi]])
 
* CORE-6634 #resolve ([[Amine Khaldi]])
 
* Don't use -momit-leaf-frame-pointer in debug gcc builds, it messes up stack traces. ([[Amine Khaldi]])
 
* Remove it from the amd64 gcc builds too. ([[Amine Khaldi]])
 
==== LWIP ====
 
* Use ULONG_PTR instead of ULONG for pointer types ([[Cameron Gutman]])
 
* Dedicated to Timo ([[Cameron Gutman]])
 
* Route multicast packets properly with SO_REUSE set ([[Cameron Gutman]])
 
* Fix address reuse at the TCP layer ([[Cameron Gutman]])
 
* Fix broken handling of partial receives ([[Cameron Gutman]])
 
* Increase window size to 65535 so large sends work properly because send buffering still sucks ([[Cameron Gutman]])
 
* WINGDI.H] ([[Jérôme Gardou]])
 
* Add missing DMDO_* definitions ([[Jérôme Gardou]])
 
===== SOUNDBLASTER =====
 
==== SOUND ====
 
* Nothing links to it, don't compile it. ([[Amine Khaldi]])
 
=== FSLIB ===
 
==== EXT2LIB ====
 
* Fix formatting FAT or NTFS volumes into EXT2 by defining ZAP_BOOTBLOCK and fixing a bug in zap_sector() ([[Cameron Gutman]])
 
=== INFLIB ===
 
* Remove inflib because it has been replaced by newinflib. ([[Eric Kohl]])
 
=== SDK ===
 
* Some fixes/additions to this header. ([[Alex Ionescu]])
 
==== STRMIIDS ====
 
* Add CLSID_MediaStreamFilter. ([[Amine Khaldi]])
 
==== UUID ====
 
* Add SID_SContainerDispatch. ([[Amine Khaldi]])
 
=== SMLIB ===
 
* Add NT-compatible SmConnectToSm and SmExecPgm functions to smlib, which CSRSS and other subsystems can use to talk to SMSS (and SMSS when it talks to itself). Not yet used. ([[Alex Ionescu]])
 
* Forgot to commit this directory. ([[Alex Ionescu]])
 
* Rbuild fix. ([[Alex Ionescu]])
 
* smmsg.h] ([[Timo Kreuzer]])
 
* Fix 64 bit compilation ([[Timo Kreuzer]])
 
* Fix" 64 bit compilation ([[Timo Kreuzer]])
 
* Implement SmSessionComplete. ([[Alex Ionescu]])
 
=== INF ===
 
== MEDIA ==
 
* Fix issue ([[Johannes Anderwald]])
 
* USB CDROM installation now starts ([[Johannes Anderwald]])
 
* Fix the Live CD regression (RBuild only - The irony is not lost on me) caused by r55555 ([[Cameron Gutman]])
 
* There is another regression that still prevents booting though ([[Cameron Gutman]])
 
* Add monitor.inf ([[Cameron Gutman]])
 
* Add monitor.inf to build ([[Cameron Gutman]])
 
* Add legcydrv.inf for installing the LegacyDriver class ([[Cameron Gutman]])
 
* Add PNP0A08 as an alias for the PCI bus (more commonly known as PNP0A03) ([[Cameron Gutman]])
 
* Should fix numerous PCI regressions on various machines since switching to ACPI (and the further regression of breaking boot since VBE is now PnP) ([[Cameron Gutman]])
 
* Add bth.inf ([[Cameron Gutman]])
 
* Change the device description for bluetooth devices ([[Cameron Gutman]])
 
* Add default security settings file for ReactOS Workstation. ([[Eric Kohl]])
 
* Add german translations of device classes. ([[Eric Kohl]])
 
== NTOSKRNL ==
 
* Fix returning uninitialized status (CID 15086) ([[Rafał Harabień]])
 
* Refactor KeUpdateSystemTime, improving readability, fixing a concurrency issue and fixing the code for 64 bit. ([[Timo Kreuzer]])
 
* 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]])
 
* 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 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Implement amd64 version of MmDeleteProcessPageDirectory ([[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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Use LIST_ENTRY not pointer on them as head ([[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]])
 
* 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]])
 
* 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 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]])
 
* 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]])
 
* 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]])
 
* 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]] {{bug|6939}}})
 
* 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]])
 
* Implement reporting more problem codes: CM_PROB_NEED_RESTART, CM_PROB_FAILED_DRIVER_ENTRY, CM_PROB_FAILED_DRIVER_ENTRY, CM_PROB_DRIVER_FAILED_LOAD, CM_PROB_WILL_BE_REMOVED, CM_PROB_HELD_FOR_EJECT, CM_PROB_TRANSLATION_FAILED, and CM_PROB_NORMAL_CONFLICT ([[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]])
 
* 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]])
 
* 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]])
 
* Add a few more C_ASSERTs related to the KTHREAD structure layout ([[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. 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. Fixes FoxitReader 4.2/4.3 ([[Timo Kreuzer]])
 
* Implement keyed events (untested) ([[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]])
 
* Give more useful debug output on BAD_POOL_HEADER bug checks ([[Thomas Faber]])
 
* 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 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 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]]; {{bug|7120}})
 
* Fix a reference leak in PsSetCreateProcessNotifyRoutine ([[Thomas Faber]]; {{bug|7120}})
 
* 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
 
** Fix wait asserts to account for the Thread->WaitNext case
 
** At least output a warning in place of the assertion failure in KeWaitForMultipleObjects
 
** tcpip is called too often. Don't spam the debug log. ([[Thomas Faber]]; {{bug|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]]; {{bug|7139}})
 
* Add amd64 version of MmIsDisabledPage ([[Timo Kreuzer]])
 
* 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]])
 
* http://www.osronline.com/ddkx/appendix/enhancements5_3oc3.htm claims that winXP supports a 960MB-contiguous mapping... ([[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]])
 
* 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]])
 
* Remove another useless ASSERT. ([[Alex Ionescu]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Fix incorrect double list increment ([[Alex Ionescu]]; {{bug|6597|jira}})
 
* Implement hive list support by hbelusca, with some minor cleanups by me. Loaded hives are now in the hivelist key. ([[Alex Ionescu]]; {{bug|6491|jira}})
 
* 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]])
 
* Fix indentation in kdio.c. No code changes. (Hermès Bélusca {{bug|6635|jira}})
 
* Correctly show the amount of available memory in the serial debug log. (Hermès Bélusca {{bug|6635|jira}})
 
* MOAR TEH SESSION SPACE PLZ. KTHXBAI. ([[Alex Ionescu]])
 
* DACL and SACL should only be returned if the control flag indicates that they are present. ([[Alex Ionescu]])
 
* 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]]; {{bug|6675|jira}})
 
* Code formatting. It's my first commit \o/ ([[Hermès Bélusca-Maïto]]; {{bug|6687|jira}})
 
* Coverity code defects fixes :
 
** Cache: CID 701441
 
** Config: CIDs 716570, 716669, 716760
 
** Dbgk: Kdbg: CIDs 716571, 515128/9, 500432
 
** Ex: CIDs 500156/7, 515122, 716200/67, 701301, 514669
 
** Fsrtl: Fstub: CIDs 701341/2, 701288, 716770, 701302, and CIDs 716576/7/8 + 514636 + 716805 thanks to Thomas Faber
 
** Io: CIDs 514576, 514643, 514672/3, 716203, 716269, 716581, 716591, 716713
 
** Ke: CIDs 515125, 716592
 
** Ps: CIDs 716603/4, 701422
 
** Ob: Po: CIDs 514671/680, 701419/420/421, 716763, 716601/2
 
** All the details are given in the different bug reports.
 
** {{bug|6677|jira}} {{bug|6679|jira}} {{bug|6680|jira}} {{bug|6683|jira}} {{bug|6686|jira}} {{bug|6692|jira}} {{bug|6693|jira}} {{bug|6694|jira}} {{bug|6695|jira}} {{bug|6696|jira}}([[Hermès Bélusca-Maïto]])
 
* ExFreePool --> ExFreePoolWithTag in some places. ([[Hermès Bélusca-Maïto]])
 
* Allocate a capture buffer outside of SEH in NtAddAtom and NtRaiseHardError
 
** Call ExpGetCurrentUserUILanguage outside of SEH in NtQueryDefaultUILanguage and return the actual result instead of returning PsInstallUILanguageId in case of success.
 
** Don't allocate a unicode string inside SEH in NtQuerySystemEnvironmentValue, instead use RtlAnsiStringToUnicodeString directly on the callers buffer. ([[Timo Kreuzer]]; {{bug|6624|jira}})
 
* 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]])
 
* Go back to 20 MB session space. ([[Timo Kreuzer]])
 
* Add correct error handling during session space view mapping. ([[Alex Ionescu]]; {{bug|6698|jira}})
 
* Add missing break in KdpServiceDispatcher ([[Timo Kreuzer]])
 
* Fix Coverity defects : CID 716579, 716580 and 716582. ([[Hermès Bélusca-Maïto]])
 
* Use TAG_FSTUB instead of 'BtsF' ([[Hermès Bélusca-Maïto]])
 
* Rearrange the NtQuerySystemEnvironmentValue code to have successive logical checks. ([[Hermès Bélusca-Maïto]])
 
* Some ExFreePool -> ExFreePoolWithTag ([[Hermès Bélusca-Maïto]; {{bug|6725|jira}})
 
* In NtQuerySystemEnvironmentValue : ([[Hermès Bélusca-Maïto]])
 
* Use a fixed-length buffer size for holding a temporary variable. ([[Hermès Bélusca-Maïto]])
 
* DPRINT the filename when MmLoadSystemImage fails ([[Timo Kreuzer]])
 
=== FSRTL ===
 
* Import code from Pierre Schweitzer's fsrtl branch. ([[Art Yerkes]])
 
* Large MCB and MCB ([[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 generic table. ([[Art Yerkes]])
 
* Make the compare function not be confused by attempts to give strange offsets and lengths. ([[Art Yerkes]])
 
* Make the uninitialize function complete all lock requests 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]])
 
=== CSR ===
 
==== CSRSRV ====
 
  
== SUBSYSTEMS ==
+
{{Navigation Changelog}}
* 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. ([[Hermès Bélusca-Maïto]])
 
* Correct misspellings : "othwerwise" --> "otherwise" and "(de)refence" --> "(de)reference". ([[Hermès Bélusca-Maïto]])
 
* Add missing functions' documentation (from the old CSRSRV). ([[Hermès Bélusca-Maïto]])
 
* Add some useful comments. ([[Hermès Bélusca-Maïto]])
 
=== CABMAN ===
 
== TOOLS ==
 
* Ensure line reading buffer is big enough to hold complete paths. ([[Pierre Schweitzer]])
 
* Remove a magic value usage accordingly. ([[Pierre Schweitzer]])
 
* Fix Windows build ([[Pierre Schweitzer]])
 
* Attempt to fix 2. ([[Pierre Schweitzer]])
 
* MAX_PATH shouldn't be defined/used any longer ([[Pierre Schweitzer]])
 
* Get rid of MAX_PATH ([[Pierre Schweitzer]])
 
* Fix MSVC build ([[Thomas Faber]])
 
* Enable debug in order to figure the testbot problems. ([[Sylvain Petreolle]])
 
* Try to fix some drama ([[Jérôme Gardou]])
 
* Turn off debug now that the not closed cabinets issue is fixed. ([[Sylvain Petreolle]])
 
* Addendum to r56045, reverts r55807. ([[Sylvain Petreolle]])
 
* Define WIN32_LEAN_AND_MEAN before including windows.h ([[Amine Khaldi]])
 
=== GENDIB ===
 
* Fix formatting ([[Timo Kreuzer]])
 
* Generate ansi style indentation ([[Timo Kreuzer]])
 
* Fix signed/unsigned MSVC warnings in generated code ([[Timo Kreuzer]])
 
=== GENINC ===
 
* Add support for IMAGE_FILE_MACHINE_ARMNT ([[Timo Kreuzer]])
 
=== MKHIVE ===
 
* Fix 64 bit build ([[Timo Kreuzer]])
 
=== SPEC2DEF ===
 
* Fix use of uninitialized variable warning ([[Timo Kreuzer]])
 
* Implement support for int128. ([[Timo Kreuzer]])
 
* CORE-6630 #resolve ([[Timo Kreuzer]])
 
=== WIDL ===
 
* Set the attribute before the variable in write_func_param_struct(). Should be sent upstream. ([[Amine Khaldi]])
 
* Initialize in an MSVC compatible way. Should be sent upstream. ([[Amine Khaldi]])
 
* Fix MSVC warnings. ([[Timo Kreuzer]])
 
* Could be sent to wine ;-) ([[Timo Kreuzer]])
 
* Update widl to Wine-1.4 ([[Eric Kohl]])
 
* Sync WIDL to Wine 1.5.10. Part 1 of 2. ([[Eric Kohl]])
 
* Adjust files to use MIDL compatible header guards. ([[Eric Kohl]])
 
* Add support for nameless structs and unions. ([[Eric Kohl]])
 
* Missed one old header guard. ([[Eric Kohl]])
 
* Sync WIDL to Wine 1.5.11. Part 2 of 2. ([[Eric Kohl]])
 
* Fix build with MSVC ([[Jérôme Gardou]])
 
* Fix bug on rgs file creation. Will be sent to wine ([[Jérôme Gardou]])
 
* Silence compiler warning ([[Mike Nordell]])
 
* Silence compiler warning ([[Mike Nordell]])
 
* Add VS9 build workaround for widl, like done for wpp. ([[Timo Kreuzer]])
 
* CORE-6636 #resolve ([[Timo Kreuzer]])
 
* Forward-declare coclasses as 'class' in C++ to fix MSVC warnings. Already applied upstream. ([[Thomas Faber]])
 
* CORE-6587 #resolve ([[Thomas Faber]])
 
=== WPP ===
 
* Fix build with VS 9 ([[Timo Kreuzer]])
 
* CORE-6636 #resolve ([[Timo Kreuzer]])
 
* Change newinflib to inflib. ([[Amine Khaldi]])
 
* CORE-6662 #resolve ([[Amine Khaldi]])
 
* Fix WDK build. ([[Timo Kreuzer]])
 
* CSRSRV] ([[Timo Kreuzer]])
 
* Silence an uninformative DPRINT ([[Timo Kreuzer]])
 
* Fix crash in xmlnodelist_QueryInterface. Solves CORE-6665. ([[Mike Nordell]])
 
== WIN32SS ==
 
* 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]]; {{bug|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]]; {{bug|6751}})
 
* WinPos: (WIP) Fixed MapWindowPoints. Arrange icons is still broken. SetWindowPos sets the foreground when it should. ([[James Tabor]]; {{bug|6751}})
 
* Implemented AllowSetForegroundWindow and LockSetForegroundWindow. ([[James Tabor]]; {{bug|6751}})
 
* Commit to reset base lines for RegTest ComCtl32 and related bugs. ([[James Tabor]]; {{bug|6751}})
 
* Coding credits and complements go out to the Wine team. ([[James Tabor]]; {{bug|6751}})
 
* Implement Ctrl+C support on MessageBox. (Guido Pola (prodito {at} live [dot] com); {{bug|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]])
 
* http://www.winehq.org/pipermail/wine-patches/2012-June/114714.html ([[James Tabor]])
 
* http://www.winehq.org/pipermail/wine-patches/2012-June/114715.html ([[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); {{bug|7251}})
 
* Do not assume null termination of DllName and optimize extension search in LdrpLoadDll. (Alexander Yastrebov (menone7 at gmail dot com); {{bug|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: http://www.winehq.org/pipermail/wine-patches/2012-August/116887.html ([[James Tabor]])
 
* Install acts and looks better: http://www.resmap.com/instructions/plug-ins/ERViewer7_0_RC.exe ([[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]])
 
=== DRIVERS ===
 
==== DISPLAYS ====
 
===== FRAMEBUF_NEW =====
 
* Explicitly mark the functions as stdcall. ([[Amine Khaldi]])
 
===== VGA =====
 
* Fix possible NULL pointer dereference. (numitus (domovoi94 at gmail dot com))
 
===== VGA_NEW =====
 
* Explicitly mark the functions as stdcall. ([[Amine Khaldi]])
 
==== FONT ====
 
===== BMFD =====
 
* Remove a pointless check (CID 731583) ([[Timo Kreuzer]])
 
* Add a comment ([[Timo Kreuzer]])
 
* Simplify code ([[Timo Kreuzer]])
 
===== FTFD =====
 
* Properly set the base address. ([[Amine Khaldi]])
 
==== MINIPORT ====
 
===== VBE =====
 
* Turn on PnP support ([[Cameron Gutman]])
 
==== VIDEOPRT ====
 
* Create DEVICEMAP\VIDEO key with proper length. Fixes a bug exposed as "Arwinss unable to change resolution". ([[Aleksey Bragin]]; {{bug|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]]; {{bug|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]])
 
=== GDI ===
 
==== DIBLIB ====
 
* 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]])
 
==== GDI32 ====
 
* 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]])
 
==== NTGDI ====
 
* fix potential NULL access. CID 702353 ([[Jérôme Gardou]])
 
=== USER ===
 
==== NTUSER ====
 
* Fixed crash, . ([[James Tabor]]; {{bug|7226}})
 
* AttachThreadInput is new to ReactOS, it passes the wine tests, help is needed, white papers are welcome. ([[James Tabor]]; {{bug|7226}})
 
* Stop spurious window handle errors. ([[James Tabor]])
 
* Fix empty list error and add a note. ([[James Tabor]])
 
* Fix note. ([[James Tabor]])
 
* Fix note again. ([[James Tabor]])
 
* Fix bug 6751, 7228 and others, Validate link windows, not relink them per say. ([[James Tabor]])
 
* Stop spurious window handle errors. This fixes all of the DeferWinPos handle errors. ([[James Tabor]])
 
* Use window object instead of handle. ([[James Tabor]])
 
* Prevent a crash when Tcb.Win32Thread NULL. ([[James Tabor]])
 
* Stop spurious window handle errors and code fixes. ([[James Tabor]])
 
* Use thread information pointer instead if the message queue. ([[James Tabor]])
 
* Patch based on Daniel Jelinski: search more aggressively for a window under a tooltip and better HTTRANSPARENT handling. When the test patch is applied, ReactOS passes the new tests. ([[James Tabor]])
 
* References: ([[James Tabor]])
 
* http://www.winehq.org/pipermail/wine-patches/2012-July/116429.html ([[James Tabor]])
 
* http://www.winehq.org/pipermail/wine-patches/2012-August/116776.html ([[James Tabor]])
 
* http://www.winehq.org/pipermail/wine-patches/2012-August/116777.html ([[James Tabor]])
 
* http://www.winehq.org/pipermail/wine-devel/2012-August/096681.html ([[James Tabor]])
 
* Fix last Win test_keyboard_input. No Focus use Active! Read MSDN WM_SYSKEYDOWN/UP. ([[James Tabor]])
 
* Fix API SetActiveWindow test, get it back. ([[James Tabor]])
 
* Fix screensave access hangs but it was recoverable and did not crash. The new ATI points seem to kick in so disabling them for now and leaving error prints. , need to separate the message queue. ([[James Tabor]]; {{bug|7225}})
 
* Fix all but one DCE scroll test. ([[James Tabor]])
 
* Old patch at least two year old or more. ([[James Tabor]])
 
* Tested wine win test_scrollwindow, test_scrollvalidate, test_scrolldc, and test_scroll plus ReactOS API tests. Pass all but three region tests in test_scrollvalidate. ([[James Tabor]])
 
* Dedicated to Víctor Martínez Calvo. ([[James Tabor]])
 
==== USER32 ====
 
* 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]]; {{bug|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]]; {{bug|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]]; {{bug|1419}})
 
* Nikolay Sivov : Release uniscribe data on Edit control destruction (valgrind). ([[James Tabor]]; {{bug|1419}})
 
* Sync Port wine. ([[James Tabor]]; {{bug|1419}})
 
* Someone needs to post a wine bug report due to the lack of support for Ctrl+Backspace. Debug fixme was added. . ([[James Tabor]]; {{bug|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. ([[Hermès Bélusca-Maïto]])
 
==== WIN32CSR ====
 
* 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; {{bug|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]])
 
== Uncategorized ==
 
=== ADVAPI ===
 
* Use ULONG_PTR instead of UINT_PTR. (Hermès Bélusca; {{bug|7100}})
 
=== ADVAPI32_LSASRV ===
 
* 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]])
 
=== ADVAPI32_SERVICES ===
 
* Little improvements to advapi32.dll / services.exe. (Hermes Belusca; {{bug|7239}})
 
* This patch fixes various things, from Coverity code defects to conversion warnings :
 
** CID 715948 (logically dead code @ services/rpcserver.c) (Hermès Bélusca-Maïto)
 
** try to fix CID 716332/3 (resource leaks) by rewriting the ScmReadString (Hermès Bélusca-Maïto)
 
** function (@ services/config.c)
 
** zero out the freshly allocated memory (@ services)
 
** try to fix CID 716126/7/8 (untrusted value as argument @advapi32/services/sctrl.c)
 
** Fix also some "size_t to DWORD" warnings on x64 build (@advapi32/services/scm.c). ([[Hermès Bélusca-Maïto]]; {{bug|6606|jira}})
 
=== ASM_AMD64 ===
 
* 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]])
 
=== CMAKE_MSVC ===
 
* Fix a bug in the way we compiled the boot sectors on the x64 build.
 
** Consistently set the mc compiler, like gcc builds.
 
** Use proper variables when referring to the compilers. ([[Hermès Bélusca-Maïto]]; {{bug|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]])
 
=== EXPLORER_NEW ===
 
* Revert r56865, it duplicates same action (expanding the var), spotted by Thomas Faber. ([[Aleksey Bragin]]; {{bug|6053}})
 
* Fix possible buffer overflow: ExpandEnvironmentStrings wants character count size of a buffer, not byte sized. Spotted by Thomas Faber. ([[Aleksey Bragin]]; {{bug|6053}})
 
=== FATX ===
 
* 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]]; {{bug|6610|jira}})
 
* Restore padding that I commented out to find out the size of the boot sector. ([[Timo Kreuzer]])
 
=== FREELDR_CRT ===
 
* 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]])
 
=== FREELDR_SETUPLDR ===
 
* 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]])
 
=== GCC-INTRINSICS ===
 
* Use GCC intrinsics for InterlockedIncrement/Decrement functions ([[Jérôme Gardou]])
 
=== GDI32_WIN32K ===
 
* Rewrite GetCurrentObject and GetObject, fixes a lot of tests ([[Timo Kreuzer]])
 
=== HIVEFILES ===
 
* Add the .NET Install Dir key, which fixes tons of MSI problems where it failed to load/initalize/find assemblies. ([[Alex Ionescu]])
 
=== HIVES_MSI ===
 
* NET needs InstallRoot, not InstallDir. Kills millions of DPRINT1s, thus cleaning up the log. ([[Alex Ionescu]])
 
=== HIVESFT ===
 
* Use right driver version for new mesa driver ([[Jérôme Gardou]])
 
=== HIVESYS ===
 
* 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 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]]; {{bug|6958}})
 
=== HOST-TOOLS_BIN2C ===
 
* 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]];{{bug|6653|jira}})
 
=== INTRIN ===
 
* 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]])
 
=== LICENSE ===
 
* 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]])
 
=== MCOQTZ32 ===
 
* Sync to Wine 1.5.4. ([[Amine Khaldi]])
 
=== MEGAPERF ===
 
* 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]])
 
=== MINGWEX ===
 
* 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]])
 
=== MSI_BOOTDATA ===
 
* Improve and correct registering the CLISDs for MSI (they match Wine and Windows now). This reverts r55052. ([[Amine Khaldi]])
 
=== MSI_FUSION ===
 
* Don't pretend the .net framework is installed until the fusion loading problem is fixed. Fixes {{bug|7031}} and {{bug|7035}}. ([[Sylvain Petreolle]])
 
=== NDK_NTOSKRNK ===
 
* Finally make EPROCESS::Session PVOID, as it's supposed to be ([[Timo Kreuzer]])
 
* add missing Wow64Process member ([[Timo Kreuzer]])
 
=== NDK_RTL ===
 
* Fix RtlGetSetBootStatusData prototype and add the BSD Items that can be set with it. ([[Alex Ionescu]])
 
=== NEWCC ===
 
* 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]])
 
* 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 evict. ([[Art Yerkes]])
 
* Use the same method pagefile.c does to read in a page without mapping it. ([[Art Yerkes]])
 
* 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]])
 
=== NEWINFLIB ===
 
* We don't need to define _CRT_NON_CONFORMING_SWPRINTFS for inflibhost. ([[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]])
 
=== NTDLL_INCLUDE ===
 
* Rename the CSRSRV API Numbers not to conflict with the actual functions. ([[Alex Ionescu]])
 
=== NTDLL_LDR ===
 
* 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]]; {{bug|7289}})
 
=== NTDLL_RTL ===
 
* Implement RtlGet/SetThreadErrorMode. ([[Alex Ionescu]])
 
* Fix RtlIpv4AddressToStringA and RtlIpv4AddressToStringW to work like in Windows (and crash with a NULL buffer). ([[Alex Ionescu]])
 
=== NTOS ===
 
* 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]]; {{bug|7241}})
 
* {{bug|6204|jira}} #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]])
 
=== NTOS_ARM3 ===
 
* 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]]; {{bug|7216}})
 
=== NTOS_MM ===
 
* 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]])
 
=== NTOSKERNEL ===
 
* Refactoring KiSatisfyObjectWait macro to prevent code duplication. ([[Mike Nordell]])
 
* Stop KeRundownThread from bugchecking on at least CTRL_C for console app. ([[Mike Nordell]])
 
=== NTOSKRNL_AMD64 ===
 
* Only initialize the nonpged pool after the pfn database was initialized ([[Timo Kreuzer]])
 
* Fix" IRQL for the initialization of non paged pool ([[Timo Kreuzer]])
 
=== NTOSKRNL_IO ===
 
* Always use interlocked operations on DeviceObject->ReferenceCount ([[Thomas Faber]])
 
=== NTOSKRNL_KE_AMD64 ===
 
* 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]])
 
=== NTOSKRNL_MM ===
 
* 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. Also fix bug {{bug|5857}} (aka mshtml bug). ([[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]])
 
* initialize VmWorkingSet pointer for system process. ([[Jérôme Gardou]])
 
* Should fix random crashes when paging out. ([[Jérôme Gardou]])
 
=== NTOSKRNL_MM_AMD64 ===
 
* 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 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]])
 
=== OLDNAMES ===
 
* Fix compilation with amd64 MSVC ([[Timo Kreuzer]]; {{bug|7030}})
 
=== PSDK_DDK ===
 
* Add intsafe.h and ntintsafe.h ([[Timo Kreuzer]])
 
* Add definitions for BitScanForward64 ([[Timo Kreuzer]])
 
=== PSDK_DDK_XDK ===
 
* Remove duplicated definitions from ntddk.h ([[Timo Kreuzer]])
 
* Fix annotations in ntifs.h, wdm.h, ntgdi.h, winddi.h ([[Timo Kreuzer]])
 
=== PSDK_LSASRV ===
 
* 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]])
 
=== PSDK_NDK ===
 
* 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]])
 
=== PSEH2 ===
 
* 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]])
 
=== PSEH3 ===
 
* Implement PSEH 3.0. Currently disabled by default. Dedicated to Amine Khaldi. ([[Timo Kreuzer]])
 
=== ROSBE ===
 
* Support spaces in the source directory path on Windows. ([[Aleksey Bragin]])
 
=== RTL_AMD64 ===
 
* Fix a bug in DbgBreakPointWithStatus: the int 3 must be after RtlpBreakWithStatusInstruction ([[Timo Kreuzer]])
 
* Fix bugs in RtlInterlockedFlushSList ([[Timo Kreuzer]])
 
=== RTL_HEAP ===
 
* Do not use RtlFillMemory with a 32 bit pattern (CID 13722) ([[Thomas Faber]])
 
* Do not overflow the uncommitted range descriptor segment. Really fixes notepad. ([[Thomas Faber]]; {{bug|6966}})
 
* Free the correct region in failure case ([[Thomas Faber]]; {{bug|6966}})
 
* Some comment fixes ([[Thomas Faber]]; {{bug|6966}})
 
=== RTL_NDK ===
 
* 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_NDK_DDK_XDK ===
 
* RtlDosSearchPath_Ustr returns NTSTATUS, not ULONG ([[Thomas Faber]])
 
* Fix some ULONG vs SIZE_T issues ([[Thomas Faber]])
 
* RtlEqualMemory returns LOGICAL, not ULONG ([[Thomas Faber]])
 
=== RTL_NTDLL_KERNEL32 ===
 
* 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]])
 
=== SAMLIB_SAMSRV ===
 
* 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]])
 
=== SAMLIB_SAMSRV_SYSSETUP ===
 
* 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]])
 
=== SAMSRV_SYSSETUP ===
 
* Use proper access rights in calls to LsaOpenPolicy. ([[Eric Kohl]])
 
=== SDK_UUID ===
 
* Add atliface.idl for the MSVC build. Dedicated to Thomas. ([[Amine Khaldi]])
 
=== SMSS2 ===
 
* 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]])
 
* 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]])
 
* Mark some modules, that are in sync with Wine 1.3.37, as such. ([[Amine Khaldi]])
 
* 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]])
 
* 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]])
 
* 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]])
 
=== SMSS2_SMSS ===
 
* 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]])
 
=== SYSCALLS ===
 
* Remove old unnecessary copy of syscalls.inc ([[Aleksey Bragin]])
 
=== TOOLS_UNICODE ===
 
* Sync to Wine 1.3.37. ([[Amine Khaldi]])
 
=== TRANSLATION ===
 
* 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]])
 
* Dll/cpl UTF-8 conversion (Elton Chung; {{bug|6333}})
 
* 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 S,tefan Fulea (bug no. 6956); ([[Olaf Siejka]])
 
* Turkish translation update by Arda Tanrikulu (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 S,tefan Fulea (bug no. 6878); ([[Olaf Siejka]])
 
* italian translation update by Paolo Devoti (bug no. 6980); ([[Olaf Siejka]])
 
* Turkish translation of dxdiag by Arda Tanrikulu (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 Tanrikulu (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); {{bug|6511|jira}} ([[Olaf Siejka]])
 
* dutch rapps translation update by stijnsanders (stijn at yoy dot be); {{bug|6540|jira}}([[Olaf Siejka]])
 
* Add Chinese translation for time/date control panel applet by yinwh79 at 163.com. {{bug|6702|jira}}. ([[Ziliang Guo]])
 
* Add Turkish translations of sol, spider, magnify, mspaint, write, sndrec32, mplay32 by Erdem Ersoy.
 
* Update Turkish translations of winmine, notepad, wordpad by Erdem Ersoy.
 
=== TXTSETUP ===
 
* Add *PNP0A08 ([[Cameron Gutman]])
 
=== USER32_WSPRINTF ===
 
* Add a missing dependency on psdk, revealed by the previous commit. ([[Amine Khaldi]])
 
=== VBE_NEW ===
 
* Fix two bugs mentioned by Victor on mailing list. Other bugs was already fixed. ([[Rafal Harabien]])
 
=== VBEMP ===
 
* Fix EDID reading using SCI ([[Cameron Gutman]])
 
* Report a single non-PnP monitor if no EDID data could be retrieved ([[Cameron Gutman]])
 
* Promote fatal VESA BIOS errors to Error status ([[Cameron Gutman]])
 
=== WIN23K ===
 
* 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]])
 
=== WIN32CSR_CSRSRV ===
 
* 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]])
 
=== WIN32K ===
 
* 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]])
 
* Cleanup Win32kProcessCallback and Win32kThreadCallback
 
** 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
 
** There is no need to try opening a desktop and windowstation before winlogon initializes
 
** Handle errors properly when we fail to get a default window station and desktop for the new process
 
** 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)
 
** 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)
 
** 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
 
** fix some more tests in user32:winstation ([[Giannis Adamopoulos]])
 
* Update pti->pClientInfo->hKL when pti->KeyboardLayout changes
 
** 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
 
** 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
 
** 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 ([[Rafal Harabien]])
 
* GetFocus returns NULL if calling thread is not a foreground thread ([[Rafal Harabien]])
 
* Fix a potential memory leak. Spotted by Samuel Serapion. ([[Kamil Hornicek]])
 
* Anschluß is no German! 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Remove the unused IntGetFullWindowStationName, IntGetWindowStationObject and IntGetWinStaObj
 
** remove unrelated and unused information from the WINSTATION_OBJECT
 
** null terminate DesktopObject->pDeskInfo->szDesktopName and WindowStationObject->Name
 
** null terminate the buffer when NtUserGetObjectInformation is called with UOI_NAME parameter
 
** should fix a random failure in user32:desktop tests
 
** 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]])
 
* 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]])
 
* 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. ([[Rafal Harabien]])
 
* 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]])
 
* 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]])
 
* 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 right-to-left support the new EngBitBlt code ([[Timo Kreuzer]])
 
* Fix clipping in IntEngBitBlt by bailing out when the target rect got empty ([[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]])
 
* 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
 
** Should fix failed assertion when closing google earth.
 
** 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.
 
** Added a global pointer to be used in a later commit.
 
** Warning: this does not fix bug {{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]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Use user mode mem for bitmaps larger than 4K to save pool memory. ([[Timo Kreuzer]])
 
* 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]])
 
* 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]])
 
* 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]])
 
* Only set the surface's bitmap bits when iType == STYPE_BITMAP. ([[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]])
 
* 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]])
 
* Someone passes iUsage == 2, so don't assert in that case, but ignore it as long as it's not supported. ([[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]]; {{bug|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]])
 
* Alloca to use GDIOBJ_vReferenceObjectByPointer with exclusively locked objects ([[Timo Kreuzer]])
 
* Make sure the global mono palette actually has 2 entries ([[Timo Kreuzer]])
 
* Implement GreGetSetColorTable, replacing IntSetDIBColorTable / IntGetDIBColorTable ([[Timo Kreuzer]])
 
* Mark dc brushes in GreGetSetColorTable as dirty ([[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, http://www.winehq.org/pipermail/wine-cvs/2012-April/086267.html (Dmitry Timoshkov : SetParent() should use ShowWindow() to make a reparented window visible and move a window to new position)
 
* Fix bug {{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
 
** properly translate the color back to RGB in NtGdiSetPixel 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_NCRedraw test. Broken since r6737. ([[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 {{bug|6759}}. ([[James Tabor]])
 
* 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]]; {{bug|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]]; {{bug|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]])
 
* Add keyboard cue and combo list box signing. ([[James Tabor]])
 
* When cleaning DC, also "clean" the associated brushes ([[Jérôme Gardou]])
 
* Take translation into account when inverting an XFORMOBJ
 
** Always use the matrices from the DCATTR instead of DCLEVEL
 
** Mark Device-to-World translation as invalid when the Window Origin is modified ([[Timo Kreuzer]]; {{bug|7088}})
 
* Check for NULL dc surface before dereferencing it in IntGdiRealizePalette. ([[Timo Kreuzer]])
 
* freeldr: seek to correct sector number, even after ~4GB. ([[Hervé Poussineau]]; {{bug|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]])
 
* 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]])
 
* 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]])
 
* Implement CaptureUnicodeStringOrAtom, which handles user mode class names or atoms, and use it in some places. ([[Timo Kreuzer]])
 
* 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. Now if I press win+R only the Run window opens ([[Giannis Adamopoulos]])
 
* AttachThreadInput, this should fix the crash. Original crash (Giannis Adamopoulos; {{bug|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]])
 
* 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]]; {{bug|6335|jira}})
 
* 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]]; {{bug|5431|jira}})
 
* 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]]); {{bug|6688|jira}})
 
* 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]]); {{bug|6674|jira}} {{bug|6093|jira}})
 
* 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]]; {{bug|6650|jira}}
 
* Improve error-displaying function and add another one (to be used later on). ([[Hermès Bélusca-Maïto]])
 
* Move gdi kdbg extension into a separate file, prefix names with ! to match WinDbg extensions more closely (e.g. "!gdi.help"), imlement help, dumpht, handle, entry and eventlist commands. ([[Timo Kreuzer]])
 
* Reduce size of desktop heap from 4MB to 400KB (Windows uses 200KB) ([[Timo Kreuzer]])
 
* Keep an additional reference while processing the message list of a message queue ([[Timo Kreuzer]])
 
* Use ExFreePoolWithTag instead of ExFreePool in SpiNotifyNCMetricsChanged. ([[Timo Kreuzer]])
 
* Use ExAllocatePoolWithTag instead of ExAllocatePool ([[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]])
 
* 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]])
 
* Use GdiBlt channel for relevant functions ([[Jérôme Gardou]])
 
=== WIN32SS_NTGDI ===
 
* Don't assume DC surface in non NULL in NtGdiSetDIBitsToDeviceInternal ([[Jérôme Gardou]])
 
* Initialize all DC brushes with 1x1 monochrome bitmap at DC creation ([[Jérôme Gardou]])
 
* return default bitmap if no surface is attached to the DC ([[Jérôme Gardou]])
 
* Do not assume that DC has a valid surface attached in GreExtTextOutW ([[Jérôme Gardou]])
 
=== WIN32SS_USER ===
 
* 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]])
 
=== WINETESTS ===
 
* Make function-style macros in test.h actually behave function-like (aka fix build) ([[Thomas Faber]])
 
* Use the correct pool tags for allocations in SepCaptureAcl/SepCaptureSid ([[Thomas Faber]]; {{bug|7138}})
 
* Do not dereference pointer before checking against NULL in SeSetSecurityDescriptorInfo ([[Thomas Faber]])
 
=== XDK_DDK ===
 
* Slightly reorganize architecture dependent headers, so that ASSERT can be used ([[Timo Kreuzer]])
 

Latest revision as of 08:31, 8 May 2014

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.

General

Contributors

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
  • Vincenzo Cotugno
  • Elton Chung
  • Peter Hater
  • Alex Henrie
  • Katayama Hirofumi
  • Edijs Kolesnikovics
  • Marcel Leyendeckers
  • numitus (domovoi94 at gmail dot com) r57058
  • Victor Martinez
  • Guido Pola
  • Ben Pye
  • Rodion overclocker@list.ru r56097
  • Lee Schroeder
  • Samuel Serapion
  • vort r58083
  • Alexander Yastrebov
  • Erdem Ersoy (eersoy93) (erdemersoy@live.com) (for some Turkish translations)
  • Arda Tanrıkulu (ardatan) (ardatanrikulu@gmail.com) (for some Turkish translations)

Support Staff

  • Colin Finck
  • Ziliang Guo
  • Olaf Siejka

Generic 0.3.15 Changes

  • Headers have been cleaned up to reduce the number of dependencies dragged in by code.
  • Annotations for use with Visual Studio's static analyzer have been added to many modules.
  • Improvements to the various SDKs to increase compatibility and add new new data structures and interfaces for developing drivers, applications, and native applications.
  • A variety of bugs found by Visual Studio 2012's static code analyzer was fixed.
  • The project has switched over entirely to using CMake and rbuild support has been dropped. Continued work has been done to improve the build process.
  • The debug screen color has been changed to black for easier readability.
  • It is now possible to choose only one language instead of all language resources in a build.

Installer

  • Removable media is now selectable as an installation target.
  • Unpartitioned space calculation now works if the first partition starts below the disk's track size.
  • ATL is now registered before anything else.

CABMAN

  • The reading buffer is now dynamically sized to ensure it can hold a complete path instead of using MAX_PATH-like magic numbers.

Wine Syncs

  • ADVPACK (1.5.19)
  • AMSTREAM (1.3.37)
  • ATL (1.5.19)
  • ATL100 (1.5.19)
  • AVIFIL32 (1.3.37)
  • BCRYPT (1.3.37)
  • CABINET (1.5.19)
  • COMCTL32 (1.5.26)
  • CREDUI (1.3.37)
  • CRYPT32 (1.3.37)
  • CRYPTDLG (1.3.37)
  • CRYPTNET (1.3.37)
  • CRYPTUI (1.3.37)
  • DBGHELP (1.3.37)
  • DWMAPI (1.3.37)
  • FUSION (1.5.4)
  • GDIPLUS (1.5.4)
  • HLINK (1.5.4)
  • HNETCFG (1.3.37)
  • HTTPAPI (1.3.37)
  • IMAADP32.ACM (1.3.37)
  • IMAGEHLP (1.3.37)
  • IMM32 (1.5.19)
  • INETCOMM (1.3.37)
  • INETMIB1 (1.3.37)
  • INSENG (1.3.37)
  • ITSS (1.5.4)
  • KERNEL32: FormatMessage() (1.5.4)
  • MCIAVI32 (1.3.37)
  • MCICDA (1.3.37)
  • MCISEQ (1.3.37)
  • MCIWAVE (1.5.4)
  • MCOQTZ32 (1.5.4)
  • MLANG (1.3.37)
  • MSADP32.ACM (1.3.37)
  • MSCMS (1.5.4)
  • MSCOREE (1.5.4)
  • MSCTF (1.3.37)
  • MSFTEDIT (1.3.37)
  • MSG711.ACM (1.3.37)
  • MSI (1.5.19)
  • MSIMTF (1.3.37)
  • MSISIP (1.3.37)
  • MSSIGN32 (1.5.4)
  • MSTASK (1.3.37)
  • MSXML (1.5.12)
  • MSXML2 (1.5.12)
  • MSXML3 (1.5.12)
  • MSXML4 (1.5.12)
  • MSXML6 (1.5.12)
  • NDDEAPI (1.3.37)
  • NTPRINT (1.3.37)
  • OBJSEL (1.3.37)
  • ODBCCP32 (1.3.37)
  • OLE32 (1.5.19)
  • OLEAUT32 (1.5.19)
  • PRINTUI (1.3.37)
  • PSTOREC (1.5.4)
  • QUERY (1.3.37)
  • RASAPI32 (1.3.37)
  • RICHED20 (1.5.19)
  • RSAENH (1.5.4)
  • SHLWAPI (1.5.13)
  • SPOOLSS (1.5.4)
  • STDOLE2.TLB (1.3.37)
  • STDOLE32.TLB (1.3.37)
  • STI (1.5.4)
  • SXS (1.5.4)
  • TOOLS/UNICODE (1.3.37)
  • TRAFFIC (1.5.4)
  • URL (1.5.4)
  • USER32 (1.5.10)
  • USP10 (1.5.24)
  • WIDL (1.5.11)
  • WINDOWSCODECS (1.5.19)
  • WINEMP3.ACM (1.3.37)
  • WINHTTP (1.5.4)
  • WININET (1.5.4)
  • WINTRUST (1.5.4)
  • WS2_32: async.c (1.5.4)
  • WTSAPI32 (1.3.37)
  • WUAPI (1.5.4)
  • XCOPY (1.3.37)
  • XMLLITE (1.5.19)

Known Issues

  • External USB hub support is currently disabled.

Core Functionality

Audio/Video Stack

VIDEOPRT

  • The DEVICEMAP\VIDEO key is now created with a proper length by taking into account the NULL terminator, an issue originally exposed in ARWINSS.

Client/Server Runtime

CSRSS

CSRSS is undergoing a rewrite to take advantage of the new SMSS.

  • CSRSRV no longer starts win32k.sys, deferring that responsibility to SMSS.
  • CsrSrvCreateSharedSection is now called correctly based on registry/command line settings.
  • Some initialization functions have been merged together.
  • The separate heaps in CSRSRV have been merged together. When the single DLL is broken up into separate DLLs, each DLL will have its own heap.
  • A new list has been created for console processes.
  • Process management functions now use a linked list like in Windows instead of a hash table.
  • CSRSRV now loads its own DLL, allowing it to support native functions from NTDLL.
  • Code attempting to set new data/total length values in the LPC header has been purged, potentially fixing an issue where changing the structure of CSRSS messages resulted in bizarre failures.
  • CSRSRV no longer accepts connections from unknown processes.
  • CSRSRV no longer spawns a new thread for each client, instead creating them based on whether existing ones are deadlocked.
  • CTRL-C and X button regressions due to new server to server communication implementation have been fixed.
  • Hacks in CsrSrvCreateThread have been removed now that worker threads are properly registered in CSRSS.
  • The API loop has been rewritten to properly deal with messages and correctly manage processes, eliminating a major resource leak in the process.

Functions Implemented

  • CsrDestroyProcess
  • CsrDestroyThread

Kernel-mode subsystem server (WIN32K)

  • Rewrite CreateDesktop, OpenInputDesktop, SetThreadDesktop, AttachThreadInput, thread info creation
  • Properly initlilize ExDesktopObjectType and ExWindowStationObjectType
  • Implement LockWorkStation
  • Fix SwitchDesktop to actually show the new desktop
  • Fix GetObjectInformation that always failed
  • Move desktop window proc and message window proc in win32k
  • Fix some user object leaks
  • Allow the user handle table to grow in order to handle cases when we run out of handles
  • Correctly handle cases that the thread info or the process info failed to initialize
  • The WindowStations directory is now properly created for instances other than session 0.
  • GetFocus now correctly returns NULL when a thread is not in the foreground.
  • NtGdiSelectBitmap now correctly handles the situation where a device context's surface pointer is NULL.
  • Selecting the same bitmap in NtGdiSelectBitmap will no longer cause the bitmap to be released.
  • 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

SMSS

A new session manager subsystem has been implemented that will be used in conjunction with an upcoming rewrite of the Console/Server Runtime Subsystem. It has completely supplanted the old SMSS though still works in conjunction with an older CSRSS.

  • A new header that precisely documents the packet structure and protocols used for communication between SMSS and CSRSS has been added. The definitions match NT5.2.
  • All required registry configuration parsing functions have been implemented in the new SMSS.
  • Initialization of many internal data structures have been implemented for the new SMSS, ensuring it will present a properly configured and set up system when it takes over from the old SMSS.
  • The new SMSS is now responsible for the initial system configuration, including setting up the environment, pagefile, and registry.
  • The new SMSS is able to detect clean versus unclean boot/shutdown.
  • The new SMSS can now launch 'native' applications.
  • SmpSaveRegistryValue now properly deals with empty lists and correctly compares strings for equality.
  • The new SMSS is now responsible for launching winlogon.
  • When creating the page file, at least 64 MB of space will be left free on small drives to allow 2nd stage to complete.

Functions Implemented

  • SmpProcessFileRenames
  • SmpTranslateSystemPartitionInformation
  • SmpLoadSubsystemsForMuSession
  • SmpExecPgm
  • SmpSbCreateSession
  • SmpCallCsrCreateProcess
  • SmpLoadSubsystem

Filesystems

FASTFAT

  • An error in VfatCreateFile that caused access denied to always be returned when opening a volume has been fixed.

FSRTL

  • MCB and Large MCB support has been integrated.
  • File locking support has been added.

Functions Implemented

  • FsRtlCheckNotifyForDelete
  • FsRtlNotifyCompleteIrp
  • FsRtlNotifyCompleteIrpList
  • FsRtlNotifySetCancelRoutine
  • FsRtlNotifyFilterChangeDirectory

HAL

  • PCI device names are no longer truncated in debug output.
  • IrqlToSoftVector() is now implemented and used in HalRequestSoftwareInterrupt, ensuring the correct interrupt is triggered on AMD64.
  • The IRQL in HalpAllocateSystemInterrupt is now correctly set to the lowest vector.
  • HAL no longer sends bogus bus numbers to the PCI driver.
  • Legacy HAL can now enumerate boot critical PCI devices and build the device stack for USB.

Hardware Management

MOUNTMGR

  • Portable KeXxxSpinLock are now used.

USB

Work from the USB bringup branch has been merged in, allowing for basic functionality of many USB devices. Developers from the Haiku project also helped with understanding the USB specification. The old NT4 USB driver/stack has been removed. The following are parts of the USB stack that have been merged in.

  • Human Interface Device (HID) stack
  • Composite driver
  • Generic hub driver
  • Open Host Controller Interface driver
  • Enhanced Host Controller Interface driver

Additional development summary follows.

  • Installation via USB CD-ROM now starts.

USBEHCI

  • Parsing of configuration descriptors has been cleaned up and simplified.
  • Resetting of devices has been cleaned up, eliminating a delay while properly waiting for a device to actually report it has been reset.
  • Detection of new devices after companion controller handoff has been fixed.

USBHUB

  • Reset event handling for cases where a reset does not cause a new device to be created.

USBOHCI

  • OHCI driver now correctly performs control transfers, allowing HID devices to finish initialization.
  • Resets now function correctly with OHCI devices.
  • Mass storage devices using OHCI now work.
  • Power switching configuration is set to a known state when initializing a controller.

USBSTOR

  • Error handling has been rewritten, fixing a hang when mass storage devices receive the read capacity request.
  • Timer functions have been implemented.
  • Support for USB floppy drives has been implemented.

USBUHCI

  • An initial implementation of a driver for the Universal Host Controller Interface was added after the USB bringup work was merged back into trunk. Some parts are synced with the OHCI driver.

Kernel

  • Interlocked operations are now used for reference counting device objects.
  • KeUpdateSystemTime has been refactored, making it 64bit portable and resolving potential concurrency issues.
  • The kernel no longer returns kernel handles to user mode code, which user mode code would be unable to use anyway, fixing usage of RtlQueryRegistryValues from user mode when the SUBKEY or TOPKEY flags are used.
  • Stack alignment has been fixed in KiSwitchToBootStack for 64bit mode.
  • KeContextToTrapFrame and KeTrapFrameToContext now correctly handle ExceptionFrame being NULL.
  • User mode exception dispatching has been implemented for 64bit mode.
  • CmpSetSystemValues will no longer attempt to close an uninitialized handle in its failure handling.
  • SeCaptureSecurityDescriptor has been written to be cleaner and 64bit ready.
  • A variety of security descriptor related code has been fixed to stop making wrong assumptions about SECURITY_DESCRIPTOR structures.
  • PeFmtCreateSection no longer uses the ImageBase member of ImageOptionalHeader directly, instead going through ImageSectionObject->ImageBase.
  • Incrementing of the PFN lock has been moved into the region where it is actually used to avoid race conditions and simplify locking operations.
  • The kernel can now determine where it is booting from and where it is during remote boots, allowing it to progress slightly further during a PXE boot.
  • The kernel no longer needs to enumerate the root bus via the firmware mapper as the HAL now performs this function.
  • KdInitSystem no longer suffers from a double crash due to INIT cleanup now happening.
  • Changing of process priorities actually perform privilege checks instead of spamming the debug log about the lack of the check.
  • The raw value of a thread's exit time is no longer used when the thread is still alive, fixing an issue where code thought all threads were dead.
  • A crash in KiSystemCall when WIN32K failed after switching to a larger kernel stack size has been fixed.
  • The correct minimum size is now sent back in response to filename queries where the initial buffer was too small to save the result.
  • NtQuerySystemInformation now correctly skips zombie processes and uses the KTHREAD ThreadListEntry, which includes the idle process.
  • Privileged instructions are now properly detected in the general protection fault handler.
  • The correct bit in the error code is now checked when checking for whether a read or write caused an exception.
  • SYSTEM_PROCESS_INFORMATION and SYSTEM_THREAD_INFORMATION structures have been rewritten to be correct.
  • The DeviceClasses key is now created to allow for successful registration of device interfaces in 1st stage boot.
  • A hack intended to allow the PCI driver to load has been removed.
  • Generic DPC functionality, a forced synchronization all-CPU DPC callback mechanism, has been implemented. As ReactOS only supports running on a single processor, this implementation only works on a single processor.
  • Child devices are now linked in enumeration order, allowing PCI cards to enumerate in the correct order.
  • Properly handle the case when conversion to gui thread fails

Functions Implemented

  • KiSwapContextInternal (x64)
  • KeInitializeInterrupt (x64)
  • KeConnectInterrupt (x64)
  • KeSynchronizeExecution (x64)
  • KiDpcInterruptHandler (x64)
  • KiIdleLoop (x64)
  • KiInitializeUserApc (x64)
  • KiSwapProcess (x64)
  • KiSystemCallHandler (x64)
  • KiInitializeContextThread (x64)
  • KiSwapContextResume (x64)
  • KiRetireDpcList (x64)
  • KiInterruptDispatch (x64)
  • KiSystemCallEntry64 (x64)
  • KiZwSystemService (x64)
  • NtAreMappedFilesTheSame
  • NtSetInformationObject
  • NtQueryInformationProcess
  • SeCheckPrivilegedObject
  • ProcessUserModeIOPL
  • Ke386SetIopl
  • ProcessExecuteOptions
  • ThreadBreakOnTermination
  • ProcessDebugObjectHandle

KDBG

  • Debugging to screen for 1st stage boot is now supported.

Libraries

ADVAPI32

  • Unused, unimplemented, and Vista+ functions are no longer exported.
  • A buffer overflow in LookupAccountSidA has been fixed.

CRT

  • Multiple free issue fixed, resolving VLC crash on exit.

COMCTL32

  • Support has been added for the LVS_EX_TRANSPARENTSHADOWTEXT style.

Functions implemented.

  • DrawShadowText

IPHLPAPI

  • ICMP functions are now correctly forwarded to icmp.dll.

KERNEL32

  • IntReadConsoleOutputCharacter has been fixed to copy the correct number of characters.
  • ReadProcessMemory/WriteProcessMemory no longer attempt to write to an argument that could potentially be a NULL pointer.
  • WriteProcessMemory now returns STATUS_ACCESS_VIOLATION instead of just BOOL due to third party code relying on this behavior.
  • InitCommandLines has been rewritten.
  • GetProcessAffinityMask now uses BaseStaticServerData from CSRSS instead of querying for system information each time.
  • GetProcessShutdownParameters/SetProcessShutdownParameters now correctly use the LPC status code from CSRSS instead of the LPC API status code.
  • GetProcessWorkingSetSizeEx/SetProcessWorkingSetSizeEx has been implemented and is now used by GetProcessWorkingSetSize/SetProcessWorkingSetSize.
  • GetExitCodeProcess now checks for VDM processes to get the appropriate exit code.
  • GetStartupInfoA is now thread safe and no longer assumes all ANSI to Unicode conversions will succeed.
  • GetStartupInfoW now correctly supplies ShellInfo data and crashes if given a NULL input.
  • ExitProcess now uses SEH and the PEB lock.
  • TerminateProcess now correctly sets the ERROR_INVALID_HANDLE error code.
  • FatalAppExitA no longer always assumes success.
  • FatalAppExitW now raises a hard error.
  • FatalExit now displays a debugger input interface on checked build just like Windows.
  • SetPriorityClass now tries to acquire the real time privilege as needed and handles failures to do so.
  • GetProcessVersion has been rewritten.
  • lpfnGlobalRegisterWaitForInputIdle has been renamed to UserWaitForInputIdleRoutine.
  • GetQueuedCompletionStatus error status has been fixed to be WAIT_TIMEOUT.
  • When initializing console support, this DLL now attempts to connect to the console server.
  • KERNEL32 now correctly overrides the thread starting function the RTL exports so that CreateRemoteThread is ultimately called, fixing registration of worker threads with CSRSS.
  • A unified LPC message including thread information is now sent instead of two separate messages when a new process is created, increasing performance.
  • CreateHardLinkA/W have been cleaned up and now correctly set an error on failure.
  • I/O completion functions have been cleaned up and annotated.
  • Lock/UnlockFile functions no longer accept console handles and now correctly handle STATUS_PENDING/ERROR_IO_PENDING situations.
  • The file change notification functions have been rewritten.
  • Support for asynchronous I/O callbacks has been implemented.

NETSHELL

NETSHELL has been converted into C++ to improve readability.

NTDLL

  • LdrpCheckForLoadedDll has been fixed to try and resolve KVM/QEMU crashes.
  • An uninitialized variable usage was causing a first chance exception with the new SMSS when booting a livecd.
  • Server to server calls are now supported.

Functions Implemented

  • LdrInitializeThunk (x64)
  • KiUserApcDispatcher (x64)

RTL

  • Reference counting in RtlpDosPathNameToRelativeNtPathName_Ustr has been fixed.
  • Some misuse of critical section debug flags in WINE code has been worked around.
  • 64bit version of HEAP_COMMON_ENTRY has been fixed so that each used field is at its correct position.
  • It is now possible for the thread starting function to be correctly overridden.
  • RtlIpv4AddressToStringA and RtlIpv4AddressToStringW now crash on a NULL buffer to match behavior on Windows.
  • RtlIpToString functions now return -1 instead of crashing when given a NULL buffer to match behavior on Windows.

Functions Implemented

  • RtlSetCurrentDirectory_U
  • RtlSetThreadIsCritical
  • RtlInitializeContext (x64)
  • RtlSetThreadPoolStartFunc
  • RtlSetThreadErrorMode
  • RtlGetThreadErrorMode

SHELL32

  • A combination of improvements to color and style for the desktop has been implemented, including drop shadows.

SMLIB

Functions Implemented

  • SmConnectToSm
  • SmExecPgm
  • SmSessionComplete

USER32

  • A resource leak involving fonts when switching between applications has been dealt with.
  • RealChildWindowFromPoint now skips invisible windows.

UXTHEME

UXTHEME has now been forked from Wine and is solely maintained by this project.

  • Loading of MENUEX resources has been fixed.

Memory Management

  • The memory manager allocates a full 64 KB memory block and returns it to the requesting code instead of merely aligning it to a 64 KB boundary and returning a block of memory sized to the original request. A hack has been added so that even though the full 64 KB allocation still occurs, the allocating code is only informed about the block of memory that matches its requested size.
  • The memory manager now correctly deals with file access rights when mapping sections.
  • MmFindGapBottomUp and MmFindGapTopDown have been reimplemented to properly create memory areas in the right places.
  • MI_REAL_SYSTEM_RANGE_START has been defined to be the canonical system space base address and MmSystemRangeStart switched to a broken value to match behavior on Windows for 32bit mode. MmSystemRangeStart has the correct value for 64bit mode.
  • A variety of page table initialization functions have been improved.
  • MiRosTakeOverPebTebRanges has been renamed to MiRosTakeOverSharedUserPage and changed to only take over shared memory. Previous implementation did not even take over PEB/TEB memory correctly.
  • MiResolveDemandZeroFault is now used directly instead of creating a demand zero PDE and calling MiDispatchFault.
  • MmArmAccessFault has been simplified in cases where page faults from user and kernel mode result in the same codepath. MmArmAccessFault also now supports 3/4 level page tables.
  • The memory manager can now distinguish between kernel and user mode pages when using 3/4 level page tables.
  • MiNonPagedSystemSize is now used when creating the system NP memory area instead of making assumptions about the memory layout.
  • Allocation for PDE pages now goes through ARM3, which resolves an issue where the old memory manager leaked them. This partially fixes the highly problematic 'mshtml' bug that testers encountered in 0.3.14.
  • MiFindEmptyAddressRangeDownTree now returns the right value in error cases.
  • Leaks of page table entries from deleted TEBs and VA mappings have been squashed.
  • Unnecessary boot registry, NLS, and heap data are now being properly cleaned up, reducing memory usage after 3rd stage boot.
  • INIT and SCN_MEM_DISCARDABLE sections from all drivers and the kernel are now properly freed, reducing memory usage.
  • User shared data is now correctly released at process cleanup, eliminating the last major leak that was part of the 'mshtml' issue.
  • Pool tag tracking has been implemented for both small and big allocations. Expansion is not yet supported.
  • Memory allocation failures are now handled more correctly, with support for various debug and caller flags instead of simply returning NULL.
  • Counters for paged and nonpaged pool have been implemented.
  • The memory system is now VAD-based instead of using memory areas.
  • Page fault handling has been considerably improved to handle a variety of situations and conditions.

Implemented Functions

  • MiBuildPfnDatabase (x64)
  • MiAddDescriptorToDatabase (x64)
  • MiBuildPfnDatabaseFromPageTables (x64)
  • MiSetupPfnForPageTable (x64)
  • MmCreateProcessAddressSpace (x64)
  • MmGetPageTableForProcess (x64)
  • MmUnmapPageTable (x64)
  • MmGetPageFileMapping (x64)
  • MmDeleteProcessPageDirectory (x64)
  • MiSynchronizeSystemPde
  • MmFreeLoaderBlock
  • MmSetExecuteOptions

Common Cache

A reintegration checkpoint from the NewCC branch occurred. This checkpoint brings with it a variety of improvements including clearer delineation of ownership over memory objects, lockfree blocking operations, and overall cleaner and simpler code. NewCC is not enabled by default and has a separate mode for its usage. When NEWCC mode is turned on, third party filesystem drivers are actually able to function.

Network Stack

WINSOCK32

  • Invalid AQ_WIN16 comparisons fix was imported from Wine.

Services

  • Log files opened via the event log service are should only be closed when its owning service has stopped.
  • Attempting to open a non-existent backup log file now fails while attempting to open an existing backup log file will only allow for reads.
  • LogfInitializeNew and LogfInitializeExisting now return NTSTATUS instead of BOOL.

Shell

EXPLORER

  • The shell now receives a WM_SETTINGCHANGE message when styles are changed.

Startup/Shutdown

  • Filesystem drivers are now loaded on demand instead of at boot.

FreeLoader

  • A wrong buffer size calculation that could cause memory corruption was fixed.
  • The low 1 MB of memory is no longer mapped into kernel space.
  • A new heap implementation has been created, optimizing and reducing memory usage by about 4 MB.
Versions / Official Changelogs / Community Changelogs
0.0.x Series 0.0.8 | 0.0.9 | 0.0.10 | 0.0.11 | 0.0.12 | 0.0.13 | 0.0.14 | 0.0.15 | 0.0.16 | 0.0.17 | 0.0.18 | 0.0.19 | 0.0.20 | 0.0.21
0.1.x Series 0.1.0 | 0.1.1 | 0.1.2 | 0.1.3 | 0.1.4 | 0.1.5
0.2.x Series 0.2.0 | 0.2.1 | 0.2.2 | 0.2.3 | 0.2.4 | 0.2.5 | 0.2.6 | 0.2.7 | 0.2.8 | 0.2.9
0.3.x Series 0.3.0 | 0.3.1 | 0.3.2 | 0.3.3 | 0.3.4 | 0.3.5 | 0.3.6 | 0.3.7 | 0.3.8 | 0.3.9 | 0.3.10 | 0.3.11 | 0.3.12 | 0.3.13 | 0.3.14 | 0.3.15 | 0.3.16 | 0.3.17
0.4.x Series 0.4.0 | 0.4.1 | 0.4.2 | 0.4.3 | 0.4.4 | 0.4.5 | 0.4.6 | 0.4.7 | 0.4.8 | 0.4.9 | 0.4.10 | 0.4.11 | 0.4.12 | 0.4.13 | 0.4.14