From ReactOS Wiki
Jump to: navigation, search

This is the changelog for ReactOS™ version 0.2.9 (released 23 December, 2005), 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.2.8 (released 29 October, 2005).


Generic 0.2.9 Changes

  • New icons from our UI:mf
  • Add option to not install bootloader for Bug 961: suggest to make it easy for other people that do not want install freeldr. (Magnus Olsen)
  • Survey of all references to Windows and replace with ReactOS in user visable text where appropriate. Bug #910 (Magnus Olsen)
  • Too many MSVC compile fixes to list them all (Steven Edwards, Ged Murphy, Royce Mitchell, Brandon Turner, Christoph von Wittich, Brezenbak, others)
  • Sync up sprintf.c with swprintf.c. They both do the same except one is the wchar-version, so they shouldn't differ in other parts." by Elrond <elrond(at)samba(dash)tng(dot)org>
  • VBE.sys TotalMemory is in number of 64K block not 16K block see VBE 2.0 or 3.0 specification (Magnus Olsen)
  • factor out .inf file handling code and put it in a separate library (Gé van Geldorp)
  • Improve Freeloader compilation speed and remove lots of code duplication.
  • Update NDK to 1.0 and fix all required FIXMEs for release.
  • Write .inf files for ReactOS drivers. (Hervé Poussineau)
  • Install automatically drivers for detected devices. (Hervé Poussineau)
  • Add a network class installer (netcfgx.dll, used when installing network cards). (Hervé Poussineau)
  • Add a display class installer. (Hervé Poussineau)
  • Add Tonga timezone (GMT+13:00). (Eric Kohl)


  • build system now automatically detects msys instead of requiring user to set env variable. (Royce Mitchell)
  • build system does version check of Make up front - gives clear error message if running incompatible version of Make (Royce Mitchell)
  • build system now allows parallel builds (different and different config.xml) (Art Yerkes)
  • build system now allows conditional modules (Art Yerkes)
  • Implement linkerscript element and <autoregister> element. (Casper Hornstrup)
  • The separator (slash or back slash), exepostfix and exeprefix are initialized from environment variables. The separators in the path for the system command are always converted for the host system. Our own build utilities must convert paths itself (bin2res). (Hartmut Birr)


  • Full Hungarian translation and initial keyboard layout added
  • Full Japanese translation by tsk email
  • Added Polish translation of explorer by Kokodin
  • Greek translation by Apal (Apostolos Alexiadis Bug 967
  • French translation by bulio
  • Greek Translation by Apal see bug 994
  • Many Spanish Translations by samchaly_at_hotmail_dot_com

ReactOS Core

Kernel and Executive (NTOSKRNL)

  • Fix bugcheck during shutdown (Gé van Geldorp)
  • Add user-contributed shutdown messages (Gé van Geldorp)
  • Add hardware breakpoints and watchpoints to GDB stub (Gé van Geldorp)
  • Update some system structures to Windows 2003 so that NT 5.2 drivers can now load and be tested. (Alex Ionescu)
  • Send a hacked access state to FS Drivers, they can depend on one. For now use one with full FILE_ALL_ACCESS privileges. (Alex Ionescu)
  • Hackplement ObLogSecurityDescriptor for W2K3 drivers to be happy. (Alex Ionescu)
  • Remove unimplemented macro in SeOpenObjectAuditAlarm and replace it with a DPRINT1; that way callers won't freeze while calling it. (Alex Ionescu)
  • Fixed two really nasty bugs in I/O completion: (Alex Ionescu)
    • The user buffer wasn't written for incomplete I/O (warning levels) for METHOD_BUFFERED
    • Incomplete I/Os (warning levels) took a completely wrong path for completion.
  • Reimplement Fast Mutex implementation in HAL/NT to be compatible with the real implementation. (Fast Mutex needs to raise IRQL). (Alex Ionescu)
  • Implement ExEnterCriticalRegionAndAcquireFastMutexUnsafe and ExReleaseFastMutexUnsafeAndLeaveCriticalRegion. (Alex Ionescu)
  • Implement and export ntoskrnl version of Fast Mutex (Alex Ionescu)
  • Fix a typo causing a potentially fatal bug in user-mode exceptions. (Alex Ionescu)
  • Correctly zero out esi during new thread context switch. Thanks to Patrick Baggett. (Alex Ionescu)
  • Fix KeAttackProcess, KeStackAttachProcess, KeUnstackDetachProcess and KeDetachProcess. (Alex Ionescu)
  • Allocate bus number resources in IopAssignDeviceResources. (Hervé Poussineau)
  • When a driver is a legacy driver, call its AddDevice function with a NULL Pdo (Hervé Poussineau)
  • Fixed the mapping for low alignment images (Hartmut Birr).
  • Set the correct type and state in MiQueryVirtualMemory. Return an error in MiProtectVirtualMemory if we trying to access a region other than a section view or virtual memory. Don't allow to read or write kernel memory in NtRead/WriteVirtualMemory. Don't unprotect the memory in NtWriteVirtualMemory. Don't allow to change the memory protection of kernel address space. If it is possible, access the memory aligned by pages (in ProbeForWrite). Change the protection in WriteProcessMemory if it is necessary. (Hartmut Birr)
  • Removed the initialisation of the kernel map area. Allocate the region for the paged and non paged pool at a 4MB boundary. Protect the local and i/o apic by a memory area. (Hartmut Birr)
  • Lock always the address space if we changing the virtual mapping. This is necessary because we can create or remove a page table. If we unmap a section, we have to wait for all pending pageops for the section within the current process. We do this by waiting for all pageops for the section. Merged MmReleaseMemoryArea into MmReleaseMmInfo. We can only release the address space look if we are calling MmUnmapViewOfSection.(Hartmut Birr)
  • Map the NLS tables after creating the PEB. The top-down mapping of the NLS tables may occupied the region for the PEB. Fixed the check for the MEM_TOP_DOWN flag in MmMapViewOfSection. (Hartmut Birr)
  • Do always dereference the section object if it was created (in PspCreateProcess). (Hartmut Birr)
  • Fixed the growing of the dirty bitmap. This will fix the registry update bugs, if the binary hive is larger than 128kB. (Hartmut Birr)
  • Removed the process from the parameter list of MmCreateMemoryArea. Changed the 9th parameter of MmCreateMemoryArea to allocation flags. Implemented SEC_NO_CHANGE. (Hartmut Birr)
  • Fixed a few length calculation in NtEnumerateValueKey, which has resulted in a overflow, if the given buffer was too small. Fixed the test for the dirty bitmap size. Fixed the length to copy the old dirty bitmap. Set the value/data cell to dirty, if an existing value is overwritten. Used the size of the data cell instead of the previous data length to check if enough space is available (in NtSetValueKey). (Hartmut Birr)
  • Waiting for a fast mutex should be done in kernel mode. (Hartmut Birr)
  • Lock the MainResource from fcb, if we are trying to write back a modified cache segment. Usually we have to call the callback function from FSD. (Hartmut Birr)
  • Allocate the memory for the search pattern in kernel space if it is necessary (in NtQueryDirectoryFile). (Hartmut Birr)
  • Used the already detected cache line size for RtlPrefetchMemoryNonTemporal. Initialized RtlPrefetchMemoryNonTemporal earlier. Change the memory protection during the initialisation of RtlPrefetchMemoryNonTemporal. (Hartmut Birr)
  • Release the rmap list lock after cleaning the head entry in MmDeleteAllRmaps. This may fix bug #1071. (Hartmut Birr)

Run Time Library (RTL)

  • Fix searching for error messages in resources (Gé van Geldorp)
  • Implement RtlSelfRelativeToAbsoluteSD2 and RtlCreateSystemVolumeInformationFolder (Thomas Weidenmueller)
  • Implement RtlInitializeUnicodePrefix, RtlNextUnicodePrefix, RtlRemoveUnicodePrefix, RtlInsertUnicodePrefix, RtlFindUnicodePrefix. (Alex Ionescu)
  • Implement RtlInitializeGenericTable (Alex Ionescu)
  • Implement RtlSplayTree, RtlSplay, RtlRealPrecessdor, RtlRealSuccessor, RtlDelete (Alex Ionescu)
  • Fix RtlSubtreePredecessor/Successor, someone had implemented them backwards. (Alex Ionescu)
  • Implement RtlPrefectMemoryNonTemporal. Patch by Patrick Baggett <> and myself. (Alex Ionescu)

Native Library (NTDLL)

  • <placeholder>


Kernel Mode Drivers

Input Device

  • i8042prt "increase the number of passes to detect the mouse and keyboard - fixes mouse detection under VMware if the VM does not have ownership of the mouse. Thanks to GreatLord and Royce"
  • Prevent i8042prt to search for a keyboard/mouse more than once. (Hervé Poussineau)
  • New serial mouse driver, which is PnP compliant. (Hervé Poussineau)
  • Rewrite kbdclass, so it can now handle more than one keyboard. (Hervé Poussineau)
  • Rewrite mouclass, so it can now handle more than one mouse. (Hervé Poussineau)




  • Fix memory overwrite in pciidex driver (Gé van Geldorp)
  • Implemented SMART commands for ide devices. (Hartmut Birr)
  • Add pciidex (controller driver) and pciide (miniport driver). They enumerate channels 0 and 1 on IDE controllers. (Hervé Poussineau)


  • <placeholder>


  • <placeholder>



  • Don't try to create a file, if no parent fcb was found. (Hartmut Birr)
  • Use the calculated cluster/offset pair if we extend a file. (Hartmut Birr)
  • Lock the MainResource if we overwrite or supersede an existing file. Use given allocation size, if we overwrite or supersede an existing file. (Hartmut Birr)


  • Release the correct locks and release they in the correct sequence. (Hartmut Birr)
  • Use the share disposition to detect the direction of a pipe. (Hartmut Birr)



  • <placeholder>


  • Wrote sc.exe Includes support for:
    • query, queryex, create, start, stop, delete (Ged Murphy)
  • Various MSVC warning and compile fixes (Steven Edwards)


Windows Installer Service

  • Correct registry information for msiexec to allow for Office2000/XP/2003 to start to install (Steven Edwards)


Session Manager (SMSS)

Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Implemented code for tile and stretch wallpapers. (Brandon Turner)
  • Fixed a bug so the wallpaper gets written to registry and stays on reboot. (Brandon Turner)
  • Implement the saving of wallpaper styles in WinSta and the registry. (Brandon Turner)
  • Broaden the truetype lock to clear up text artifacts (Art Yerkes)
  • Fix display of menus in Firefox (Gé van Geldorp)
  • Make Firefox menus actually work (Gé van Geldorp)
  • Pass correct masks when creating bitfield palettes (Gé van Geldorp)
  • Fix a bitmap upside-down problem (Gé van Geldorp)
  • Implement IntEngAlphaBlend, NtGdiAlphaBlend functions, 8, 16, 24 and 32 bpp DIB AlphaBlend functions. (Gregor Anich)
  • Implement GetMenuBarInfo (James Tabor)

Win32™ Libraries



  • Fix Firefox installer (Gé van Geldorp)
  • Implement proper version of WaitNamedPipeW to be used when NPFS will be modified to work as documented. (Alex Ionescu)
  • Fix CreateNamedPipeW to convert some NT flags properly, timeouts, etc. (Alex Ionescu)
  • Fix CallNamedPipeW, the pipe mode should also be set to PIPE_WAIT. (Alex Ionescu)
  • Fix bugs in PeekNamedPipe and DisconnectNamedPipe. (Alex Ionescu)
  • Use the share disposition to detect the direction of a pipe. (Hartmut Birr
  • Removed some escape sequences from the command line in CreateProcessInternalW. (Hartmut Birr).


  • Refactor entire library.
  • Implement BindImage/BindImageEx.


  • Create newdev.dll to handle automatic driver installation for detected devices. (Hervé Poussineau)


  • Call specified class installer, class coinstallers and device coinstallers (if any) in SetupDiCallClassInstaller. (Hervé Poussineau)
  • Implement SetupDiCreateDevRegKeyW, SetupDiDestroyDriverInfoList, SetupDiGetClassDevPropertySheetsW, SetupDiGetDeviceInfoListDetailW, SetupDiGetDeviceInstallParamsW, SetupDiGetDeviceInstanceIdW, SetupDiGetDriverInfoDetailW, SetupDiOpenDeviceInterfaceA., SetupDiOpenDevRegKey, SetupDiSetDeviceInstallParamsW, SetupDiSetDeviceRegistryPropertyW. (Hervé Poussineau)
  • Better SetupInstallServicesFromInfSectionExW, which takes care of flags and can update configuration of an existing service. (Hervé Poussineau)
  • Add stubs for SetupDiGetClassImageList, SetupDiGetClassImageListExA/W, SetupDiDestroyClassImageList. (Hervé Poussineau)


  • Create new headers and clean up existing headers (nothing users will notice yet) (Magnus Olsen)
  • dplay and dplayx have been taken from wine with minor alterations. (Magnus Olsen)
  • Implement the following api's but not tested yet for directx hal in win32k : WaitForVerticalBlank, GetScanLine, FlipToGDISurface (Magnus Olsen)
  • Added d3d8thk.dll and dplay.dll to bootcd (Magnus Olsen)
  • Added dplayx.dll to bootcd (Magnus Olsen)
  • Sync all code shared with Wine (Gé van Geldorp)


  • correctly call HCR_GetFolderAttributes() in SHELL32_GetItemAttributes() to fix explorer's start menu root (Martin Fuchs


  • <placeholder>


  • Implement GetDeviceCapabilities, GetDeviceCount for modMessage.
  • Implement GetDeviceCapabilities implement GetDeviceCapabilities and GetDeviceCount for midMessage.
  • Remove hardcode of Find one device of midiout and wavout now scan for WaveOutXX, WaveInXX, MidiInXX, MidiOutXX, AuxXX.
  • Implement AUXDM_GETVOLUME, AUXDM_SETVOLUME which completes auxMessage.
  • Implement more case to widMessage, remove the stub of ThreadCallWaveDevice and implement it there it need it.
  • Implement some part of waveopen.
  • Implement parts of waveThread.
  • Implement WaveThreadSetData, WaveThreadGetData.
  • Implement soundGetData and WaveThreadSetState, implement soundSetData.
  • Sound now partly working in windows. (Magnus Olsen)


  • Fix C++ exception handling (Gé van Geldorp)
  • Implemented wgetmainargs. Fixed the allocating of argv if a empty cmd line is given. Fixed the allocating of pgmptr. (Hartmut Birr)

Libraries shared with Wine

Win32™ Applications


  • Remove all differences between compilation when __REACTOS__ is and isnt defined. (Brandon Turner)
  • Fixed all compilation errors in "activate" and a bug to not allow it to find some windows. (Brandon Turner)
  • Allow "exit" to print its help text. (Brandon Turner)
  • Replace hack to get correct path casing with correct implemnatation. (Brandon Turner)
  • Dir formatting changes. (Brandon Turner)
  • Change over some long texts to paging. (Brandon Turner)
  • Correctly implement Control Handler to cancel line input, message child process, and set the breaker for internal commands. (Brandon Turner)
  • Fix the return of not found envirnmental variables. (Brandon Turner)
  • Make all directories in a path that do not already exist for "mkdir". (Brandon Turner)
  • ^M executes the current input. (Brandon Turner)
  • Fix continuous repaint (Gé van Geldorp)


  • Adjust output graphics when resizing the application window (Martin Fuchs, patch from watz at
  • Fix endless loop during termination (Gé van Geldorp)


  • rearrange start menu (Ged Murphy)
    • move apps into applications folder
    • put solitaire and winemine into games folder
  • test version of startmenu root with big icons (Martin Fuchs)
  • Adjust for Visual Studio 2005: (Martin Fuchs)
    • switch to standard conform CRT function names
    • use secure CRT functions where available
    • use COUNTOF instead of hard coded buffer sizes
    • project files in new format for manifest integration
    • simplify secure function usage using template overloads
    • struct FileHolder to encapsulate _tfopen/_tfopen_s()
  • integrate replacement function for SHBindToParent() (Martin Fuchs)
  • fix bug 1139: disable printer submenu folder in "settings" start menu (Martin Fuchs)


  • Created a gettype program with all local and most remote capiabtlies as the microsoft version. (Brandon Turner)


  • <placeholder>







  • Fix "Codepage not found" error by setting correct registry entries (Gé van Geldorp)
  • Fix hang during loading of NDIS.SYS (Gé van Geldorp)
  • Invalidate the start value if the start key doesn't exist (Hartmut Birr).
  • Changed all registry functions to WCHAR. Implemented packed/unpacked names for keys and values. Fixed the hash values for very short data (Hartmut Birr).
  • Don't search for a serial mouse, if the port is used for debug prints (Hartmut Birr).



  • Get the cursor keys on the numpad working (patch by tinus).
  • Use the correct read length in ConReadConsoleInput. (Hartmut Birr)
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