From ReactOS Wiki
Jump to: navigation, search

The changelog for 0.2.5 in terms meaningful to technical end-users.




  • Create a new HAL to support the Xbox (Gé van Geldorp)
  • Rewritten DMA routines. (Alex Ionescu)
  • Used the time stamp counter from a pentium if it is available (in KeStallExecutionProcessor/KeQueryPerformanceCounter). (Hartmut Birr)
  • Improved smp functions. Changed/rewrote parts of the mp code to get my ASUS p2b-ds motherboard to working. Fixed the enabling/disabling of the higher irqs in Enable8259AIrq/Disable8259AIrq. Moved the local apic functions into its own file. Implemented the IpiInterrupt. Changed the destination of the startup ipis. Enabled interrupts on calls to KiDispatchInterrupt and KiDeliverApc. Delivered dpcs always on HalEndSystemInterrupt. Set the logical apic id according to the processor number from ntoskrnl. Dipped the code between HalInitializeProcessor and HalStartNextProcessor. (Hartmut Birr)


  • Debug symbols from SYM files loaded and used in DBG builds ( they used to only work in KDBG builds ) - several SYM-related bugs fixed (Royce Mitchell III)
  • Floating point and SSE state saving for uni- and multiprocessor systems (Gregor Anich)
  • Unmasked floating point and SSE exception support (Gregor Anich)
  • Various fixes to registry handling (Eric Kohl, Filip Navara)
  • Rewrote APC implementation (Alex Ionescu)
  • Rewrote/improved most of the DPC implementation (Alex Ionescu)
  • Allowed ReactOS to use 2GB/2GB Kernel/User memory model (Alex Ionescu)
  • Implemented KeSetEventBoostPriority, KeFindConfigurationEntry, KeDeregisterBugCheckCallback, KeIsAttachedProcess, KeQueryActiveProcessors, KeSetDmaIoCoherency, KeSetTimeIncrement, KeQueryRuntimeThread, KeUpdateRunTime, KeUpdateSystemTime, KeAreApcsDisabled, KeFlushEntireTb, KeIsExecutingDpc, KeSetKernelStackSwapEnable, KeQueryPriorityThread, KeRevertToUserAffinityThread, KeSetIdealProcessorThread, KeSetSystemAffinityThread, KeTerminateThread, KeStackAttachProcess, KeUnstackDetachProcess, ExVerifySuite, ExInterlockedFlushSList, ExSystemExceptionFilter, ExRaiseException, ExGetCurrentProcessorCpuUsage, ExGetCurrentProcessorCounts, PsRevertThreadToSelf, ExAcquireRundownProtection, ExAcquireRundownProtectionEx, ExInitializeRundownProtection, ExReInitializeRundownProtection, ExReleaseRundownProtection, ExReleaseRundownProtectionEx, ExRundownCompleted, ExWaitForRundownProtectionRelease, ExAllocatePoolWithQuota, ExAllocatePoolWithQuotaTag, PsChargePoolQuota, PsChargeProcessNonPagedPoolQuota, PsChargeProcessPagedPoolQuota, PsChargeProcessPoolQuota, ExAllocatePoolWithTagPriority (Alex Ionescu)
  • Fixed a couple of I/O Manager bugs related to IRPs (Alex Ionescu)
  • Implemented basic Process Quota support (Alex Ionescu)
  • Use 64k granularity for virtual memory (Gé van Geldorp)
  • Add shutdown messages (Gé van Geldorp)
  • PagedPool modified to keep track of Tags and a couple support functions added to access this information (Royce Mitchell III)
  • Added support to KDBG to query the tag of a memory block (Art Yerkes)
  • Complete rewrite of PagedPool - better than 800% performance improvement, designed to support multiple pools (SpecialPool?), and designed to help better catch misused memory under it's care. (Royce Mitchell III)
  • Improved low level page mapping (Hartmut Birr)
  • Implemented PAE (physical address extension) mapping (Hartmut Birr)
  • Implemented the no execution feature for AMD 64 cpus (Hartmut Birr)
  • Made a tlb entry invalid on all processors if the mapping is deleted or changed. (Hartmut Birr)
  • Implemented the driver loading by the sequence of tag entries in the GroupOrderList key (Hartmut Birr)
  • Rewrote parts of the Process & Thread time count functions (Hartmut Birr)
  • Rewrote (copied from ntdll) parts of the relocation and import fixup code. Don't load no-load sections at the end of the driver. Don't relocate the relocation section itself. Set the correct page protection for section which are executable. (Hartmut Birr)
  • Fixed the scanning for boot options. (Hartmut Birr)
  • Started the implementation of the ipi calls. Implemented KiIpiSendRequest for simple requests. (Hartmut Birr)
  • Changed the init sequence in KeInit1 and KePrepareForApplicationProcessorInit. Fixed the pae mode initialisation for application processors. (Hartmut Birr)
  • Prevent from terminate a thread for twice. (Hartmut Birr)
  • Replaced PiThreadLock with the dispatcher databae lock. Fixed some problems while setting/changing the affinity of a thread. (Hartmut Birr)
  • Improved KeBugCheckWithTf for smp machines. (Hartmut Birr)
  • Split KdInitSystem in two phases, to enable debug prints (serial line and bochs) in the very early boot stage (before the initialisation from hal). (Hartmut Birr)
  • Get rid of the "global" system process handle (Thomas Weidenmueller)
  • Better, but as of now - untested - implementation of rundown protections (Thomas Weidenmueller)
  • Fixed prototypes of NtSetEvent(), NtResetEvent(), NtQueryEvent(), NtPulseEvent(), NtOpenEvent(), NtCreateEvent(), NtCreateMutant(), NtQueryMutant(), NtQuerySemaphore(), NtQueryTimer(), NtReleaseMutant(), NtReleaseSemaphore(), NtSetTimerResolution(), NtSetTimer(), NtCreateProfile() and NtQueryIntervalProfile() (Thomas Weidenmueller)
  • Implemented PsGetProcessJob(), PsGetJobLock(), PsGetJobSessionId() and PsGetJobUIRestrictionsClass() (Thomas Weidenmueller)
  • Group Threads into processes instead of a global thread list (Thomas Weidenmueller)
  • Got rid of all reactos-specific fields in the E/KTHREAD structure and make them match the win2k layout (Thomas Weidenmueller)
  • Added preliminary ClientID management - currently only used for thread IDs (Thomas Weidenmueller)
  • Disabled thread event pair functions by default (NT4 only) as they require a field in the ETHREAD structure that is not present in more recent versions (Thomas Weidenmueller)
  • Removed some bad window station/desktop hacks (Thomas Weidenmueller)
  • Added boot logging (Eric Kohl)
  • Support changing the system time and timezone (Eric Kohl)
  • Fix registry bugs (Eric Kohl)
  • Support the FILE_APPEND_DATA file access right (Eric Kohl)



  • Split up the handling if the fsd returns STATUS_NOT_IMPLEMENTED in MoveFileWithProgressW. Converted the destination name before calling NtSetInformationFile in MoveFileWithProgressW. (Hartmut Birr)
  • Used the shared user data page instead of NtQuerySystemTime to get the time. (Hartmut Birr)
  • Implemented SetDllDirectory() and GetDllDirectory() (Thomas Weidenmueller)
  • Implemented CheckRemoteDebuggerPresent(), GetThreadIOPendingFlag(), CreateMemoryResourceNotification() and QueryMemoryResourceNotification() (only kernel32 part) (Thomas Weidenmueller)
  • Made SetUnhandledExceptionFilter() thread-safe and use the default unhandled exception filter on startup (Thomas Weidenmueller)
  • Implemented undocumented GetConsoleInputExeNameA/W() and SetConsoleInputExeNameA/W() used by NT's cmd.exe (Thomas Weidenmueller)
  • Added stub for SetThreadUILanguage() to get NT's cmd.exe to load (Thomas Weidenmueller)
  • Implemented GetUserDefaultUILanguage(), WriteConsoleW(), ReadConsoleW(), FillConsoleOutputCharacterW(), WriteConsoleInputW(), ReadConsoleOutputCharacterW(), ScrollConsoleScreenBufferW(), GetProcessIdOfThread(), GetThreadId(), GetThreadSelectorEntry(), SetProcessWorkingSetSize(), GetProcessHandleCount(), GetSystemRegistryQuota(), CheckNameLegalDOS8Dot3A/W(), IsDBCSLeadByte() and IsDBCSLeadByteEx() (Thomas Weidenmueller)
  • Fixed ProcessIdToSessionId() to actually work and some minor fixes to GetHandleInformation(), SetHandleInformation(), CloseHandle() and DuplicateHandle() (Thomas Weidenmueller)
  • Implemented GetNamedPipeHandleStateA() and a few fixes for GetNamedPipeHandleStateW(), atomically increment pipe IDs to be thread-safe (Thomas Weidenmueller)
  • Create mailslots and named pipes with security information if requested (Thomas Weidenmueller)
  • Fixed return value of FindCloseChangeNotification() (Thomas Weidenmueller)
  • Implemented ToolHelp API: Heap32ListFirst(), Heap32ListNext(), Module32First(), Module32FirstW(), Module32Next(), Module32NextW(), Process32First(), Process32FirstW(), Process32Next(), Process32NextW(), Thread32First(), Thread32Next(), Toolhelp32ReadProcessMemory() and CreateToolhelp32Snapshot() (Thomas Weidenmueller)
  • Fixed memory leak in CheckNameLegalDOS8Dot3A() (free the allocated unicode string) (Thomas Weidenmueller)
  • Fixed Set/GetPriorityClass() not to call csrss and use NtSet/QueryInformationProcess() instead (Thomas Weidenmueller)
  • Implemented Job APIs: CreateJobObjectA/W(), OpenJobObjectA/W(), IsProcessInJob(), AssignProcessToJobObject(), QueryInformationJobObject(), SetInformationJobObject() and TerminateJobObject() (Thomas Weidenmueller)


  • Implemented GetProcessImageFileNameA/W(), EnumPageFilesA/W(), GetPerformanceInfo(), InitializeProcessForWsWatch() and GetWsChanges() (Thomas Weidenmueller)


  • made timezone buffers large enough to avoid buffer overflow caused by Firefox/Thunderbird (Thomas Weidenmueller)





  • Fixed implementations of myriad things in tcpip. Telnet, CVS, basic routing, ipconfig experimentally working. This will be the first net release effectively. Not much works, and we're still missing key features from userland and afd that allow a majority of networked apps to work. This is a milestone of sorts because anything works at all. (Art Yerkes)
  • Simple gethostbyname implementation (Adam Kelly)
  • Thanks to Filip Navarra, Royce Mitchell III, Alex Ionescu for doing an amazing amount of work in msafd, tcpip and afd as well.


  • Partial conversion to Plug & Play model and bring the registry configuration closer to the Windows. (Filip Navara)
  • Miscellaneous small fixes to get 3rd party drivers to work (RTL8139 particulary). (Filip Navara)


  • Basic support for sends and receives including various fixes to make the driver work. (Filip Navara)


  • Included winefile into the distribution (Martin Fuchs)
  • Configuration dialog to choose between MDI and SDI mode with persistent storage (Martin Fuchs)
  • Now handle "." and ".." as special direcory names and move them at the very first beginning of directory listings (Martin Fuchs)
  • Moved direct version output from explorer into the kernel (Martin Fuchs)
  • Encoding of quotation marks and apostrophs in bookmark link addresses (Martin Fuchs)
  • Designed Shell About dialog more Windows-like (Klemens Friedl)
  • Adjusted about dialog to ROS font sizes (Klemens Friedl)


  • Port over wine dinput / dinput8 to reactos (rewrite wine dinput from using gdi hooks for it is not support yet in reactos, it has a bug on mouse buffer. Some directx apps are working if it only need keyboard or mouse.) (Magnus Olsen)

Libraries shared with Wine

  • Merge Wine-20041201 release - Lots of Wine developers


  • Implemented waitable console handles. - (Hartmut Birr)
  • Removed a fake event after a input event to empty the queue in CsrReadInputEvent. (Hartmut Birr)


  • Fixed MessageBoxIndirectA() not to use random pointers if MB_USERICON wasn't specified (Thomas Weidenmueller)




  • Fixed RtlLargeIntegerArithmeticShift() not to return uninitialized data from the stack (Thomas Weidenmueller)
  • Adapted RtlIntegerToUnicode() from RtlIntegerToChar() and RtlInt64ToUnicodeString() from RtlIntegerToUnicodeString() (Thomas Weidenmueller)
  • Implemented RtlIpv4AddressToStringA/W() and RtlValidRelativeSecurityDescriptor() (Thomas Weidenmueller)
  • Fixed RtlValidSecurityDescriptor() that attempted to validate nonexisting owner/group SID (Thomas Weidenmueller)
Changelogs / Versions
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