TODO: Need a list compiled for apps updated/added to the rosapp list. We'll stick this under the Generic Changes section. -Z98
TODO: Document all the hacks that go into this release to cover up, issues. This information may not yet be available. -Z98
NOTE: List of names are supposed to be organized based off of last name, not first. Only if there is not a last name available do we use the first name. -Z98
This is the changelog for ReactOS™ version 0.3.12 (date yet to be determined), 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.11 (released 16 December 2009).
- 1 General
- 1.1 Contributors
- 1.2 Generic 0.3.12 Changes
- 1.3 Tests
- 1.4 Translations
- 1.5 Wine Syncs
- 1.6 Third Party Libraries
- 1.7 Regressions
- 1.8 Build Tools
- 2 Core Functionality
- 2.1 Audio/Video Stack
- 2.2 Filesystems
- 2.3 Hardware Management
- 2.4 Memory Management
- 2.5 Network Stack
- 2.6 Graphics
- 2.7 Kernel
- 2.8 I/O
- 2.9 Registry
- 2.10 Startup/Shutdown
- 2.11 Security
- 2.12 Shell
- 2.13 Storage Stack
- 2.14 USB
- 3 Drivers
- 4 Libraries
- 5 Client/Server Runtime
- 5.1 CSRSRV
- 5.2 Win32CSR
- 5.3 Kernel-mode subsystem server (Win32K)
- 5.4 Regression tests
- 5.5 BASE
- 5.6 DLL
- 5.6.1 3RDPARTY
- 5.6.2 DIRECTX
- 5.6.3 KEYBOARD
- 5.6.4 NLS
- 5.6.5 WIN32
- 5.7 DRIVERS
- 5.8 LIB
- 5.9 MEDIA
- 5.10 NTOSKRNL
- 5.11 Uncategorized
- 5.11.1 BASE_SYSTEM_EXPAND
- 5.11.2 INPUT_I8042PRT
- 5.11.3 INTRIN_X86
- 5.11.4 IOEVENT
- 5.11.5 NETEVENT
- 5.11.6 NTOS
- 5.11.7 NTOS_PERF
- 5.11.8 NTOSKRNL_CONFIG
- 5.11.9 NTOSKRNL_IO_PNPMGR
- 5.11.10 NTOSKRNL_PO
- 5.11.11 NTOSKRNL_PS
- 5.11.12 NTSOKRNL
- 5.11.13 OLDNAMES
- 5.11.14 RSYM64
- 5.11.15 SCM
- 5.11.16 SETUPLDR
- 5.11.17 STRSAFE
- 5.11.18 VMX-SVGA
- 5.11.19 WDMAUD_KERNEL
- 5.11.20 WIN32K|GDI32
- 5.11.21 WIN32K|GGI32
- 5.11.22 XDK_DDK
- 5.11.23 SYSGEN
- Giannis Adamopoulos: Applications, Win32.
- Johannes Anderwald: Kernel, sound.
- Aleksey Bragin: Filesystem, kernel, Win32k.
- Colin Finck: Build tools, translations, release engineer.
- Jérôme Gardou: Win32.
- Stefan Ginsberg: Kernel.
- Dmitry Gorbachev: Applications.
- Cameron Gutman: Networking, PnP.
- Kamil Horníček: 3D Graphics, Win32.
- Amine Khaldi: Build tools.
- Eric Kohl: Kernel, Win32.
- Timo Kreuzer: Win32k.
- Matthias Kupfer: Applications, Win32.
- Michael Martin: Kernel, USB.
- Jeffrey Morlan: Applications, Win32.
- Filip Narava: USB.
- Sylvain Petreolle: Applications.
- Hervé Poussineau: Kernel.
- ReactOS Portable Systems Group: ARM porting, drivers, kernel.
- Daniel Reimer: Build tools, translations.
- Gregor Schneider: Win32.
- Pierre Schweitzer: Filesystem, kernel.
- James Tabor: Win32.
- Christoph von Wittich: Win32.
- Carlo Bramini
- James Edmeades
- Benedikt Freisen
- Rafal Harabien
- Katayama Hirofumi
- Kusanagi Kouichi
- Radek Liška
- Roel Messiant
- Andrew Nguyen
- Samuel Serapión
- Dmitry Timoshkov
- Henri Verbeet
- forenkrams [AT] tuxproject [DOT] de
- Andres Traks
- Andrew Faulds
- Arturs B
- Edison Henrique Andreassy
- Egon Ashrafinia
- Gabriel Ilardi
- Igor Paliychuk
- Javier Fernandéz
- Javier Remacha
- Katayama Hirofumi
- Maciej Bialas
- Maikel Wever
- Marcelo Zamperetti
- Mario Kacmar
- Olaf Siejka
- Paolo Devoti
- Radek Liška
- Sakara Yevhen
- Tomoya Kitagawa
- Danny Gotte: Web Developer.
- Ziliang Guo: Release Engineer, Web Content Maintainer.
Generic 0.3.12 Changes
- Hardware IDs for the following processors have been added to the internal hardware list.
- Pentium MMX, Pro, II, M, 4
- Core Solo, Duo, Extreme, i3, i5, i7
- AMD K6, K6-3, Athlon 64, Turion64, Sempron
- Via Nehemiah, Esther, Nano
- NTVDM is now only built on x86 builds.
- Calc: Units and conversion factors added.
- Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.
- IPconfig: Media detection is now fixed.
- MSCUtils: Column names now use resource strings instead of hardcoded strings.
- Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.
- Paint: Initial selection support and angle rounding for lines and edges.
- Regedit: Fix searching the registry.
- Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.
Control Panel Applets
- Console: Store changes when buffer/window size or color changes.
- Desk: Fix theme switching and screensaver selection.
- Input: Fix changing of keyboard layout.
- Intl: Use resource strings for 'metric' and 'Imperial' strings.
- Sysdm: Fix creation of paging file and place constraints on file size.
Various tweaks were made to the installer to ease installing ReactOS.
- Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.
- Fix reading of partitions created in non-standard formats by Linux.
- Minimum space check notification improved. Minimum space value also made configurable through text file.
- Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.
- Installer does not restart in second stage if ESC is pressed.
- PathName and SystemRoot registry key values are now written by the installer.
- Services no longer trample over other services when reporting their status.
- DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.
- EventLog: Fixes to reading and displaying of log content.
- Add french translations for location overrides. (Sylvain Petreolle)
- Added a German translation myself. (Daniel Reimer)
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.
Third Party Libraries
- DejaVu Fonts updated to 2.31
- FreeType updated to 2.3.12
- Liberation Fonts updated to 1.05.2
- libjpeg updated to 8b
- libpng 1.4.3 added
- libtiff 3.9.4 added
- libxml updated to 2.7.7
- zlib updated to 1.2.5
- #4086 cdfs: Data inaccessible for view under Explorer
- #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter
- #4811 comctl32: dll winesync broke AbiWord toolbar
- #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed
- #5035 Abiword: fonts listbox isn't shown properly
- #5158 some keystrokes get lost if typing fast in VirtualBox
- #5290 Slowness during file copying in 1st stage in VirtualBox
- #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint
- #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage
- #5443 Inkscape 0.43-2 crashes immediately upon start.
- #5484 New windows are created on top of older ones
- #5503 Far Manager 1.65 fails to start
- #5504 Internet Explorer 6 errors out at setup
- #5524 Displaced numbers on virtual desktop icons in 32bpp
- #5530 COM ports not available anymore
- #5554 Warning/error window is misplaced and misshaped
- #5560 Acrobat Reader 7.1 crashes at start
- #5569 App tray icons are not displayed
- #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn
- Updated to version 2.2
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.
- Non-existent DLL functions can be exported.
- Function export names are not properly decorated, allowing export names to not match the original function names.
- If function targets are not found, RBuild will link the DLL to itself.
Some development on RBuild also took place before the decision was made to switch over to CMake.
- Initial Visual Studio 2010 project file support.
- Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.
- Build environment now uses GCC 4.4.x as the compiler.
- -fno-unit-at-a-time hacks have been removed.
- Auto-export of all symbols has been turned off.
The A/V stack has seen a great deal of enhancements and fixes since the last release. The work done has not only added features to better control sound playback, but preliminary support for streaming videos through various media frameworks has also been implemented.
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.
- Interfacing with broadcast devices implemented.
- Filtering of broadcast frequencies implemented.
A library that bypasses some of the layers in the sound stack to try and speed up processing.
- Starting and stopping audio implemented.
- Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.
- Device initialization and registration implemented.
- Objects allocated are placed onto a list for automatic reclamation.
- Pin interface for controlling devices implemented, though issuing of commands still needs work.
A DirectShow filter that relays media through the user mode kernel streaming library.
- Enumeration of supported functionality on devices implemented.
- Signal statistics from BDA devices are delivered by KSPROXY.
- Media stream sampling is done to determine buffer allocation strategy.
- Multiple media samples can be dispatched simultaneously.
The driver that manages most of the audio functionality in NT.
- Currently a "silent" buffer is used when no audio buffers are available for playback.
- Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.
- A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.
- Audio stream data is only copied to the common buffer when the pin owning it is in a running state.
ReactOS continues to use the FAT filesystem as its default, but work has been done to add the support needed for newer ones as well as fixing longstanding issues with the current FAT driver.
The filesystem runtime library provides a set of basic functionality for filesystem drivers and allows them to avoid duplicating shared functionality while also ensuring higher level libraries inappropriate for kernel drivers do not need be linked in. FsRtl for many years had very minimal documentation, but that is changing with this release.
- Notification of changes to volume state has been implemented.
- Initial groundwork for volume content change notifications begun.
- Media ejection added.
- Various memory leaks and corruptions have been resolved.
ReactOS uses the FASTFAT driver for the FAT filesystem. The current driver is fairly old and a new one is being developed, but until it is ready FASTFAT will continue to see updates.
- Updated to use various functionality in the FsRtl library instead of reimplementing them inside the driver.
- Driver is now Plug n Play aware but does not support any actual PnP commands.
The new FAT driver is being implemented using the FullFAT library and wrapping its functionality inside a filesystem driver. It is currently incomplete but will replace the old FASTFAT driver in a future release.
- Control blocks for files have been implemented.
- Basic locking implemented.
- Implemented finding registry keys when the registry keys are not sorted.
- Fix a bug that caused registry corruption when a registry key got too large.
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.
- Enumerate attached devices.
- Receive commands from power buttons.
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.
- Resource querying implemented.
- Separation of ACPI and non-ACPI bus handling.
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.
- Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.
- Composite Battery Driver: Battery detection and PnP notification implemented.
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.
- i8259A programmable interrupt controller initialization implemented in C.
- HAL now detects EISA systems with the Edge/Level Control Register.
- Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.
- Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.
- IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.
- HAL no longer relies on the memory manager for allocations.
- Various debugging related functions implemented.
- CMOS, ISA, and SYSTEM bus handlers are now registered.
- HAL now can detect PCI and PCI-to-PCI bridges.
- Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.
Plug n Play
- Writing of resource list has been fixed to avoid corrupting the registry.
- Registry values for legacy devices are now written.
- Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.
The memory manager saw several major improvements since the last release, including a new pool manager and major fixes to virtual memory management.
- Page Table Entries work under x64.
- Correctly report the amount of memory available to applications and drivers.
- Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.
- Code refactored so architecture independent code can be shared across platforms.
- Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.
- Global pages support removed due to currently broken code.
- Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.
- Stubs have been added for various large page functions in case future work is done to add support.
- Paging driver code and data implemented.
- A check to detect potential corruption in contiguously allocated blocks of memory has been added.
A new memory manager designed to be more conformant to the NT architecture and hopefully eliminate the instability caused by the current memory manager's corruption issues.
- Virtual Address Descriptor data structures implemented.
- Page table and directory entry initialization implemented.
- Stack frames are allocated using ARM3.
- Paged pool allocations can be done through ARM3.
- Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.
- Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.
- Shared user data pages are handled by ARM3.
- New AVL tree implementation used to manage Virtual Address Descriptors.
- Creation of the process address space is now done by ARM3.
- IsBadRead/CodePtr fixed to work with ARM3.
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.
- Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.
- No attempt is made to close a socket already terminated by the remote peer.
- Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.
The current socket implementation on ReactOS.
- Error codes are now properly reported, fixing many of the Winetests for this component.
- Failures on operations are now reported instead of simply being left dangling.
- Events are waited on instead of immediately being closed.
- Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.
- Socket information is now cleaned up after a socket is closed.
- Support for connectionless sockets added.
- Reading data using the peek functionality no longer causes corruptions.
- Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.
- Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.
- Network adapter initialization and binding cleaned up to avoid duplicate entries.
- Multiple wakeups are now prevented from occurring.
- Sent/received reports are only sent if operation completed successfully.
- A check was added to make sure accept is not called on a socket that is not listening.
- Reading host files now supported.
Development on ReactOS' graphics components continues, with increased compatibility and functionality. Several enhancements from the yarotows branch have made it into trunk and are now part of this release.
- IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.
- FPU state is now correctly not saved when a kernel debugger is not attached.
- Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.
- Trap handling code converted to C with minimal bits of assembly.
- Interrupt handling in kernel converted to C to match conversion done in HAL.
- System call handling now implemented in C.
- Entrypoint of kernel moved to KiSystemStartup.
- KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.
- Interrupts are now handled when in Virtual 8086 mode.
- Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.
- Checks have been added to avoid drivers linked with user mode DLLs.
- Dependency checking for driver unloading implemented.
- When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.
- The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.
- All trap handling code is now marked as no-return, allowing the compiler to better optimize them.
- The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.
- Device property retrieval now returns correct information for the device name.
- IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.
- Changes in device status are now reported.
- New resource information is now reported.
- A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.
- Opening registry values for symbolic links is fixed.
- cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.
The registry generator.
- newinflib is now used instead of inflib.
- Registry generation now uses the Unicode API instead of ascii.
- Work has been done to properly free resources, as mkhive is suffering from several memory leaks.
- Unicode aware version of inflib added, newinflib.
- String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.
Startup of ReactOS has seen considerable modification as effort is made to port it to other architectures and new developer-centric changes are added.
- Progress bar during boot now displays correctly.
- Logos now have the correct color palette and the correct logo is used for booting and shutting down.
- Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.
- A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.
- Broken initialization code removed and a correct implementation added.
- 4bpp blitting code simplified.
- x64 portability fixes.
- Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.
- FreeLoader is now compiled into the Portable Executable format to allow for debugging.
- FreeLoader no longer needs to be installed on the first partition of the first disk.
- FreeLoader UI on ARM rewritten to slim down on resources needed.
- Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.
- x64 portability fixes.
- Loading on the ARM platform has been changed to match EFI/Firmware model.
Session Manager Subsystem
- SMSS can now add several system environment variables to the registry.
- SMSS now creates a new default paging file if none exists.
- Environment variables for user are now properly loaded upon login.
- NtAcessCheck fixed to account for various error cases and improper usage.
- Security token is now checked for what level of authorization it is trying to impersonate.
- Success is only reported if all access requests have been granted.
- Attempts to duplicate security tokens fail if authorization level is too low.
- A single table is now used for mapping privilege names to values.
- Initial implementation of a lookup table for well-known SIDs has been added.
- Account name lookup call chain implemented, but dummy names are still returned.
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.
- Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.
- Clock is no longer clipped in its window.
- 24bpp start menu icon added.
- Confirmation dialog added for logging off.
- Open With dialog now allows aborting of operation.
- Localized error text now displayed as messagebox caption.
- Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.
- Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.
- Initial file copy/move/delete dialog implementation added.
- File association error texts added.
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.
- Logical units in extended partitions are visible but are not accessible yet.
- Querying for Native ATA channels and configuring controller to use NATA implemented.
- Fixes for using ramdisk when booting on ARM.
- x64 portability fixes.
- Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. However, a NT5-style USB stack consisting of the usbd library, usbehci driver, and usbhub interface has been started.
Helper library for third party USB drivers, used for querying information about USB devices.
Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.
Initializes USB devices and their associated driver objects and handles passing of interrupts and other signals to the driver. Utilizes the usbd library and usbehci driver to fill in information about devices.
USB Requests Implemented
The current USB driver, usbdriver provides simplistic support for USB keyboards and mice in very specific configurations.
- Support for multiple EHCI controllers added, increasing compatibility with physical hardware configurations.
- All PCI buses are scanned for USB controllers.
- Cleanup of devices that crashed or failed to initialize properly.
- SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.
- ISAPNP driver has been removed from the set of drivers loaded during booting.
- Attaching to processes fixed.
- ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.
- ReadEvent and WriteEvent have been changed to be notification events.
- A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.
- Various memory leaks have been dealt with.
- Status information now correctly informs a reading/writing thread that a pipe is dead.
- Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.
- Interrupt Request routing implemented.
- Handling of devices that incorrectly implement the PCI standard has been improved.
- Querying and discovery of devices attached to PCI bus implemented.
- Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.
- Driver has been stubbed so will require more work before any functionality is added.
- Initial implementation of a driver for the VMWARE SVGA-II Video Card added.
- Various x64 portability fixes to the current VGA driver.
- A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.
- Proper error codes are now used.
- Resources for tracking services are created and destroyed as services start and stop.
- Hardware profiles actually create GUIDs instead of hardcoding them to zero.
- Computer name is used inside of eventlog.
- ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.
- CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.
- CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.
- x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.
- Pointer comparison fixed in signal().
- Various functions dealing with codepages and conversions between different encodings have seen fixes.
- x64 implementations of various basic math and pointer functions added.
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.
- Remove all Windows 95 function exports.
- Stub all functions that kernel32 is supposed to export.
- Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.
- kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.
- Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.
- Switching between fibers fixed.
- Various x64 portability changes.
- NT-style debug channels are now enabled and used.
- Leaking of regions temporarily fixed.
- Batch support added for selecting regions for clipping.
- Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.
- Exports added for a variety of functions.
- Various fixes to loading functions for libraries and executables.
- Service status is now reported to the service manager.
- Various x64 portability changes.
- New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.
- Various fixes to functions that operate on strings.
- x64 portability fixes for functions that operate on the byte level.
- Setting of regions now behaves correctly.
- Cursor icons follow correct call chain instead of calling functions that do not exist.
- Various x64 portability changes.
- Scrollbar tracking now ends if mouse capture is lost.
- Window management code saw refactoring and fixes.
- Start user handle manager rewrite.
- Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.
- A dummy PSEH implementation has bee added for CLANG.
- x64 version of PSEH has been stubbed.
- Code from CSRSS has been moved into CSRSRV.
- CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.
- Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.
- Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.
- Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.
- Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.
- CsrFreeConsole now closes a process' console handles.
- Locking simplified to having only one for a console.
- Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.
- RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.
- Text selection outside the visible window is now allowed.
- Console pausing is now implemented.
- Line input processing code now merged into one place instead of being duplicated in multiple places.
- Basic line editing and line editing history implementation added.
- Setting the console screen buffer size has been implemented.
- CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.
- Management of console windows moved to Win32CSR from CSRSRV.
Kernel-mode subsystem server (Win32K)
- Several fixes to Windows Hook Procedures that causes application lockups.
- Shell can now be restarted after killing it.
- Fix cases where windows can deadlock when waiting on another window to finish.
- Fixes to minimizing/maximizing and setting focus of windows.
- SendMessageCallback now implemented.
- get next button to work (Christoph von Wittich)
- Roel Messiant: Fix a crash when running some operations in sc without providing arguments. Also, provide usage information for the control and unknown commands. (Aleksey Bragin; #5611)
- Aleksey Bragin: Take Ged Murphy's comments into account and change pointer arithmetic to a convenient style. (Aleksey Bragin; #5611)
- Add required libary iphlpapi (Sylvain Petreolle)
- Correctly start and report status to the service manager. (Sylvain Petreolle)
- Instead of disabling a warning when using "main" as something else then the main function, define it to mainptr (it's used as a pointer variable) globally, this approach is portable. (Timo Kreuzer)
- Add "BDA Device Control Plug-in for MPEG2 based networks" stub (Johannes Anderwald)
- Sorry folks (Johannes Anderwald)
- Implement IBDA_Topology::GetNodeTypes, IBDA_Topology::GetNodeDescriptors, IBDA_Topology::GetNodeInterfaces, IBDA_Topology::GetPinTypes, IBDA_Topology::CreateTopology, IBDA_Topology::GetControlNode (Johannes Anderwald)
- Implement stub interfaces for control node, IBDA_DigitalDemodulator, IBDA_FrequencyFilter, IBDA_LNBInfo, IBDA_SignalStatistics (Johannes Anderwald)
- Simply construction of CBDAFrequencyFilter, CBDALNBInfo, CBDASignalStatistics (Johannes Anderwald)
- Find IBDA_NetworkProvider in filter graph (Johannes Anderwald)
- Check for IBaseFilter interface when constructing the CBDADeviceControl object (Johannes Anderwald)
- Add macro to enable/disable debug output (Johannes Anderwald)
- Query the BaseFilter for the target control pin in order to query for IKsObject interface, which is used to retrieve the real pin handle. (Johannes Anderwald)
- Pass the NodeId to constructors of IBDA_FrequencyFilter, IBDA_SignalStatistics, IBDA_LNBInfo, IBDA_DigitalDemodulator (Johannes Anderwald)
- Implement IBDA_DigitalDemodulator::put_ModulationType, IBDA_DigitalDemodulator::put_InnerFECMethod, IBDADigitalDemodulator::put_InnerFECRate, IBDADigitalDemodulator::put_OuterFECMethod, IBDADigitalDemodulator::put_OuterFECRate, IBDADigitalDemodulator::put_SymbolRate, IBDADigitalDemodulator::put_SpectralInversion (Johannes Anderwald)
- Implement IBDAFrequencyFilter::put_Frequency, IBDAFrequencyFilter::put_Polarity, IBDAFrequencyFilter::put_Range, IBDAFrequencyFilter::put_Bandwidth, IBDAFrequencyFilter::put_FrequencyMultiplier (Johannes Anderwald)
- Implement IBDALNBInfo::put_LocalOscilatorFrequencyLowBand, IBDALNBInfo::put_LocalOscilatorFrequencyHighBand, IBDALNBInfo::put_HighLowSwitchFrequency (Johannes Anderwald)
- Implement IBDASignalStatistics::get_SignalStrength, IBDASignalStatistics::get_SignalQuality, IBDASignalStatistics::get_SignalPresent, IBDASignalStatistics::get_SignalLocked, IBDASignalStatistics::put_SampleTime, IBDASignalStatistics::get_SampleTime (Johannes Anderwald)
- Implement IBDA_DeviceControl::StartChanges, IBDA_DeviceControl::CheckChanges, IBDA_DeviceControl::CommitChanges, IBDA_DeviceControl::GetChangeState (Johannes Anderwald)
- IBDA_DeviceControl interface now works with SageDvbRecorder(Windows XP SP3) (Johannes Anderwald)
- Move from using include guards to pragma once. (Amine)
- Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor) (Amine)
- Merge Wine-1.1.39 changes to shlmenu.c. (Aleksey Bragin)
- Maarten Kroese (Aleksey Bragin)
- SHELL_MergeMenus: Don't skip higher IDs if uIDAdjustMax is set to 0xFFFF (according to MSDN). (Aleksey Bragin)
- Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType (Johannes Anderwald)
- Comment out enumeration of IBDA_NetworkProvider (Johannes Anderwald)
- Set output variable to null to fixup lazy callers (Johannes Anderwald)
- Implement IBDA_PinControl::RegistrationContext (Johannes Anderwald)
- Register filter with IBDA_NetworkProvider when it is an input pin (Johannes Anderwald)
- IBDA_PinControl is now working (Johannes Anderwald)
- Perform property request by passing the request through IKsPropertySet interface. This is necessary as the pin handle might not have been created at the time the proxy plugin has been loaded (Johannes Anderwald)
- Set Reserved of KSP_NODE request to zero as required by the documentation (Johannes Anderwald)
- Reintegrate header branch (Timo Kreuzer)
- DDKAPI -> NTAPI (Timo Kreuzer)
- delete duplicate definitions (Timo Kreuzer)
- move files to right locations (Timo Kreuzer)
- Fix Mm64BitPhysicalAddress definition (Timo Kreuzer)
- Add a number of missing definitions (Timo Kreuzer)
- add XDK (Timo Kreuzer)
- Enhance debug traces (Johannes Anderwald)
- Extend device enumerator to support class enumerators of device interfaces (Johannes Anderwald
- Start implementing Network Provider for MPEG-2 based Networks (Johannes Anderwald)
- Implement IEnumMediaTypes interface (Johannes Anderwald)
- Implement IEnumPins interface (Johannes Anderwald)
- Partly implement output pin (IPin interface) for the network provider (Johannes Anderwald)
- Implement CNetworkProvider::GetState, CNetworkProvider::SetSyncSource, CNetworkProvider::GetSyncSource, CNetworkProvider::EnumPins, CNetworkProvider::QueryFilterInfo (Johannes Anderwald)
- HACK: comment out deletion of object until reference counting has been fixed (Johannes Anderwald)
- Fix crash when instantiating the filter with graphedt (Johannes Anderwald)
- Fix a bug (IEnumPins::Next should increase reference count on pin) (Johannes Anderwald)
- Fix a bug (IPin::QueryFilterInfo should increase reference count on parent filter) (Johannes Anderwald)
- Reference leakage is now fixed (Johannes Anderwald)
- Fix some missing strings in cpu.inf (Cameron Gutman)
- Use FORMAT_None as format specifier (Johannes Anderwald)
- Implement IBaseFilter::Stop, IBaseFilter::Run, IBaseFilter::Pause (Johannes Anderwald)
- Fix missing AddRef in IBaseFilter::QueryFilterInfo (Johannes Anderwald)
- Implement IBDA_NetworkProvider::RegisterDeviceFilter, IBDA_NetworkProvider::UnRegisterDeviceFilter (Johannes Anderwald)
- Partly implement ITuner::put_TuneRequest (Johannes Anderwald)
- ReactOS DVBT Network Provider is now able to tune a channel, though sound is missing (Johannes Anderwald)
- fix encoding (Matthias Kupfer)
- change size of dialog entry for fitting text (Matthias Kupfer)
- two small fixes (freeing resources on error) (Matthias Kupfer)
- Implement IBDA_EthernetFilter, IBDA_IPV4Filter, IBDA_IPV6Filter (Johannes Anderwald)
- Add bda.inf, kscaptur.inf (Johannes Anderwald)
- Remove DebugBreak (Johannes Anderwald)
- Implement IPin::Connect, IPin::ReceiveConnection, IPin::Disconnect, IPin::ConnectedTo (Johannes Anderwald)
- Remove spaces (Johannes Anderwald)
- DVBT Network Provider can now connect tv tuner in ReactOS (Johannes Anderwald)
- Dynamically register DVB network provider categories (Johannes Anderwald)
- Register BDA Filter components (Johannes Anderwald)
- Fix category description (Johannes Anderwald)
- Start implementing ActiveX Control for Streaming Video (Johannes Anderwald)
- Move and update assembler functions definition macros from port.h (added by Steven around revision 7000) to config.h as it is now in Wine. (Aleksey Bragin)
- Update related __ASM macros. (Aleksey Bragin)
- define interlocked_xchg_add to InterlockedExchangeAdd (Timo Kreuzer)
- partial sync of test.h (Christoph von Wittich)
- Cast the unused 0 in the ok macro to void to make clang happy (Timo Kreuzer)
- Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) (Timo Kreuzer)
- Latvian keyboard fixes by Arturs B., <mad_alchemist AT mail DOT ru> (Gregor Schneider; #5385)
- partly revert r47442 and apply a working fix by guarding some prototypes of functions that exist as intrinsics in #ifdefs, so we don't use them for gcc/clang (Timo Kreuzer)
- remove duplicated prototypes, when an inline function exists already (Timo Kreuzer)
- Convert to spec (Timo Kreuzer)
- DejaVu Sans Mono seems to have a bug which makes Windows and Arwinss report double max char width as compared to a real char width. Since only a monospace font could be used, measure exact char width using GetTextExtentPoint32W and use that value. (Aleksey Bragin)
- Add battery class installer dll. (Eric Kohl)
- Add missing 4th parameter to BatteryClassCoInstaller. (Eric Kohl)
- Fix 64bit compilation (Timo Kreuzer)
- Display Matching Device ID. (Eric Kohl)
- Display some more device properties. (Eric Kohl)
- devman.dll improvements by Viliam Lejcik: (Eric Kohl)
- display version info for selected driver file in 'Driver File Details' dialog (Eric Kohl)
- resource modification - changed some labels to read-only editboxes (Eric Kohl)
- Fixes bug #4875. (Eric Kohl)
- Use WLX_PROFILE_V2_0 instead of WLX_PROFILE_V1_0 and create an environment string that is filled with a single environment variable. WIP for bug #4102. (Eric Kohl)
- Fix the order of controls to match the expected tab order. This makes the focus stop jumping around like crazy when you press the Tab key. (Eric Kohl)
- Improve the DNS data exchange between the basic IP settings and the advanced DNS panel (Gregor Schneider)
- Simplify LaunchAdvancedTcpipSettings (Gregor Schneider)
- Save DHCP and DNS settings from the basic TCP/IP panel independently of each other (Gregor Schneider; #5193)
- Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver (Cameron Gutman)
- Part of the fix for bug 3716 (Cameron Gutman)
- Start the TCP/IP driver after we install a network adapter (Cameron Gutman)
- This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step (Cameron Gutman)
- Create the DhcpEnabled value in the registry (Cameron Gutman)
- Fix some German resources: (Gregor Schneider)
- Use BS_MULTILINE instead of embedding newline characters into text (Gregor Schneider)
- Make groupboxes and text fit into the window (Gregor Schneider)
- Load all LAN status icons with the same size (Gregor Schneider; #3813)
- Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) (Gregor Schneider; #3813)
- Fix LAN status icon resource (Gregor Schneider; #3813)
- Improve current network connection status icons. (Gabriel Ilardi)
- Updated French translation (Pierre Schweitzer)
- AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. (Michael Martin)
- Don't bulldoze our netsvcs key to install a service that doesn't even work yet (Cameron Gutman)
- Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there (Cameron Gutman)
- Reapply r47268 to fix DHCP (Cameron Gutman)
- Implement DeviceHandleToUsbDevice and remove IsHandleValid. (Michael Martin)
- Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. (Michael Martin)
- Stop the processing of Asynchronous List after the Control Request has been processed by controller. (Michael Martin)
- Misc changes. (Michael Martin)
- Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest (Pierre Schweitzer)
- sysreg doesn't like rain of SEMI-STUB debug (Sylvain Petreolle)
- Open Device Class with desired access (Johannes Anderwald)
- Implement SetupDiOpenDeviceInterfaceW (Johannes Anderwald)
- Store device settings in the "Device Parameters" key, as the kernel now does it too (Johannes Anderwald)
- Fixes display of AC97 device in audio cpl (Johannes Anderwald)
- Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended (Cameron Gutman)
- I'm not sure if this is synced with WINE, but if it is, they need this patch too (Cameron Gutman)
- Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally (Gregor Schneider; #4008)
- Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. (Eric Kohl)
- Create the user account directory without a prefix and append a prefix if the directory already exists. (Eric Kohl)
- Acquire the restore privilege before unloading a hive and remove it after unloading the hive. (Eric Kohl)
- Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. (Eric Kohl)
- Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. (Eric Kohl; #2972)
- Fixes bug #4008. (Eric Kohl; #2972)
- Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. (Timo Kreuzer)
- CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. (Eric Kohl)
- Fix Italian commonfiles (Gabriel Ilardi)
- Fix a typo and some Spanish environment variables (Gabriel Ilardi)
- german translation of sendto (Egon; #5411)
- Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. (Gabriel Ilardi)
- Several Czech translation updates by Radek Liska #5429. (Gabriel Ilardi)
- Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) (Timo Kreuzer)
- HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. (Timo Kreuzer)
- 41070 (tkreuzer) (Timo Kreuzer)
- HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. (Timo Kreuzer)
- 41070 (tkreuzer) (Timo Kreuzer)
- Removed NtUserGetScrollInfo and replaced it, move more type names in window object to WND. (James Tabor)
- When locking and unlocking regions, no need to use probe to check attribute space first before read or write access. The exception handling is a feature. (James Tabor)
- set fix line endings to preserve windows line endings (Matthias Kupfer)
- fixes issue with cancel button (Matthias Kupfer)
- fixes problems with unattended mode (Matthias Kupfer)
- temporarily enable device listing (setupapi) (Matthias Kupfer)
- More movement to WND with updates to related files. Added new scroll and get/post message routines. In the mix we did moved to the MONITOR structure. (James Tabor)
- More movement to WND with updates to related files. Removed unused code rewritten others. Review patch. (James Tabor)
- Patch that fixes VMWare boot (and should fix QEMu/KVM boot on the testbot): (sir_richard)
- Updated headers and related files. (James Tabor)
- Fix the window handle De/Reference throttler issue. Used mIrc. (James Tabor)
- System regions do not possess user attribute sections. . (James Tabor; #5124)
- Read the patch for more information. (James Tabor; #5124)
- Implement IntGdiSetBrushOwner for bug 5124. (James Tabor)
- Add system region support functions. (James Tabor)
- Merge aicom-network-branch (without NDIS changes for now) (Cameron Gutman)
- New noteworthy improvements include (in addition to the other improvements made in the commits that were reverted in trunk): (Cameron Gutman)
- Support for sending/receiving packets > 16KB in size (Cameron Gutman)
- Samba-tng works (Cameron Gutman)
- Tracert works (Cameron Gutman)
- Major speed and stability improvements (especially for TCP connections) (Cameron Gutman)
- Use ExAllocatePoolWithTag/ExFreePoolWithTag instead of memtrack (Cameron Gutman)
- Fixes to region support code. . (James Tabor; #5124)
- Remove CriticalRegion calls. (James Tabor)
- Remove CriticalRegion calls. (James Tabor)
- Fixed DCE masks, clipping and added support for mirror and process owned dce. (James Tabor)
- Reference: http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html (James Tabor)
- Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. (James Tabor)
- Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. (James Tabor)
- Wrong commit msg, removed debug prints and fixed RedrawWindow. This fix one part of the leak. (James Tabor)
- Properly assign error code when a real status error occurred. (James Tabor)
- Free the non user event container for WaitForInputIdle. (James Tabor)
- Fix the new GetClipRgn clipping wine test for EqualRgn and clip region note. (James Tabor)
- If dc is window owned and not class owned do not set class if null pdce. Added debug prints to locate reentrancy issues due to a race condition. (James Tabor)
- Add more checks to find dead windows. (James Tabor)
- remove unused library (Ged Murphy)
- Fix DrawMenuBar. (James Tabor)
- Transition the physical device into D0 state when we receive IRP_MN_START_DEVICE (Cameron Gutman)
- Actually do the power state transtion when a PDO receives IRP_MN_SET_POWER for DevicePowerState (Cameron Gutman)
- Fill the DEVICE_CHARACTERISTICS struct based on values in the acpi_device struct (Cameron Gutman)
- Lots of unhacking (Cameron Gutman)
- Stub-plement NtUserSetInformationThread for UserInitiateShutdown and UserEndShutdown. I think we're supposed to notify Winlogon at some point, and check for races. Part of new shutdown code. (sir_richard)
- Stop memory corruption when InstalledDisplayDrivers has more than one driver in the list. Note that driver loading is inherently broken right now, as the list of drivers is not parsed properly (this breaks eVb's VGA/VBE driver). (sir_richard)
- EngCreateBitmap/IntCreateBitmap don't make much sense (code written back in 2004...). RLEs don't have scanlines by definitions, bit depth alignments and sizing is not done, newer display formats (compressed) are not supported correctly, zero-width surfaces fail because the size is ignored during scanline calculation, etc. These bugs caused eVb's test VGA display driver to fail as it needs to create a zero-depth shadow surface, which would end up with pv0Bits == NULL in the current implementation (and crash during ROPs/BitBLTs). Attempted to rewrite as much of it to 1) make Windows drivers work with it 2) continue the current hacks needed for ReactOS drawing. Note that the broken IntCreateBitmap is still used by non EngXXX interfaces to reduce the change of breakage, but keep in mind the function is entirely wrong. (sir_richard)
- Revert accidental changes to IntCreateBitmap. (sir_richard)
- Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced. (sir_richard)
- Prevent a possible memory leak. (Kamil Hornicek)
- Use SURFACE_FreeSurfaceByHandle so we don't hit the "Object must not have a handle!" assert in GDIOBJ_FreeObj. (Kamil Hornicek)
- Fix acpi_bus_receive_event and acpi_bus_generate_event which will be used for button events later (Cameron Gutman)
- Uncomment and fix the locking code that protects the event queue and driver list (Cameron Gutman)
- When adding new glyph cache entry convert the glyph bitmap with proper alignment to comply with the new code in EngCreateBitmap and remove the corresponding hack from SURFMEM_bCreateDib. (Kamil Hornicek; #5244)
- Remove a pedantic assert to allow compressed bitmaps. (Kamil Hornicek; #5255)
- 45127 (sserapion) (Timo Kreuzer)
- Kill debug warnings of dc ownership. (James Tabor)
- Implement MakeInfoDC and support functions. Dedicated to Timo. (James Tabor)
- Handle keyboard input when no windows are present (Andrey; #3560)
- Since r43772 we now normalize VK_LCONTROL/VK_RCONTROL to VK_CONTROL rather than VK_LCONTROL (and ditto for shift/alt), so update SetKeyState to handle this. Fixes bug 4945. (Jeffrey Morlan)
- Update text and background brush properly. Fixes wrong colors in radio buttons in Firefox. Fix by Jerome Gardou. (Timo Kreuzer; #5311)
- rename w32k.h to win32k.h and win32k.h to win32kp.h (Giannis Adamopoulos)
- Do not do callbacks to user mode while holding system message queue lock (Giannis Adamopoulos; #4926)
- Fix when WH_MOUSE_LL and WH_JOURNALRECORD are called (Giannis Adamopoulos; #4926)
- Fix a problem where application that used WH_CBT hook procedures were receiving destroy window notification on windows that were never created. The window was never created because the application had returned a non zero value when it was notified of window creation, which effectively destroys the window and returns failure for window creation. See CBTProc Function on MSDN. Fixes bug #4461. (Michael Martin)
- When calling NtUserCallNextHookEx check that the current hook is not the first in the chain. If so don't call the hook proc and just return, as it has already been called and it makes no sense for the NextHook function to call the first hook proc. Fixes bugs #4461 and #4407. (Michael Martin)
- The previous commit claiming to fix bug #4461 was incorrect, it may have actually fixed bug #5320. Testers please test. (Michael Martin)
- Fix IntDumpHandleTable, it was very broken. (Timo Kreuzer)
- bug> (Johannes Anderwald)
- The timer implementation uses a bitmap to store window-less timers. As an optimization to find the first free index, it uses the variable "HintIndex" which points to the first timer index. In order to find the next free index, the RtlFindClearBitsAndSet function is used. When a new timer is allocated, the "HintIndex" variable is increased, which increases the search offset. Now if more than NUM_WINDOW_LESS_TIMERS (1024) timers are allocated, no more timers can be allocated because RtlFindClearBitsAndSet will claim no more index are available, because the free indexes are below the search offset. (Johannes Anderwald)
- bug> (Johannes Anderwald)
- fix> (Johannes Anderwald)
- Everytime a timer gets freed, store the freed index in "HintIndex". As a result the timer implementation will always find a free timer index (when there is one) (Johannes Anderwald)
- fix> (Johannes Anderwald)
- Add an assert to PostTimerMessages to catch null pointer windows (Johannes Anderwald)
- Add another assert to catch special windows (Window == 1) (Johannes Anderwald)
- Improve check if the window is '1' (Johannes Anderwald)
- Revert the hack done in 47059 to apply a better solution. (Michael Martin)
- co_IntCreateWindowEx: Add the WNDS2_WMCREATEMSGPROCESSED flag to state2 member of WND after sending the WM_CREATE message. (Michael Martin)
- By setting this flag it can be examined elsewhere to determine if the window was created successfully. (Michael Martin)
- co_UserDestroyWindow: Examine above mentioned flag to make sure the windows was created before calling hook procedure to inform of destroying window. (Michael Martin)
- Only call ExFreePool.. if Buffer is not NULL, which can occur if the Unicode String MessageNameUnsafe coming from user mode is incorrect. Fixes a bugcheck when using OllyDbg V2.0. (Michael Martin)
- IntMouseInput: Add the state of virtual keys to wParam before calling MsqInsertSystemMessage. Fixes bug #5066. (Michael Martin)
- Add and Remove MK_XBUTTON1/2 flags to CurInfo->ButtonsDown vice XBUTTON1/2. (Michael Martin)
- Code based on patches in bug #5066. (Michael Martin)
- Gabriel Ilardi: (Aleksey Bragin)
- Update spanish %temp% path, part of bug 2482. (Aleksey Bragin)
- co_UserDestroyWindow: ThreadInfo->pDeskInfo->hShell holds the hWnd of the Shells Desktop Window. Set it to NULL if that windows is being destroyed. Fixes bug #4902. (Michael Martin)
- Fix sending WM_KILLFOCUS when we give focus to a window of a different thread (Giannis Adamopoulos ; #1546 ; #1603)
- Fix broken parameter passing from EngMaskBitBlt to (Alpha)BltMask. It was passing the wrong surface and the wrong point. Rename some parameters to reflect what their usage is. Add ASSERTs to make sure noone passes useless parameters. Fixes crippled text in startmenu. (Timo Kreuzer; #4379)
- The whole code is broken by design, anyway it will go away, once the new text rendering code is done. (Timo Kreuzer; #4379)
- Modify how non-queued messages are send that originate from the Win23k subsystem. (Michael Martin)
- Non-queued messages must go directly to the windows WNDPROC and not through the message pump (previews ROS behavior). (Michael Martin)
- More importantly sending these messages must not cause the sending thread to block waiting for a reply. (Michael Martin)
- Add a messaging handling function that always sends message from Win32k to the windows thread without waiting. (Michael Martin)
- This will also allow the implementation of message call back later. (Michael Martin)
- Modify PackParam and UnpackParam to accept a BOOL value to determine whether LParam needs to be allocated from NonPagedPool. (Michael Martin)
- Use with new message handling as if message sent to another thread have any pointers they must be allocated from NonPagedPool. (Michael Martin)
- Fixed broken logic in can_active_window function and co_WinPosShowWindow. (Michael Martin)
- Fixed broken logic in co_IntSendActivateMessages. (Michael Martin)
- The WM_ACTIVATEAPP message was being sent to every window belonging to the desktop twice. (Michael Martin)
- Once with flag saying window was activated and again with deactivated. (Michael Martin)
- These changes should fix bugs #969, #3171, #4501, #4676, #4677, #4948. (Michael Martin)
- Bring back support for RLE compressed bitmaps. (Kamil Hornicek; #5276)
- Merge the decompress functions for 4bb and 8bpp bitmaps to one generic function. (Kamil Hornicek; #5276)
- Simplify SURFMEM_bCreateDib a bit by not allowing PNG/JPEG compression at all. (Kamil Hornicek; #5276)
- Check the supplied scancode instead of the state buffer whether a key is up (Gregor Schneider; #3727)
- Fixes the calculator keyboard input regression introduced with r35117 (Gregor Schneider; #3727)
- Ref: http://www.osronline.com/ddkx/w98ddk/keycnt_4ilz.htm and wine implementation (Gregor Schneider; #3727)
- When message are sent without waiting a reply (non-queued messages) the message queues are referenced and dereferenced in the call. (Michael Martin)
- Message removal and cleanup functions for queues expected a reference on the queue. Add checks to determine if the message is a non-queued message and if so release memory for those that had pointers and more importantly skip dereferencing the queues. Possibly fixes random crashes and memory leaks. (Michael Martin)
- The description and changes made regarding WM_ACTIVATEAPP messages in r47126 were partially incorrect, the code was mostly correct. (Michael Martin)
- Change the first parameter type from HWND to PWINDOW_OBJECT for IntKillTimer as it makes more sense. (Michael Martin)
- Activate IntSetTimer, already done by James. (Michael Martin)
- Add flag TMRF_DELETEPENDING. Destroy timers when this flag is set in ProcessTimers to allow any timers that have expired to have the WM_SYSTIMER/WM_TIMER messages posted to message queue before being destroyed. (Michael Martin)
- Fix error in FindTimer, it was always returning a Timer and it needed to return NULL if the specified timer did not exist. (Michael Martin)
- Fix error in PostTimerMessages, need to handle cases where the Window object is NULL which occurs when requesting messages for any window belonging to the thread. (Michael Martin)
- In co_IntPeekMessage, simply call PostTimerMessages to have WM_SYSTIMER/WM_TIMER messages posted for expired timers. Remove call to old timer message handling. (Michael Martin)
- TODO: Code using the old timer implementation needs removed. (Michael Martin)
- Fixes bugs #2393, #3634, #2835. Commit dedicated to JT and Mr. Roboto. (Michael Martin)
- Check that the thread is not in cleanup before attempting to do anything related to it. Add a couple asserts for sanity. (Michael Martin)
- Rename co_InflateRect to RECTL_vInflateRect and move it to rect.c (Giannis Adamopoulos)
- WM_WINDOWPOSCHANGED should contain the final window position (Giannis Adamopoulos)
- Store the monitor work area in the monitor and not in the desktop (Giannis Adamopoulos)
- Correctly adjust values returned from co_WinPosGetMinMaxInfo (Giannis Adamopoulos)
- Set MasterTimer initial value to NULL and Initialize MasterTimer at the beginning of RawInputThreadMain before doing anything else. (Michael Martin)
- Add ASSERTs to catch if MasterTimer is NULL. (Michael Martin)
- Move the initialization of MasterTimer into InitInputImp which is called from win32k DriverEntry routine instead of initializing it in the secondary thread RawInputThreadMain. (Michael Martin)
- Remove WS_EX_SETANSICREATOR from Ex style in co_IntCreateWindowEx (Timo Kreuzer)
- For the Low Level Mouse Hook (WH_MOUSE_LL), input can come from the mouse driver or mouse_event. Both of which result in a call to UserSetCursorPos. (Michael Martin)
- UserMode SetCursorPos API also ends up here. Add BOOL parameter that can be used to determine if hooks are to be called. (Michael Martin)
- Move the code related to calling the hook procedure from MsqInsertSystemMessage into UserSetCursorPos and call the hook procedure here if needed. (Michael Martin)
- If hook procedure returns non 0 value. Dont insert the system message. (Michael Martin)
- Fixes a recursive call to the hook procedure resulting thread using to much stack exposed by user32 winetest for input. (Michael Martin)
- When destroying a window, generate a mouse move message, so that the underlying window is notified about the mouse position and can update the pointer if neccessary. Fixes bug #4499 and bug #3893 (Timo Kreuzer; #4499)
- Minor revert of 47281 to fix OO installer textboxes. (Michael Martin)
- Delete old clipregion only and set a new one, if it could be created already, to avoid setting a NULL region. (Timo Kreuzer; #4431)
- Refactor NtGdiGradientFill, use 1 SEH block instead of 2, replace IntGdiGradientFill with GreGradientFill, don't lock the DC in UserDrawCaption. (Timo Kreuzer)
- Implement DestroyTimersForWindow and call it instead of MsqRemoveTimersWindow when destroying a window. (Michael Martin)
- Fire NewMessages event when cleaning up thread so that threads dont wait for new messages that will never be received. Fixes a problem where some application that use timers dont completly exit. (Michael Martin)
- IntSetTimer: Dont try to raise a timer from the dead. Once the TMRF_DELETEPENDING flag is set, let it be destroyed. (Michael Martin)
- co_MsqWaitForNewMessages: Call the wait without a timeout value as now when the timer expires the NewMessages event will be set to exit the wait. (Michael Martin)
- Message Queue specific timer code and old time queuing code is now dead. It will be removed later when we are happy with new timer implementation. (Michael Martin)
- GreGradientFill: don't forget to unlock the DC (Timo Kreuzer)
- Remove use of TMRF_DELETEPENDING for deleting timers as this was a bad idea. (Michael Martin)
- Timers need to be deleted immediately as waiting for them to be deleted resulted in some processes running out of handles. (Michael Martin)
- Fixes richedit winetest for editor. (Michael Martin)
- Add flag TMRF_TIFROMWND for timers created from user mode so the thread stored in the timer object is from the window and not caller. (Michael Martin)
- Fixes an issue where FireFox would not show any of its windows and looked dead. (Michael Martin)
- When creating and deleting timers, If the window is non null and IDEvent is 0 then the IDEvent is changed to 1. (Michael Martin)
- When modifying timer list use UserEnter and Leave instead of a Critical Region only. (Michael Martin)
- The timer is created usingUserCreateObject. It may be a good idea to save the handle in the timer object so that it can be deleted later. (Michael Martin)
- Dereference the object before attempting to delete it. (Michael Martin)
- For types FNID_SENDMESSAGECALLBACK call co_IntSendMessageWithCallBack to put the message in the send queue. (Michael Martin)
- Rewrite code for when messages have a completioncallback (Michael Martin)
- When processing and deleting timers use a seperate timer lock instead of using the global user lock. (Michael Martin)
- Rename co_IntCreateWindowEx to co_UserCreateWindowEx and rewrite it (Giannis Adamopoulos)
- Fix the sequence of messages sent in co_UserCreateWindowEx (Giannis Adamopoulos)
- Allow menus to be shown over the taskbar (Giannis Adamopoulos; #5415)
- Call CsrInit in NtUserInitialize so we can remove PrivateCsrssInitialized (Giannis Adamopoulos)
- Romove a reactos only syscall (NtUserGetClassLong) (Giannis Adamopoulos)
- Remove UserGetClassLongPtr, UserGetWindow, UserGetWindowLong, IntGetOwner. Instead access objects directly (Giannis Adamopoulos)
- In WINDOW_OBJECT store pointer to the ownder window instead of a handle (Giannis Adamopoulos)
- CreateWindow: initialize window position after sending WM_GETMINMAXINFO message (Giannis Adamopoulos)
- assert -> ASSERT (Gregor Schneider)
- Free allocations with the tag that was used to allocate them (Gregor Schneider)
- Use TAG_GDIICM tag for ICM allocations (Gregor Schneider)
- Use TAG_PALETTE for palette entries (Gregor Schneider)
- Remove mapping codes, the functions from pre r9000 don't even exist anymore (Gregor Schneider)
- Use TAG_KEYBOARD for keyboard layouts (Gregor Schneider)
- Free TAG_ACCEL and TAG_DRIVER allocations with their tags (Gregor Schneider)
- Forgot to remove this ASSERT for r47636 (Cameron Gutman)
- Change the number of windowless timers from 1024 to 32768. (Michael Martin)
- When destroying windowless timers, clear the bit number (IDEvent) in the bitmap so the bit number can be reused. (Michael Martin)
- Only create a windowless timer if there is no windowless timer matching IDEvent. (Michael Martin)
- Fixes case where applications create too many windowless timers and/or run out of windowless timers. (Michael Martin)
- Tag more pool allocations (Gregor Schneider)
- Tag even more pool allocations (Gregor Schneider)
- Remove dead code, adjust comments (Gregor Schneider)
- Tag the remaining untagged pool allocations (Gregor Schneider)
- Use GDITAG_RBRUSH instead of hardcoding the tag (Gregor Schneider)
- Merge GDIOBJ related changes from yarotows (Jérôme Gardou)
- GDIOBJ_(Share)LockObj : return NULL on NULL input, avoiding debug spew (Jérôme Gardou)
- Set NULL process owner when setting READY_TO_DIE flag of a gdiobj (Jérôme Gardou)
- So now GDIOBJ_ShareUnlockObj can claim ownership before trying to delete the object (Jérôme Gardou)
- Set DC_DIBSECTION dirty flag when a DIB section is selected, not when one is created. (Jérôme Gardou)
- Chek if there is something to do in GDIOBJ_SetOwnership before doing it (Jérôme Gardou)
- get rid of ROS_DC::BitsPerPixel. (Jérôme Gardou)
- 1 - It was a hack. (Jérôme Gardou)
- 2 - Its use was inconsistent. (Jérôme Gardou)
- co_IntSendMessageWithCallBack is called for two reasons; for messages that originate from win32k and from user mode when using Callbacks. (Michael Martin)
- For both cases do not do anything with the sendqueue member of message struct and do not add the message to the senders dispatch message list. (Michael Martin)
- In msgqueue related functions, check if the message is a nowait messages before attempting to remove and entry from the dispatch message list as it doesnt exist. (Michael Martin)
- Fixes a NonPagedPool corruption that was occurring on regtest bootcd. Thanks Caemyr for testing. (Michael Martin)
- Add Check for spwndNext being null before accessing any of the members. Fixes bugcheck when using cubicexplorer. (Michael Martin)
- update olepro32 base address. (Sylvain Petreolle)
- The Win32ClientInfo TEB field can be bigger than the CLIENTINFO structure. (Timo Kreuzer)
- Only the CompletionCallback member determines if a callback is needed. Checking the SenderReturn is unwanted and this variable was never initialized which could cause bogus callback attempts. Just remove the BOOL variable SenderReturned and directly check if Message->DispatchingListEntry.Flink is NULL before attempting to remove the message from senders queue. Noticed by Timo. (Michael Martin)
- Fix midiOutOpen and midiInOpen prototypes. (Sylvain Petreolle)
- Change percision of win32k timers to 0.5 miliseconds. (Michael Martin)
- Remove Destroy parameter from FindTimer as it is just odd and call RemoveTimer where needed. (Michael Martin)
- PostTimerMessages: No need to continue looping the remainder of the timers once the target timer has been found and message posted to message queue. (Michael Martin)
- Set caret blink rate for global server information too. (James Tabor)
- Remove dead code as in the old SetTimer and KillTimer functions. (Michael Martin)
- Fix typo. (Sylvain Petreolle)
- Dedicated to Physicus (Sylvain Petreolle)
- move set of msg-time (for messages) back to msg queue (msg time is needed for all mouse events not only mouse move) (Matthias Kupfer)
- ClickLock will work again (Matthias Kupfer)
- Revert changes done in 47325 which partially broke mouse hooks. (Michael Martin)
- If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks. (Michael Martin)
- Forgotten in r47924. Change name of BOOL parameter for UserSetCursorPos to better describe its purpose as done in c source. (Michael Martin)
- Remove old win32k timer code. (Michael Martin)
- Get rid of rosdc::hVisRgn, as in yarotows (r46372) (Jérôme Gardou)
- Dereference CursorIcon Object in NtUserCallOneParam (Jérôme Gardou)
- Shared Icons need their bitmaps to be unowned (Jérôme Gardou)
- Bye bye NtUserCreateCursorHandle. (Jérôme Gardou)
- Thanks GedMurphy for explaining me how to suppress that. (Jérôme Gardou)
- Please clean win32k after this commit. (Jérôme Gardou)
- Properly initialize hVisRgn in CLIPPING_UpdateGCRegion (Jérôme Gardou)
- This fixes a whole bunch of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!", and probably some bugs. (Jérôme Gardou)
- Dedicated to encod3d. (Jérôme Gardou)
- rewrite UserDrawIconEx, taken from yarotows, with same small modifications. (Jérôme Gardou)
- Fixes a whole bunch of user32:cursoricon tests (Jérôme Gardou)
- Protect access to the result pointer from KeUserModeCallback with SEH. Fixes a possible kernel mode crash. (Timo Kreuzer)
- Copy the alpha channel as well when doing RGB<->BGR color translations. (Timo Kreuzer)
- Fix NtGdiMaskBlt to handle patterns correctly, use SRCAND, which is more optimized, instead of DSTERASE, and set fore and background colors correctly to not destroy alpha channel. (Timo Kreuzer)
- Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. (Timo Kreuzer; #4563)
- If a NULL surface is passed, pass on NULL pso to the driver function (Timo Kreuzer; #4563)
- For SetTimer nIDEvent can be 0 in which case return 1. Zero still needs to be used for nIDEvent when killing the timer. Fixes bug 5553. (Michael Martin)
- Modify windowless timers to use IDEvent values decrementing from the max number of windowless timers vice incrementing from 1. Done to match windows behavior. (Michael Martin)
- co_IntTranslateMouseMessage: properly initialize *HitTest and only send WM_NCHITTEST when the message is going to be removed (Jan)
- co_IntPeekMessage: Prevent possible use of uninitialized HitTest by ProcessMouseMessage() (Jan)
- Fixes bug 2139 (Jan)
- Allocate the DCs prgnVis in DC_AllocDC, instead of "on demand" in GdiSelectVisRgn and properly handle failure case. This fixes a possible crash, when running out of gdi handles. (Timo Kreuzer)
- Use the object type index, not the shifted full object type to decide what to do with an object in NtGdiDeleteObjectApp. Fixes leaking derived types such as pens. (Timo Kreuzer)
- When doing a cleanup for a DC, check, if the default brushes are set, before dereferencing them. Fixes a possible kernel mode crash. (Timo Kreuzer)
- Remove some obsolete casts (Timo Kreuzer)
- Move the allocation of the vis region of the DC to a later position, so that all mandatory fields are initialized before we try to delete the DC in failure case. Fixes yet another possible crash. (Timo Kreuzer)
- Seperate DC_vSetLayout from NtGdiSetLayout and save the old value before setting the new one. (Timo Kreuzer)
- Rework EngSetPointerShape, to first allocate the neccessary surfaces, before deleting the old ones. Also check in IntShowMousePointer if a saving surface is present. This way a failure to allocate a surface will not result in a crash, but keep the old mouse pointer. (Timo Kreuzer; #5402)
- Mouse messages can be sent before the desktop is initialized. Check for this and return false if its not. FIxes assert when moving mouse before desktop is up. (Michael Martin)
- Fix large amount of set-but-unused variables. Most of these seemed to be old/unfinished code, however in IntGdiPaintRgn an actual bug seems to have been found. (sir_richard)
- Make IntGdiPaintRgn return the status of the operation, not always TRUE. (sir_richard)
- Giannis Adamopoulos: Only dereference a class if it's valid, should fix Heroes 3 crash. (Aleksey Bragin; #5606)
- Fix a bug, where a failure to allocate the kernel mode WINDOW_OBJECT would cause a page fault, because the WND was still allocated, but never initialized, and Wnd->rpdesktop was then dereferenced to free the WND again. (Timo Kreuzer)
- Call HCBT_CREATEWND, WM_NCCREATE and WM_CREATE with correct style and position (Giannis Adamopoulos)
- Deduplicate FSRTL_COMMON_FCB_HEADER_LAYOUT in ntifs.h (Amine Khaldi)
- Move ECP_HEADER from the ntifs template to fsrtltypes.h (Amine Khaldi)
- Make sure FORCEINLINE comes as first in declarations. (Amine Khaldi)
- Missed this one (FORCEINLINE) (Amine Khaldi)
- WmiTraceMessageVa is NTAPI, not __cdecl. (Amine Khaldi)
- Introduce some _ANONYMOUS_STRUCT and NONAMELESSUNION based definitions. (Amine Khaldi)
- When doing 1BPP -> 8BPP conversion set all 8 bits not only the LSB. (Freetype devs were notified of this issue) (Kamil Hornicek; #5244)
- The FT_MulFix patch is not neccessary anymore, the 1BPP -> 8BPP conversion patch will be applied again right after this. (Jerome; #4537)
- Remove setjmplongjmp.s (Timo Kreuzer)
- Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. (Aleksey Bragin)
- Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325) (Timo Kreuzer)
- 46538 (Timo Kreuzer)
- 46539 (Timo Kreuzer)
- add back getopt.c (needed by rosapps) (Timo Kreuzer)
- add ofmt_stub.c and cx_pure_virtual.c (Timo Kreuzer)
- fix a typo (Timo Kreuzer)
- link mingw_common to oldnames and ntdll (Timo Kreuzer)
- Remove broken _fmode declaration (Timo Kreuzer)
- Remove getopt from mingw lib and put it into it's own static library (Timo Kreuzer)
- change crt="dll" to crt="static" for the mingw startup libs, to avoid things like importing from itself. (Timo Kreuzer)
- Add a temporary hack to fix amd64 compilation for some modules. (Timo Kreuzer)
- Just use UNIMPLEMENTED. (sir_richard)
- Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. (Timo Kreuzer)
- Fix warning about uninitialized variable (Timo Kreuzer)
- Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. (Eric Kohl)
- When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. (Eric Kohl)
- Add a device description for PNP0A00 (Cameron Gutman)
- Fix the class GUID so devices appear in the correct category in device manager (Cameron Gutman)
- Remove trailing spaces on some device descriptions (Cameron Gutman)
- Remove the "(UniATA)" at the end of some device descriptions (Cameron Gutman)
- Add -fms-extensions for arm build (Timo Kreuzer)
- Add _NT_TIB_KPCR to compensate for a missing NT_TIB (hackfix) (Timo Kreuzer)
- add KERNEL_STACK_SIZE & co for arm (Timo Kreuzer)
- Add missing KeGetCurrentThread prototype for arm (Timo Kreuzer)
- define INTERLOCKED_RESULT for X86 only (Timo Kreuzer)
- Add _CONTEXT and _EXCEPTION_RECORD forward declarations (Timo Kreuzer)
- remove scsiport from arm build (Timo Kreuzer)
- Compile scsiport.c for freeldr only on x86 builds (Timo Kreuzer)
- revert r46742 (Timo Kreuzer)
- Reenable isapnp (Cameron Gutman)
- Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten (Cameron Gutman)
- Nasty graphical glitches still remain in VGA mode (Cameron Gutman)
- Fixes bug 2073 and bug 4192 (Cameron Gutman)
- Add 'PortSubClass' values for serial and parallel ports. (Eric Kohl)
- Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)
- Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)
- Fix support for non Headless scenarios as well. (Anton)
- rapps (Daniel Reimer)
- Update openoffice 2.4 Links to a new and working mirror
- Add Opera 9 to rapps.
- Update OOo to 3.2.1 and the last time... fix the FF2 link.
- Update rapps database to most recent Versions of all apps.
- Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing.
- Updated VB6, VC2005, VC2008 links according to winetricks.
- Update the rapps download list.
- Fix the SeaMonkey Mirror.
- Try to fix FF2 Download.
- Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly.
- Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself)
- Update the rapps Database to a valid FireFox Link once more.
- Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath)
- Update Rapps Links and add the two RosBE Addons.
- Update some more apps. (OpenOffice 3.2.0, SciTE 2.03)
- DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2.
- Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps.
- Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps.
- Update VLC to 1.1.0
- Add SuperFinder XT to rapps.
- piperead (Daniel Reimer)
- Update piperead to Version 0.3 (Jan Roeloffzen)
- Updated piperead (Jan Roeloffzen) Bug 5146
- Bug 5501: Add Wing32 support by Carlo Bramini
- user32: DrawText: CJK and Thai line-wrapping (Katayama Hirofumi)
- appwiz: check if path is valid (Katayama Hirofumi)
- Put Vizzini's "csq.h" in the Public Domain with permission from the author: (Colin Finck)
- Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. (evb)
- NANDFlash tool for building OMAP3 FLASH Images for DevBoard and QEMU-Maemo. (evb)
- ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU). (evb)
- Boots to blue screen with white text to indicate checkpoint. (evb)
- Enable serial output. (evb)
- Forgot to change SARCH back to Versatile. (evb)
- Plugin support for booting FreeLDR when used as initrd on QEMU command-line. (evb)
- Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now. (evb)
- Start work on UI. Serial output is now only for debugging, not usual console. (evb)
- Need PL045 Keyboard code to handle KbHit/GetCh. (evb)
- Have PL011 code ready for MachVideo routines, coming soon... (evb)
- Start stub of environment functions. (evb)
- Add config interface start (PciReadWriteConfigSpace, PciReadSlotConfig) (evb)
- Add PDO_EXTENSION structure and PCI_FUNCTION_RESOURCES, now delete #if0 in old code since PDO_EXTENSION is now exist defintion (evb)
- Add ID Class/Subclass to description functions (PciGetDeviceDescriptionMessage, PciGetDescriptionMessage), use pciclass.mc from sir_richard (evb)
- New debug: PciDebugDumpCommonConfig (evb)
- Enable non-OOB mode for Versatile. (evb)
- Enable RAMDISK support in LLB. (evb)
- Build commandline for OS Loader (FreeLDR). (evb)
- Now ready to start loading freeldr.ini (evb)
- Add support for ram disk offset (.IMG file is a RAW image, partition starts later...) (evb)
- Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device. (evb)
- Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB). (evb)
- Now FreeLDR.ini is read, and crash happens because UI routines are all NULL. (evb)
- Add stubs for video mach functions and update minor to 1.3. (evb)
- Implement some simple video routines. (evb)
- Fix usable RAM not to include loader code and ram disk (up to 32MB). (evb)
- FreeLDR menu now appears, need GetTime for counter. (evb)
- Add PL031 RTC code for Versatile. (evb)
- Add RTC time to TimeInfo convert. (evb)
- Implement FirmWare GetTime function. Countdown in FreeLDR now working. (evb)
- Switch to bootvid 8x13 font (closer to PC/VGA experience). (evb)
- Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows". (evb)
- Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. (evb)
- Implement KbHit Firmware routine. (evb)
- It is now possible to interact with FreeLDR using the keyboard. (evb)
- Video Miniport driver not use ntddk.h, but miniport.h. But, Reactos miniport.h is empty! Add some definitions to miniport.h to get simple drivers to compile, so now can remove ntddk.h from VGA/VBE/XBOX miniports! (evb)
- Video Port driver should not use either, but too many changes required. So, define __BROKEN__ to allow ntddk + miniport together. (evb)
- Add VideoPortIsNoVesa API definition. Not implemented in ReactOS, used to disable VESA in F8 "Standard VGA Mode". Should implement for VGA-only support on broken VESA machine, and for test. (evb)
- Fix includes in richard's driver. (evb)
- Fix wrong calling to VideoPortCreateEvent. He got parameters all mixed up~ (evb)
- Change NANDFlash again for Versatile support. Now the LLB and OS Loader are created in one binary blob (loaded with -kernel), while the RAMDISK is loaded with -initrd. (evb)
- Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR... (evb)
- Define memory map structure for Versatile board/QEMU and send to OS Loader. (evb)
- Many hack removed. (evb)
- Better efficency use of memory layout. (evb)
- Region at 0x800000 now available for FreeLDR use to load kernel files. (evb)
- Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen. (evb)
- Use better stack address as defined in memory map. (evb)
- Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen. (evb)
- Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later. (evb)
- Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging. (evb)
- Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later. (evb)
- Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later. (evb)
- Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!). (evb)
- Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC. (evb)
- Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now. (evb)
- Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later. (evb)
- Need to investigate sharing code with WinLDR. (evb)
- MMU enabled and Printf/LCD output works!. (evb)
- Fix text output (evb)
- Allow for more than just one parameter on the bootROM command line (sepearate with commas). (evb)
- Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets. (evb)
- Last code in PciScanBus: call to PciGetfunctionLimits now implement (call PcipGetfunctionLimits if PciSkipThisFunction say no) (evb)
- PcipGetfunctionLimits support PCI_HACK_CRITICAL_DEVICE and PCI Debug Device by use IPI code (PciExecuteCriticalSystemRoutine implement) (evb)
- PciConfigurators table define for Device, PCI-to-PCI (PP) Bridge plus CardBus Bridge but all configurator stub now (evb)
- Configurator chain: Init (Massage) -> [WRITE INIT] (PciWriteLimitsAndRestoreCurrent) -> Restore -> SaveLimit -> SaveCurrent (evb)
- Support ExpectedWritebackFailure (evb)
- Fix bug in PciApplyHacks (found by me testing sir_richard code) (evb)
- Implement logical keyboard interface. Converts scan code to ASCII codes (just ok). (evb)
- Implement firmware ConsGetCh based on keyboard interface. (evb)
- Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error. (evb)
- Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc). (evb)
- Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK). (evb)
- Make environment-get function read command-line. (evb)
- Allocate RAM memory structure portably. (evb)
- Validate board info on boot. (evb)
- ntstrsafe.h] (Timo Kreuzer)
- Fix a number of parameter types (LPSTR/LPCSTR instead of PCHAR, PCCHAR) This is not the same, PCCHAR is a char * not a const char * (Timo Kreuzer)
- CRT (Timo Kreuzer)
- add _mingw_mac.h from ming-w64 and include it into _mingw.h
- Update _CRTIMP definition
- Fix definition of _wctype
- onexit is not _CRTIMP
- MINGW (Timo Kreuzer)
- Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325)
- time.h (Timo Kreuzer)
- Add missing asctime_s and localtime_s, don't include time_s.h anymore
- setjmp.h (Timo Kreuzer)
- Add mingw_getsp as inline function
- reactos.dff (Timo Kreuzer)
- make explorer.exe and ntvdm optional
- dbghelp.h, imagehlp.h (Timo Kreuzer)
- fix LOADED_IMAGE, UpdateDebugInfoFile, UpdateDebugInfoFileEx, ReBaseImage
- WIN32K, WIN32CSR (Timo Kreuzer)
- Get rid of FASTCALL specifier for static functions and functions with no parameters.
- GDI32 (Timo Kreuzer)
- GetTextExtentExPointI and GetTextExtentPointI take an array of glyph indices, not characters. Pass a flag GTEF_INDICES (This is a reactos specific definition and not exactly like on Windows XP, but the real names/values are undocumented and this is the easiest way.) to NtGdiGetTextExtent/NtGdiGetTextExtentExW and handle this flag in TextIntGetTextExtentPoint to account for this.
- Fixes bug 3481
- MSAFD, PSDK (Cameron Gutman)
- Merge part of r45435
- Merge r48011 from aicom-network-branch
- winnt.h (Timo Kreuzer)
- Remove definition of UNW_FLAG* constants. They don't belong here.
- WDMAUD.DRV (Johannes Anderwald)
- Apply changes from mmixer library
- Tested in Vbox with Winamp / ReactOS mplay32
- MMIXER, WDMAUD_KERNEL (Johannes Anderwald)
- Implement retrieving device path
- KSPROXY, MSDVBNP, MSVIDCTL, BDAPLGIN (Johannes Anderwald)
- Implement DllRegisterServer, DllUnregisterServer for those components
- Add msdvbnp, msvidctl to build
- Add msdvbnp, bdaplgin, msvidctl to bootcd
- KSPROXY, MSDVBNP (Johannes Anderwald)
- Remove remaining DebugBreak
- Add debug traces
- HIVESYS.INF (Cameron Gutman)
- Enable kmtest
- shellapi.h (Gabriel Ilardi)
- Fix build copy pasta spotted by encoded
- WINGDI.H (Timo Kreuzer)
- Add missing GetCharWidthI, GetTextExtentExPointI, GetTextExtentPointI
- tchar.h (Timo Kreuzer)
- enable _tcsnlen definition
- WIN32K, USER32 (Jerome Gardou)
- Get rid of ONEPARAM_ROUTINE_CREATECURICONHANDLE
- DESK.CPL (Katayama; #5552)
- Fix client font in the advanced appearance dialog.
- winnt.h (Timo Kreuzer)
- Fix definition of KNONVOLATILE_CONTEXT_POINTERS for amd64
- BDAPLGIN, KSPROXY, MSDVBNP, MSVIDCTL (Johannes Anderwald)
- Register DLLs when ReactOS is installed
- intrin_x86.h (Timo Kreuzer)
- cast return value of __sync_val_compare_and_swap to make clang happy
- add __cdecl to a number of intrinsics to make them (hopefully) compatible with crt header declarations.
- WDMAUD.DRV (Johannes Anderwald)
- Cleanup code
- Fix a bug which made the caller assume that a wave handle has already been open.
- define a macro which appends a postfix depending on wether USE_MMIXER_LIB has been defined
- DESK.CPL (Aleksey Bragin; #5620)
- Katayama Hirofumi <email@example.com>
- Renamed GLOBAL_DATA structures to DATA.
- Added real GLOBAL_DATA in background.c, that manages the background color.
- Resolved conflict of background colors in background.c and appearance.c.
- Fixed drawing the menu in draw.c.
- Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. (Aleksey Bragin; #4637)
- Update README.WINE. (Aleksey Bragin)
- Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. (Michael Martin)
- define _alloca() to __builtin_alloca() on amd64 (Timo Kreuzer)
- 46388 (Timo Kreuzer)
- Add __stosq, __movsq, _bittest64 (Timo Kreuzer)
- Added a library containing GUIDs for PnP notifications (Pierre Schweitzer)
- Add new netevent.dll. It is a resource dll that will be used by the event log viewer. (Eric Kohl)
- Implement GUI thread promotion during the first GUI system call in C. This is tricky due to EBP, and actually requires some tiny inline ASM magic to make it work right. (sir_richard)
- Implement SYSENTER system calls in C as well. (sir_richard)
- Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier. (sir_richard)
- Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute. (sir_richard)
- Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function. (sir_richard)
- Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C. (sir_richard)
- Workaround for GCC 4.4.x bug reported by Dmitry. (sir_richard)
- Add dclevel flags. (James Tabor)
- Implement KiSwapProcess in C. (sir_richard)
- Implement KiIsNpxPresent and KiIsNpxErrataPresent in C. It's much clearer what these are doing now. (sir_richard)
- Implement KiFlushNPXState and fix some bugs that were present in the ASM version, such as a wrong NPX state check. (sir_richard)
- Implement working intrinsics for fxrstor, fxsave, fnsave and enable them for flushing. We'll update the FPU trap code to use these later. (sir_richard)
- KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck! (sir_richard)
- Export the C KiEoiHelper alongside the ASM Ke386EoiHelper. Yes, this is a "ReactOS-only" export, but really this interface is reserved for the HAL, and as long as we keep Ke386EoiHelper, the NT HAL should still work. (sir_richard)
- Need to revisit/finalize this decision and whether or not we can emulate the C-interface with Ke386EoiHelper somehow (reliably). (sir_richard)
- Remove duplicate definitions (now in time.c). (Dmitry Gorbachev)
- Do not attempt querying the Registry Primary Handle for the Backing Hive File Size in the case where there is no actual Primary! There was no error checking so nobody noticed this happens -- it also probably resets Cluster to 0 (instead of 1), which can cause corruption in some cases. (sir_richard)
- Implement 4 lines of support code needed to handle interrupts during V8086 mode, which were lacking since we weren't hitting this case yet. (sir_richard)
- Note that now the KeUpdateSystemTime interface is not "compatible" with Windows anymore. This does not matter, since the only possible caller of KeUpdateSystemTime is a very specific HAL routine that needs a very specific stack layout to actually work, so the chance of anyone calling this API is absolutely zero (no, not even some experimental driver. It's absolutely impossible). (sir_richard)
- Turn off debug print outs. (James Tabor)
- Output PCH, not dependencies. (Dmitry Gorbachev)
- Rework the trap macros again. This time we needed some added complexity because of the need for runtime patching at boot. We got away with it nicely and basically implement a simple "if" in ASM, which gives us a deterministic set of instructions (vs the compiler). We then patch if if needed (see next bullet). (sir_richard)
- Support systems without SYSENTER. Nothing was actually disabling the SYSEXIT mechanism recently enabled. Now IRET is always used unless a SYSENTER machine is discovered, in which case the jmp to the IRET code is patched with a jmp to SYSEXIT code. (sir_richard)
- Enable V8086 Fast-V86 Trap mode for Trap 6 (Invalid Opcode). Because we are now taking zero traps during V8086 mode, we can't do the "BOP lookahead", so the only trap we do get is when we hit the BOP/invalid opcode itself. (sir_richard)
- Multiple fixes to V8086 opcode emulation code that I noticed while looking through the source. Also multiple fixes to VDM code. (sir_richard)
- This change will only impact real hardware and VMWare, since QEMU does not support VME. On VMWare, performance increased up to 400% during bootup (80 million cycles instead of 300 million, in one test). (sir_richard)
- Merge aicom-network-branch (still without the NDIS stuff) (Cameron Gutman)
- Fixes some nasty bugs and hacks in our TCP implementation (Cameron Gutman)
- Remove checks for VDM alert during GPF. This is a Windows-specific hack for VDM, which isn't implemented. (sir_richard)
- Fix L1/L2 cache detection and write out the size and associativity. Now that KeGetCurrentProcessorNumber doesn't think your L2 cache is the number of CPUs, this can be safely done. (sir_richard)
- The last big step. Now that the HAL is in C, we can handle interrupts in C. Do so using the proposed model that was #if'ed out, but with some improvements. (sir_richard)
- Fix recursion when sweeping the DCE list. (James Tabor)
- Another try at the chained interrupt dispatch problem... (sir_richard)
- Return correct IRQ 0 vector instead of IRQL, when the timer interrupt ends. (sir_richard)
- Fix KiEnterInterruptFrame. In the case of a V86 trap, the segments were overriden because this wasn't a kernel trap (missing if/elseif). (sir_richard)
- Simplify KiTrapStub and write registers in order. (sir_richard)
- Always set correct segments; the if/else branch should decide which segments to save, not whether or not to set the sane ones. Fixes boot on VirtualBox and real hardware. (sir_richard)
- Try to fix KiEnterInterrupt once and for all. Only set segments for V8086 or user traps. (sir_richard)
- Rework the way traps with possibly dirty DS/ES segments are handled. The FAST V86 hack is gone. Intead, created a "safe" version of IsTrapV86 and IsTrapUser that does an SS segment dereference (known good). The condition is then based on this, and the segments are saved and loaded safely. Note that for GCC 4.5 the ASM can be improved to directly branch or not to a label, instead of returning a boolean that is then further compared before branching. (sir_richard)
- This will fix certain exceptions that were seen in KeUpdateSystemTime, and might fix the sneaking HalpTrap0D while not in V86 mode (no promises). (sir_richard)
- Yet another fix for KiEnterInterruptTrap: Set correct DS/ES before touching the TrapFrame. (sir_richard)
- Make this operation an inline so any possible future code will not make this mistake twice. (sir_richard)
- Thanks to Physicus for the bug report. (sir_richard)
- Combine all exit trap stubs into a single function with flags (same thing we did for the entry stub). Now there are only 15 lines of ASM instead of 60. (sir_richard)
- Start redefining ARMv6 paging structures. (sir_richard)
- Add a branch-to-self to start testing kernel code. (sir_richard)
- Forgot to setup an IRQ stack, the kernel was working by magic since in previous incarnations of the ARM port, 0xFFFFyyyy was mapped, so a stack of 0 worked (going downwards). (sir_richard)
- Now FreeLDR just calls the KiSystemStartup routine correctly, without any "magic", so fix the code to use a1 instead of a2 (argument 1/2). (sir_richard)
- Get rid of fixed TLB entries on ARM, I don't think that idea makes sense (unlike IA64 or MIPS where they are lot more flexible), since they only allow 1MB sections, not pages. (sir_richard)
- Sync up KiDispatchException with x86 code (and going back to C comment formatting). (sir_richard)
- ARM DDK]: Use the closest possible approximation to the x86 KPCR/KPRCB (in fact, the public KPCR is identical, just the KIPCR is different, internally), instead of a mashup of PPC and MIPS structures. (sir_richard)
- Update code to use new KPCR structure. (sir_richard)
- Make all trap code currently spin forever, because it has not been reviewed yet. (sir_richard)
- Make system startup match x86 code as closely as possible, instead of mixing MIPS/PPC code. Only rip out parts that are obviously x86-specific. Also fix code to use new KPCR definitions. (sir_richard)
- Implement a DbgPrintEarly function that directly uses KDCOM to print to the serial console, instead of going through the Debug Service Interrupt. (sir_richard)
- All calls to DbgPrint will go to DbgPrintEarly for now. (sir_richard)
- More header fixes to match new definitions. (sir_richard)
- Tabula rasa (clean slate) on the old-MM page routines for ARM. Get rid of all of them for now. (sir_richard)
- Implement MmInitGlobalKernelPageDirectory as the first ARM page function in the new file. (sir_richard)
- That's it for the kernel. (sir_richard)
- Setup the template PTE and PDE used on ARM. (sir_richard)
- Implement device location information override support and add the location override value for PS/2 mice. PS/2 keyboards be added next. (Eric Kohl)
- Please translate the location override string. (Eric Kohl)
- Move HYPER_SPACE to 0xC0500000 since it must be on its own PDE. We need to revisit some FreeLDR Mm decisions later. (sir_richard)
- Move certain arch-specific definitions from mm.h to the arch-specific mm.h (sir_richard)
- Allow registry configuration of large kernel stack size, with proper checks. (sir_richard)
- Actually use calculated kernel stack size value. (sir_richard)
- Update log2lines to ver. 2.1. Jan Roeloffzen, bug #4342. (Dmitry Gorbachev)
- Factor out computations of NP sizes and limits into MiComputeNonPagedPoolVa. (sir_richard)
- Fix NP size/limit calculations to use the amount of FREE RAM, not the amount of INSTALLED RAM. (sir_richard)
- Use Windows 2003's algorithm for NP size on machines with more than 512MB of FREE RAM. (sir_richard)
- Partly handle the case of machines with NP over 128MB. (sir_richard)
- Factor out SecondaryColor computations into MiComputeColorInformation. (sir_richard)
- Fix SecondaryColor computations. If the KPCR has no deta, use the default colors of 8, not just 1. Also handle cases where there is more L2 cache than we'd like -- set the secondary colors to a maximum of 1024 in that case. Finally, if the colors are not a power of two, or there are not enough (due to a registry setting), use the default of 8. (sir_richard)
- Allocate and initialize color tables based on MmSecondaryColors (MiInitializeColorTables). (sir_richard)
- These come after the PFN database, so modify the MmPfnAllocation to account for them. (sir_richard)
- Add device location information override PS/2 keyboards. (Eric Kohl)
- Please translate the location override string. (Eric Kohl)
- partially revert changes from 45560 (Christoph von Wittich)
- Make KiFastCallEntryHandler and KiSystemServiceHandler FASTCALL and pass the systemcall number in TrapFrame->Eax (Timo Kreuzer)
- Refactor the mapping of the PTEs for the PFN database into MiMapPfnDatabase and move the code to portable directory. (sir_richard)
- Move and refactor some other definitions, and make some numbers more portable by defining arch-specific subvalues. (sir_richard)
- Fix floppy controller detection (Cameron Gutman; #4391)
- Simplify waiting in Get_Byte and Send_Byte (Cameron Gutman; #4391)
- for details (Cameron Gutman; #4391)
- Fix a stupid bug: x86 has 1024 PDEs, and ARM has 4096 PDEs, not the other way around. (sir_richard)
- Fix incorrect sector size detection which caused seeking to fail when booting from a floppy (Cameron Gutman)
- FreeLoader can load from a floppy disk now (Cameron Gutman)
- Remove unused code. (sir_richard)
- Fix an off-by-one-error which incorrectly causes GUI promotion to fail if the first GUI call is "0", since the limit on the GUI descriptor table will also be "0". We should check if the limit is equal to or lower, not just if it's lower. (sir_richard)
- Make EventLog and Spooler services report their status to the SCM. (Eric Kohl)
- Manage the PFN lists using the correct Flink/Blink semantics of the MMPFN structure, instead of typecasting a LIST_ENTRY on top of Flink and PteAddress. This allows PteAddress to be used now, and minimizes the number of differences between MMPFN and the ReactOS PHYSICAL_PAGE. (sir_richard)
- Add MiInsertPageInFreeList to build the colored lists (not yet used) in the ARM3 PFN database. (sir_richard)
- Remove SwapEntry parameter from MmAllocPage since it was always zero. (sir_richard)
- Store SwapEntry as WsIndex. We can do this now since Flink is only used when the page is in a list (meaning it's not active, ie. free or zero), and non-active pages don't have a swap entry. (sir_richard)
- Make MM init read MmProductType to determine what SKU of ReactOS this is, instead of assuming Server. If you want to go back to the old behavior, you need to change "WinNT" to "ServerNT" in the hivesys under Product Type. (sir_richard)
- Initialize thresholds for low and high memory (in pages), low and high paged pool memory, and low and high nonpaged pool memory. These are described in the source. (sir_richard)
- Initialize events for each of those thresholds, and populate the \KernelObject\xxxCondition events that are documented in MSDN for driver and app developers. (sir_richard)
- Define some internal thresholds to use later, representing the minimum number of free pages under we go berserk, and the minimum number of free pages that we consider "plenty". (sir_richard)
- Rename MiRemoveFromList to MiUnlinkFreeOrZeroedPage (Windows name). Make the function handle MmAvailablePages decrement, instead of having the caller do it. (sir_richard)
- Remove run-time initialization of the PFN lists, just initialize them statically (also fixes the fact we forgot to initialize their names). (sir_richard)
- Read ProductType from registry into MmProductType instead of dummy value. Remove duplicate "Mirroring" variable read. (sir_richard)
- Don't prepend fastcall forward's target with @. Fixes binding issues in videoprt, thanks to Olaf Siejka for identifying the issue. (Aleksey Bragin)
- Partially revert patches 45626 and 45633. (Eric Kohl)
- Several services do not report their status to the service manager properly. Therefore we must not use any code that relies on service status information as part of the setup and boot processes as long as these issues have not been fixed. The service manager still needs to provide fake information about the service status. (Eric Kohl)
- Use system PTEs for drivers, both boot drivers and system-loaded drivers. This removes the last user of the deprecated MmAllocateSection internal API. Another side-effect is that drivers will now have much higher load addresses (in the 0xF0000000 and higher range), as you would expect on Windows, plus increasing coverage and usage of system PTEs (which can still be optimized). (sir_richard)
- Do not "copy" boot drivers from one set of pages to another set of pages. Instead, use system PTEs to map the boot drivers to a new VA, and set the PFNs to the original PFNs that the loader had obtained (and don't free that memory). This avoids some overhead. (sir_richard)
- Now the only user of MmMapMemoryArea is the caching code, which I won't touch. (sir_richard)
- Insert pages into zero list with specific MiInsertZeroListAtBack function instead of generic MiInsertInTailList. Allows us to handle insertion into colored page lists (not yet used) correctly, as well as update the page location to ZeroedPageList automatically (so don't let the callers do this anymore). Also handle memory threshold accounting. (sir_richard)
- Temporarily disable last part of MiInsertZeroListAtBack which seems to cause issues in the 1st stage. (Aleksey Bragin)
- Enable high/low memory events notifications. (Aleksey Bragin)
- Reenable critical debug messages. (Eric Kohl)
- Rewrite trap handler exit stubs in pure assembly, remove gcc inline assembly. (Timo Kreuzer)
- Replace jmp to C handler with KiCallHandler macro, that expands to jmp on release builds for speed and call on debug builds to fix backtraces. (Timo Kreuzer)
- Unroll the Syscall handler loop and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack to prevent the compiler from optimizing it away / moving it out of the loop. (Timo Kreuzer)
- Bugcheck in KiTrap0DHandler, if the fault couldn't be resolved. (Timo Kreuzer)
- Remove handling of V86 traps and edited traps in KiServiceExit, ASSERT to make sure they never happen. (Timo Kreuzer)
- Replace code patching of the syscall exit handler with a function pointer. (Timo Kreuzer)
- Use __debugbreak() instead of while(TRUE) in KiExitTrapDebugChecks (Timo Kreuzer)
- Do the "funny message" (not really funny, my apologies) shenanigans after the system components have shutdown, and reset the display and call the HAL at least at DPC level (should probably do it at HIGH IRQL, really). This way, we can avoid the context switch to another process while the HAL is executing the BIOS reset display call (done solely for the benefit of the "funny messages", as the video card driver usually resets the display) and thus avoid the "invalid V86 opcode" message sometimes appearing on shutdown. Did you know the "funny messages" take up more storage space than an average embedded micro-controller OS? (sir_richard)
- Implement CmSetLazyFlushState to disable lazy writing in the Cm. (sir_richard)
- Implement ExSwapInWorkerThreads to in-swap any worker threads when needed. (sir_richard)
- Add HAL stubs for HalEndOfBoot and HalSetWakeEnable since most HALs set this to NULL. (sir_richard)
- Have I/O Manager Volume Device Objects register with the Power Manager so that they can receive dope. (sir_richard)
- Reimplement NtShutdownSystem. (sir_richard)
- Implement NtSetSystemPowerState for the shutdown/reboot cases. (sir_richard)
- Use the dope from the volume device objects to flush all writeable (non-floppy) devices. Pending hard-disk changes are now flushed to disks before shutdown. (sir_richard)
- Flush \\REGISTRY during shutdown. This flushes all pending changes. (sir_richard)
- Call into Cc to flush lazy writer during shutdown. (sir_richard)
- Stop killing processes on shutdown. The kernel should not be doing this. (sir_richard)
- Don't only shutdown disk file systems, but also cdrom and tape. (sir_richard)
- Don't only notify drivers of first-chance shutdown -- also parse the last-change shutdown list. (sir_richard)
- Reference drivers registering for shutdown notifications so that they remain loaded for them to get the notification at shutdown. (sir_richard)
- Notify drivers that have registered/opened the Power State callback. (sir_richard)
- A lot of the Po* power state code is highly simplified, but provides a good roadmap to anyone interested in this functionality long-term. (sir_richard)
- While attempting to ressucitate the user-mode shutdown code in CSRSS (disabled since 2006), it seemed clear that one of the main steps is to obtain the caller's LUID in order to kill the right processes. This LUID is obtained from the current thread's token, and we know it's the callers since we're supposed to impersonate the caller. Unfortunately, impersonation failed, making the whole process fail. (sir_richard)
- Impersonation failed because NtImpersonateThread was actually inverting the THREAD_IMPERSONATE rights, asking the client thread for the server's permissions, and vice versa. Fixing this resulted in yet another failure. (sir_richard)
- Analysis of this failure showed that even opening the server (ie: current) thread for THREAD_DIRECT_IMPERSONATION failed, which is unusual since the current thread should have access to all its rights. This is determined in PspCreateThread when the ETHREAD->GrantedAccess field is set. (sir_richard)
- Continuing onto this path, tracing revealed that GrantedAccess was merely 0x1607F and not 0x1F3FF as expected, meaning that not all rights were given, including the impersonate right (0x200), explaining the failure, but not the deeper reason behind it. (sir_richard)
- Attempting to identify which code path set this GrantedAccess, the SepAccessCheck routine came to light. A bug there caused MAXIMUM_ALLOWED accesses to fail in certain scenarios, such as when the object had no security descriptor, because MAXIMUM_ALLOWED would be granted as an absolute value, when instead of it is a flag that should grant GENERIC_ALL. Fixing that bug, the failure continued. (sir_richard)
- Further analysis identified that the Administrators SID was being found with GENERIC_READ + WRITE + EXECUTE access, and no SID was found for GENERIC_ALL access. This happened when searching the system token's default DACL, which is assigned to the kernel (but for kernel-mode callers, this check was skipped), smss, winlogon, etc. (sir_richard)
- The code for creating this system token was heavily hacked, so the function to create the system token, as well as NtCreateToken were refactored to use a common piece of token-creating code. Furthermode, the system token was correctly created with Local System as the user, and Administrators as one of the groups. Finally, SeDefaultDacl was used (already setup properly) instead of a badly configured Default DACL. The new shared code also correctly sets the SE_GROUP_ENABLED flag on all SE_GROUP_MANDATORY groups, and scans tokens to set the TOKEN_HAS_ADMIN_GROUP and TOKEN_HAS_TRAVERSE_PRIVILEGE flags which were not previously set. (sir_richard)
- With the correct system token and default DACL, the Local System SID was now found, but the failure continued. This was revealed to be due to an even deeper rooted problem, as the SepIsSidInToken routine checked for SE_GROUP_ENABLED before listing a SID as "present". Although this is correct for actual groups, the User SID will never have the SE_GROUP_ENABLED flag as it is not a group. This caused any granted access ACE belonging to a user (instead of a group) to be ignored, causing either access check failures, or limited rights returned (in the MAXIMUM_ALLOWED case). (sir_richard)
- Upon fixing this bug, the NtImpersonateThread call finally returned success, since the rights were now correct. Promptly upon calling NtOpenThreadToken to query the LUID however, the system ASSERTED with FALSE. (sir_richard)
- The code at fault was a line in NtOpenThreadTokenEx which forcefully ASSERTed if the impersonation code path was taken, presumably because this was never tested, and ReactOS would actually always fail impersonation attempts due to the bugs fixed above. This routine was thus quickly reworked to fix some mistakes (such as forgetting to actually impersonate the client, incorrect referencing/dereferencing of thread/tokens, and assumptions about DACL creation success). (sir_richard)
- Having fixed the NtOpenThreadTokenEx routine, the LUID query now went through for the impersonated token, but soon causing a user-mode crash, due to an incorrect parameter reference in the CsrGetProcessLuid function in the csrsrv code by Alex (which I copy/pasted to reduce code duplication). (sir_richard)
- Fixing this final bug finally allowed the correct LUID to be queried and I was able to continue development of not-yet-commited user-mode shutdown code. (sir_richard)
- Convert battery.inf to UTF-16 (Sylvain Petreolle)
- Add battery.inf and fdc.inf to syssetup process. (Sylvain Petreolle)
- Floppy disk controllers and batteries now appear correctly in device manager. (Sylvain Petreolle)
- Dedicated to aicom ;) (Sylvain Petreolle)
- No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake. (sir_richard)
- List still-running processes at kernel shutdown. Useful for debugging shutdown code later. (sir_richard)
- Quit building a useless IO_RESOURCE_REQUIREMENTS_LIST (and leaking memory) in response to IRP_MN_QUERY_RESOURCES (Cameron Gutman)
- Actually store the IO_RESOURCE_REQUIREMENTS_LIST in Irp->IoStatus.Information in response to IRP_MN_QUERY_RESOURCE_REQUIREMENTS so the PnP manager can use it (and fixes another memory leak) (Cameron Gutman)
- I forgot to set the exit function for systems without sysenter/sysexit support. Should fix sysreg. (Timo Kreuzer)
- Add DPRINTs to tell if SYSENTER is detected. Requested by Christoph for testing the test machine. (Timo Kreuzer)
- NtOpenThreadTokenEx: Initialize NewToken with NULL, so it doesn't get wrongly dereferenced. Fixes advapi32:security winetest crash. (Timo Kreuzer)
- Update pspec file with amd64 exports, use -arch= where appropriate (Timo Kreuzer)
- Add internal amd64 headers. (Timo Kreuzer)
- Add support for reference strings in IoOpenDeviceInterfaceRegistryKey (Johannes Anderwald)
- Make sure SymbolicLink is null terminated (Johannes Anderwald)
- Rewrite boot driver loading code (not the driver code itself) to use the boot loader's BootDriverListHead, instead of parsing InOrderListHead and cherry-picking ".sys" files. This is the last incompatibility with Windows. (sir_richard)
- Use group prioritiy, tag numbers, and tag priority to determine the correct loading order for boot drivers, instead of just parsing the linked list. Dependencies work now! (sir_richard)
- Load any DLLs that are driver-dependent with MmCallDllInitialize. Previously, these .DLLS were ignored and drivers could lose dependencies. (sir_richard)
- Fix MP install. (Sylvain Petreolle)
- Simplifying MakeInfoDC. (James Tabor)
- Implement Configuration Manager routines for building a driver list, sorting it, detecting circular dependencies and ordering, combining groups, tags, group orders and tag orders, etc. Replaces the "drvrlist" I/O interface currently in ReactOS. (sir_richard)
- Use the new Cm interface in IopInitializeSystemDrivers to parse the ordered list of system drivers to load. Make it use ZwLoadDriver directly instead of having a hacked IopLoadDriver function. (sir_richard)
- Drivers should not show up loading n times a reboot now (some drivers seemed to do this in the past when they failed to load). (sir_richard)
- The system driver code could be further improved by checknig if the driver has already been loaded, or attempted and failed to load, but it is already much better now than in the past. (sir_richard)
- Device interface strings are null terminated (Johannes Anderwald)
- Some PnP ABI refactoring for future patches/work. (sir_richard)
- Switch to PnP Add Device routine, currently mostly a copy of the original ReactOS code. However, PnP now tries to open all the required registry keys before attempting to start the device. Failures are reported and load cancelled. More work TBD. (sir_richard)
- Rename IopBusTypeGuidList to PnpBusTypeGuidList to match Windows 2003 PnP Namespace instead of Windows 2000. (sir_richard)
- Use PnpBusTypeGuidList->Lock instead of PnpBusTypeGuidListLock. (sir_richard)
- Implement PipAllocateDeviceNode for setting up device nodes and linking them to a PDO. Only used for Root PnP now. Main ABI change is that allocate in ReactOS right now includes "insert". These will be seperate in the new PnP ABI. (sir_richard)
- Aleksey wants an easy way to see debug messages coming from one process vs. another, which is an obvious idea that should've done a long time ago. Now you can see who is generating a given debug message (including the thread). (sir_richard)
- In the process, fix bugs in the Event dispatcher code that used Win32 EVENT_TYPE instead of NT KOBJECTS enumeration. (sir_richard)
- Change some comments to standard ReactOS commenting style. (Aleksey Bragin)
- Fix a strange bug where we were only setting SharedUserData->TestRetInstruction conditionally only if lookup failed - it should be set on success. Also, bail out if the lookups failed. (Aleksey Bragin)
- Fix a code typo which led to a security issue when the XOR algorithm for the system cookie might actually yield zero. Now it's going to loop as long as the cookie is 0, attempting to generate a non-zero one. (Aleksey Bragin)
- Fix several bugs in Inbv (busted locking code, useless variables, magic initializers). (Aleksey Bragin)
- Daniel Zimmermann: Fix POPF bugs in VDM mode, namely truncation of the stackpointer to 16 bit and setting proper flags in the trapframe eflags register. This fixes problems with videocards calling int 0x10 VESA BIOS extension. (Aleksey Bragin; #5608)
- Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're dong in V8086 mode, you simply update your real flag with whatever the fake flag says. (sir_richard)
- Add a macro for asserting hash lock ownership. (Aleksey Bragin)
- Add a macro for getting an alloc page from KCB / delay alloc item. (Aleksey Bragin)
- Add a newly allocated KCB to the tail of CmpFreeKCBList, not to its head. (Aleksey Bragin)
- Add more assert macros for registry operations: locked or loading, exclusively locked or loading, hash and KCB locks, locked for flushing. (Aleksey Bragin)
- Add macros for getting alloc page from KCB and delay alloc item. (Aleksey Bragin)
- Stub support for global quota enable. (Aleksey Bragin)
- Stub support for notifications. (Aleksey Bragin)
- Add a source file for a future HiveList implementation. (Aleksey Bragin)
- Implement new (correct) hive flusher lock/release routines, unused right now. (Aleksey Bragin)
- Flusher lock fixes: wrong kind of lock,total mess (and the wrong kind of lock). Properly fixed throughout cmapi.c, but still missing in many other places. (Aleksey Bragin)
- Add support for detecting loading of an already loaded hive. (Aleksey Bragin)
- Start adding calls to CmpReportNotify to support registry callbacks. (Aleksey Bragin)
- Do work needed to flush notifications for a deleted node (but CmpFlushNotify not yet implemented). (Aleksey Bragin)
- Add support for adding each newly loaded hive to the HiveList key in the registry (but CmpAddHiveToFileList not yet implemented). (Aleksey Bragin)
- Add some ViewLock acquire/releases where needed. (Aleksey Bragin)
- Load the key in a faster way (Ob vs Zw) (Aleksey Bragin)
- Add checks everywhere for HvMarkCellDirty success. In future (when log/backup file is enabled), it can return FALSE (e.g. when we are out of space). (Aleksey Bragin)
- Change logic in CmpDoFlushAll to only flush a hive if it won't shrink (in the future, flushing may lead to hive shrinkage for efficiency). (Aleksey Bragin)
- Add SEH2 protection to all CmApis that may deal with user-mode data. (Aleksey Bragin)
- Add HvTrackCellRef/HvReleaseCellRef for tracking cell references in scenarios where we might need many GetCell/ReleaseCell calls. For now stubbed to only work with up to 4 static references. (Aleksey Bragin)
- Properly unlock/free in some failure paths in some of the CM APIs. (Aleksey Bragin)
- Add some missing HvReleaseCell in paths where it was missing. (Aleksey Bragin)
- Try to fix hack in enumerate key. (Aleksey Bragin)
- Fix wrong usage of KeQuerySystemTime. It was called twice to save it in 2 different places. Instead, there should be only one call, and then duplicate the value across. (Aleksey Bragin)
- Fix logic in CmpSetValueExistingData/Key. (Aleksey Bragin)
- Tested with winetests and .NET framework 1.1 installation which fully completes. (Aleksey Bragin)
- Fix incorrect POOL_TYPE allocation in IoInvalidateDeviceRelations. This function can be called at DISPATCH_LEVEL, which requires NonPagedPool POOL_TYPE. (Michael Martin)
- When an IRP is freed in a Completion routine the return Status is STATUS_MORE_PROCESSING_REQUIRED to let IoCompleteRequest know not to do anything further with the IRP. (Michael Martin)
- Fix typo. (Michael Martin)
- Acquire and Release RundownProtection on the Parent Pocess not the newly created Pcess when setting the SectionObject. (Michael Martin)
- When deleting a Process remove the Process from the MmProcessList. Fixes random NonPaged Pool corruptions. Thanks aicom for assistance. (Michael Martin)
- Update moldname-msvcrt.def (Timo Kreuzer)
- Add a proper oldnames lib, instead of implicitly including it with mingw. (Timo Kreuzer)
- 46526 (Timo Kreuzer)
- Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). (sir_richard)
- Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing * Use mini_hal only on i386 builds (Timo Kreuzer)
- Unify the old setupldr settings with more recent freeldr ones. Also fixes missing _udiv/mod functions on my build. (sir_richard)
- Add strsafe.h from amd64 branch. (Timo Kreuzer)
- Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. (sir_richard)
- Replace mixer / wave support code by mmixer library (Johannes Anderwald)
- Perform all allocations / frees in dedicated alloc / free function (Johannes Anderwald)
- Fix possible buffer overflow (Johannes Anderwald)
- Fix GdiBatch, the limit is for user space not system. (James Tabor)
- Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. (James Tabor)
- Diagnostic commit used for troubleshooting leaking region handles. (James Tabor)
- Updates to headers and experimental code added for regions. (James Tabor)
- Relax INTERLOCKED_RESULT inclusion guard. (Amine Khaldi)
- Implement a rewrite of rbuild written in c# (Marc Piulachs)
|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|