From ReactOS Wiki
Revision as of 08:20, 21 June 2009 by Fireball (talk | contribs) (Kernel and Executive (NTOSKRNL))
Jump to: navigation, search

This is the changelog for ReactOS™ version 0.3.10 (released whenever), 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.9 (released 26 April, 2009).


Generic 0.3.10 Changes






Host Tools






Bootloader (FreeLoader)

  • Revert part of r40686 See issue #4471 for more details. (HervГc Poussineau)
  • Remove MachGetMemoryMap() and replace it by ArcGetMemoryDescriptor(). Rework memory initialization to use it. As a bonus, we're not limited anymore to 32 memory descriptors, and having more than 4GB of RAM doesn't lead to out of bounds accesses (HervГc Poussineau)
  • WINLDR: Repair LiveCD boot (HervГc Poussineau)
  • WINLDR: Fix SystemRoot path when booting in non-setup mode. WINLDR: Change path buffers to be MAX_PATH sized instead of an arbitrary 512 bytes value. (Aleksey Bragin)
  • Reenable partition table exploration, but switch off disk error reporting before doing it. (Aleksey Bragin)
  • WINLDR: Pass boot options to the kernel when booting in setup mode (it was disabled for debugging reasons). (Aleksey Bragin)
  • WINLDR: Use SystemRoot path as it is because after recent Herve's changes there is no need to do additional operations with it. (Aleksey Bragin)
  • Fix CDROM device registration: don't hardcode it to 0xE0, but register whatever device FreeLdr starts and which is not reported by BIOS as a hardisk. Fixes setupldr2. (Aleksey Bragin)
  • Remove empty debug print. (Aleksey Bragin)
  • Fix warning (HervГc Poussineau)
  • Disable partition table exploration, as long as it displays an error message if disk is not partitioned (HervГc Poussineau)
  • Implement agnostic architecture for file system access, according to Advanced RISC Computing Specification Version 1.2 Some shortcuts still exist, and will need to be addressed later Use this new API in the NTLDR-style loader (HervГc Poussineau)

Kernel and Executive (NTOSKRNL)

  • Fix accidentally committed change in a function prototype. Spotted by Stefan Ginsberg. (Aleksey Bragin)
  • Make use of the implemented transfer counter. (Aleksey Bragin)
  • Implement a helper for updating IO transfer counters. Based on a patch by Dmitry Chapyshev. (Aleksey Bragin)
  • IopCreateObjectTypes: Add a DeleteProcedure for Device Objects. IopUnloadDevice: After calling the drivers Unload routine, make the DriverObject temporary and dereference it. IopUnloadDriver: Check that the driver is not already unloading before trying to call unload routine. If any failure, dereference the DriverObject before returning STATUS code. On an attempt to unload the driver, loop through each DeviceObject and set DOE_UNLOAD_PENDING in device extensions flags. Before calling the driver's unload routine set DRVO_UNLOAD_INVOKED in DriverObject's flags. Fixes Bugchecks when attempting to load driver a second time and when unloading a driver that has upper level device attached. (Michael Martin)
  • Disable debugging traces for dbgk/io/lpc/ob/ps by default, removing mostly unused debug code from frequently used routines and decreasing image size by about 32 KB. Also fix the way some macros are defined so we don't end up with double semicolons after the preprocessor. (Stefan Ginsberg)
  • Implement ProcessIoCounters case in NtQueryInformationProcess. Patch by Dmitry Chapyshev. Turn on I/O operations counter. (Aleksey Bragin)
  • Debug pool allocator: Add support for paged pool debugging. (Aleksey Bragin)
  • Implement a special "debug pool" allocator which catches pool overruns. It evolved from an initial patch by Art Yerkes, and is fully independent from underlying pool implementation. It supports only non-paged pool and detects only overruns now. To enable, uncomment DEBUG_NPOOL define in mm/pool.c. (Aleksey Bragin)
  • Change storage of ReactOS-specific virtual address space from VadRoot to Vm EPROCESS structure member. Change containing "structure" from MM_AVL_TABLE to MMSUPPORT respectively . (Aleksey Bragin)





  • Fix formatting. (Michael Martin)
  • IopUnloadDriver: Only add the DOE_UNLOAD_PENDING to the Device's DeviceExtensions Flags and check for attached devices and reference counts if the DriverObject->DriverUnload is valid. Verified on XP. IopLoadUnloadDriver: Add a check to verify that ImagePath.Buffer is non null before freeing it. (Michael Martin)
  • IopDeleteDevice: Fix a typo. (Michael Martin)
  • IoGetLowerDeviceObject: Return lower device object if pending flags are not set. Noticed by Johannes Anderwald. (Michael Martin)
  • IopCreateDriver: Change MajorFunction routines back to internal function IopInvalidDeviceRequest for ones that were set to NULL in the Drivers DriverEntry. Windows does it and so shall we. (Michael Martin)
  • Fix a potential crash in IoGetLowerDeviceObject if nothing is attached to us (Cameron Gutman)
  • Add missing pool allocation failure branch in NtSetInformationFile, and a missing PAGED_CODE check. Spotted by Dmitry Chapyshev. (Aleksey Bragin)
  • Initialize IoCountOperations variable to FALSE by default. Spotted by Dmitry Chapyshev & winetests. (Aleksey Bragin)
  • IRP_MN_FILTER_RESOURCE_REQUIREMENTS passes the list also in Irp->IoStatus.Information Fixes a crash in CMI8738 driver (Johannes Anderwald)
  • Patch by JГcrГ_me Gardou (jgardou-at-yahoo-dot-fr) from bug #4388, should fix the "VirtualBox Guest Additions 2.2.2 mouse filter driver is crashing during boot" (bug #4454). (Dmitry Gorbachev)
  • Fix improper resource translation because of AddressSpace confusion (Cameron Gutman)
  • Fix writing of BootConfig to the registry (previously, it wrote contents of DEVICE_NODE structure and caused nonpaged pool overrea). Similar error a few lines below was fixed by hpoussin in r15691. (Aleksey Bragin)
  • Fix driver object type DeleteProcedure so that it actually unloads driver's image. Make IopUnloadDriver work accordingly (it shouldn't try to unload an image when its object has already been deleted). Drivers can now be unloaded in ReactOS, this probably fixes a number of hardware-related applications and applications using hardware protection. (Aleksey Bragin)



  • Lowercase STATIC and CONST. Fixes build with DBG but without KDBG. (Dmitry Gorbachev)
  • Clear up debugger prompt from "mouse excrements". Tested in QEMU, Bochs, VirtualBox. (Dmitry Gorbachev)



  • Add SectionHandle probing (Dmitry Chapyshev)
  • Add probing of the result buffer Add missing target process reference/dereference in MemorySectionName case of NtQueryVirtualMemory. Fixes 2 "psapi_winetest" failures. (Dmitry Chapyshev)
  • MmUnmapViewOfSection: Unlock address space before notifying debugger. Fixes a case where OllyDbg deadlocks in a GateWait while trying to read virtual memory. (Michael Martin)
  • MiFindExportedRoutineByNam: Correct an typo in assert that caused MmGetSystemRoutineAddress to assert after finding a valid non forwarder function. (Michael Martin)
  • Properly disable tag validation if using debugging pool (fixes a wrong part of r41255). (Aleksey Bragin)
  • Add a note about increasing max pool sizes when using pool debugging. (Aleksey Bragin)
  • Add missing parameters probing. (Aleksey Bragin)
  • Add missing AVL tree initialization. (Aleksey Bragin)
  • MmGrowKernelStack: go back to the ASSERT and add a fixed check (Timo Kreuzer)
  • Add check of params for NtGetWriteWatch/NtResetWriteWatch (from Wine) Set Granularity to PAGE_SIZE Fixes crash in kernel32 virtual test (Dmitry Chapyshev)
  • MmGrowKernelStack: Don't assert, but fail, when the kernel stack can't grow any more. Fixes a crash with recursive user calls. See issue #4060 for more details. (Timo Kreuzer)
  • MmCreateSection: SectionPageProtection of PAGE_NOACCESS is valid in <=Win98, but not valid in the NT family. More kernel32_winetest fixes for virtual memory. (Michael Martin)
  • NtAllocateVirtualMemory, NtProtectVirtualMemory: Page Protection cannot be any combination of Memory Protection Constants, see MSDN. Add checks to handle non compatible combinations are fail. Fixes 6 more kernel32_winetest for virtual memory. (Michael Martin)
  • MmProtectAnonMem: Search all Regions in Memory Area up to Length for MEM_COMMIT prior to altering memory protection. Fixes 6 kernel32_winetest for virtual memory. (Michael Martin)
  • MmMapViewOfSection: Segment size must be a multiple of page size, so round ViewSize up to next page size. OllyDbg now shows loaded dll's in memory and can step into dlls. (Michael Martin)
  • NtFreeVirtualMemory: Pass RegionListHead from SectionData vice VirtualMemoryData to MmAlterRegion for MemoryArea->Type of Section view. Fixes MapViewOfFile tests for kernel32_winetests. More investigation is needed on whether this function should even succeed on FileMapping Objects. (Michael Martin)
  • Silence pool debugging debugprints. (Aleksey Bragin)
  • Make debug pool return 8-bytes aligned pointers. The padding area (up to 7 bytes) is not being checked for overruns now. ReactOS fully boots and works with this change and a debug pool. (Aleksey Bragin)


  • Make ObReferenceObjectEx return the new ref count instead of old ref count. Fix same bug ObDereferenceObjectEx. Fix a typo in ObDereferenceObjectEx which resulted in ObpDeferObjectDeletion not being called when needed. Fixes missing object deletions in ObDereferenceObjectEx-using code (e.g. executive timers in reactos kernel). Original problem found by, fixes inspired by the discussion too. (Aleksey Bragin)


  • Add target process reference/dereference in ProcessWow64Information case of NtQueryInformationProcess. Check buffer length (Dmitry Chapyshev)
  • Check buffer length for ProcessQuotaLimits/ProcessBasePriority/ProcessRaisePriority/ProcessWx86Information/ProcessDebugPort cases (Dmitry Chapyshev)
  • Add probing of the result buffers (Dmitry Chapyshev)
  • Implement ProcessQuotaLimits case for NtQueryInformationProcess. Based on Dmitry Chapyshev's patch. (Aleksey Bragin)
  • Add target process reference/dereference in ProcessLdtInformation/ProcessWorkingSetWatch/ProcessWx86Information cases of NtQueryInformationProcess. (Dmitry Chapyshev)
  • Add debug messages for unimplemented cases in NtQueryInformationProcess (Dmitry Chapyshev)
  • Add missed checks of the buffer length (Dmitry Chapyshev)
  • Add debug messages for unimplemented cases (Dmitry Chapyshev)
  • Implement ProcessPriorityClass case for NtSetInformationProcess(). Based on Dmitry Chapyshev's work and testing. (Aleksey Bragin)
  • Fix ProcessPriorityClass case in NtQueryInformationProcess. Structure PROCESS_PRIORITY_CLASS should be returned. Tested in win vista (Dmitry Chapyshev)


Run Time Library (RTL)

Kernel Mode Drivers














Static Libraries





Win32™ Personality

Kernel-mode subsystem server (Win32K)




Control panel applets



Win32™ Applications

Command Prompt






Win32™ Libraries











Regression tests


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