Difference between revisions of "ChangeLog-0.3.12"

From ReactOS Wiki
Jump to: navigation, search
(Kernel-mode subsystem server (Win32K))
(Translations: German translations from r45501. Not sure what to list some as.)
Line 116: Line 116:
 
* usetup
 
* usetup
 
* winemine
 
* winemine
 +
 +
'''Chinese'''
 +
* charmap
  
 
'''Czech'''
 
'''Czech'''
Line 154: Line 157:
 
* Added a German translation myself. ([[Daniel Reimer]])
 
* Added a German translation myself. ([[Daniel Reimer]])
 
* Fix and add German translations, advpack. ([[Matthias Kupfer]])
 
* Fix and add German translations, advpack. ([[Matthias Kupfer]])
 +
* access
 +
* appwiz
 +
* calc
 +
* cmd
 +
* cmdutils/reg
 +
* console
 +
* desk
 +
* deskadp
 +
* deskmon
 +
* devmgr
 +
* doskey
 +
* downloader
 +
* dxdiag
 +
* explorer
 +
* explorer-new
 +
* fontview
 +
* format
 +
* hdwwiz
 +
* input
 +
* intl
 +
* ipconfig
 +
* joy
 
* kernel32
 
* kernel32
 +
* liccpa
 +
* main
 +
* mmsys
 +
* modemui
 +
* mplay32
 +
* msconfig
 +
* mscutils
 +
* msgina
 +
* mstsc
 +
* netcfgx
 +
* netid
 +
* netshell
 +
* newdev
 +
* notepad
 +
* paint
 +
* powercfg
 +
* rapps
 +
* rasdlg
 +
* regedit
 +
* regsvr32
 +
* runonce
 +
* screensavers/3dtext
 +
* screensavers/logon
 +
* serialui
 +
* setup/reactos
 +
* shdoclc
 +
* shell32
 +
* shimgvw
 +
* sndvol32
 +
* solitaire
 +
* spider
 +
* sysdm
 +
* syssetup
 +
* tapiui
 +
* taskmgr
 +
* timedate
 +
* user32
 
* userenv
 
* userenv
 
* usetup
 
* usetup
 +
* usrmgr
 +
* vmwinst
 +
* welcome
 +
* winemine
 +
* winlogon
  
 
'''Italian'''
 
'''Italian'''
Line 191: Line 258:
  
 
'''Polish'''
 
'''Polish'''
 +
* calc
 
* mscutils
 
* mscutils
 
* usetup
 
* usetup

Revision as of 00:16, 1 October 2010

TODO: If you want to help, I could really use someone who would go through the list of bugs listed in the regression and bullet point them into actually saying what is broken, ie, what can no longer be done due to the bug. -Z98

New TODO: We have a bunch of third party libraries, not Wine libraries, but stuff like zlib or whatever. Could someone put them into a list and just state the version they got updated to? I've added a place for them under the Generic section. It may get moved eventually, but we'll leave it there as a temporary measure. -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).

Contents

General

Contributors

Core Developers

  • 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.

Patch Submitters

  • Andrea
  • Carlo Bramini
  • James Edmeades
  • Benedikt Freisen
  • Rafal Harabien
  • Katayama Hirofumi
  • Kusanagi Kouichi
  • Radek Liška
  • Roel Messiant
  • Andrew Nguyen
  • Samuel Serapión
  • Seungju
  • Dmitry Timoshkov
  • Henri Verbeet

Localization

  • forenkrams [AT] tuxproject [DOT] de
  • Andres Traks
  • Andrew Faulds
  • Arturs B
  • CCTAHEB
  • 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

Support Staff

  • Danny Gotte: Web Developer
  • Ziliang Guo: Release Engineer

Generic 0.3.12 Changes

Applications

  • Calc: Units and conversion factors added.
  • MSCUtils: Column names now use resource strings instead of hardcoded strings.
  • 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.

Installer

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

  • 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.

Tests

http://www.reactos.org/testman/compare.php?ids=2123,4021

Translations

Bulgarian

  • 3dtext
  • doskey
  • explorer
  • ipconfig
  • mscutils/servman
  • rapps
  • shutdown
  • spider
  • usetup
  • winemine

Chinese

  • charmap

Czech

  • appwiz
  • devmgr
  • intl
  • netcfgx
  • netid
  • netshell
  • notepad
  • paint
  • regedit
  • setupapi
  • shell32
  • slayer
  • sndvol32
  • sysdm
  • userenv
  • usetup
  • winemine

Dutch

  • calc

English

  • advpack
  • rapps
  • usetup

French

  • Add french translations for location overrides. (Sylvain Petreolle)
  • usetup
  • spider
  • paint
  • eventvwr

German

  • Added a German translation myself. (Daniel Reimer)
  • Fix and add German translations, advpack. (Matthias Kupfer)
  • access
  • appwiz
  • calc
  • cmd
  • cmdutils/reg
  • console
  • desk
  • deskadp
  • deskmon
  • devmgr
  • doskey
  • downloader
  • dxdiag
  • explorer
  • explorer-new
  • fontview
  • format
  • hdwwiz
  • input
  • intl
  • ipconfig
  • joy
  • kernel32
  • liccpa
  • main
  • mmsys
  • modemui
  • mplay32
  • msconfig
  • mscutils
  • msgina
  • mstsc
  • netcfgx
  • netid
  • netshell
  • newdev
  • notepad
  • paint
  • powercfg
  • rapps
  • rasdlg
  • regedit
  • regsvr32
  • runonce
  • screensavers/3dtext
  • screensavers/logon
  • serialui
  • setup/reactos
  • shdoclc
  • shell32
  • shimgvw
  • sndvol32
  • solitaire
  • spider
  • sysdm
  • syssetup
  • tapiui
  • taskmgr
  • timedate
  • user32
  • userenv
  • usetup
  • usrmgr
  • vmwinst
  • welcome
  • winemine
  • winlogon

Italian

  • calc
  • explorer-new
  • intl
  • mscutils
  • netid
  • netshell
  • paint
  • rapps
  • regedit
  • shell32
  • sysdm
  • syssetup
  • usetup
  • win32csr

Japanese

  • cacls
  • charmap
  • magnify
  • mscutils/devmgmt
  • mscutils/servmgr
  • paint
  • rapps
  • shutdown
  • sndrec32
  • usetup
  • runonce
  • sysdm
  • syssetup
  • win32csr

Polish

  • calc
  • mscutils
  • usetup

Portuguese

  • syssetup
  • usetup

Russian

  • usetup
  • spider
  • sysdm

Slovak

  • calc
  • devmgr
  • explorer-new
  • intl
  • netshell
  • paint
  • rapps
  • regit
  • runonce
  • shell32
  • sndrec32
  • syssetup
  • usetup

Spanish

  • devmgr
  • shell32
  • syssetup
  • usetup
  • usrmgr
  • welcome

Ukrainian

  • aclui
  • browseui
  • charmap
  • cmd
  • desk
  • dxdiag
  • explorer
  • explorer-new
  • freeldr
  • input
  • kernel32
  • mscutils/devmgmt
  • mscutils/eventvwr
  • msgina
  • mstsc
  • newdev
  • notepad
  • paint
  • rapps
  • regedit
  • runonce
  • setup
  • shell32
  • shimgvw
  • sndrec32
  • sndvol32
  • solitaire
  • spider
  • sysdm
  • syssetup
  • taskmgr
  • usetup
  • winemine

Misc

  • Polish, Czech and Estonian translations of required disk space by Maciej Bialas, Radek Liska and Andres Traks (Gabriel Ilardi; #5429, #3302)

Wine Syncs

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.

Libraries Synced

  • odbc32
  • msdmo
  • credui
  • cryptdlg
  • cryptnet
  • cryptui
  • inetmib1
  • mapi32
  • msiexec
  • netapi32
  • pdh
  • shdoclc
  • xmllite
  • actxprxy
  • amstream
  • clusapi
  • d3d8
  • d3d9
  • ddraw
  • dwmapi
  • faultrep
  • hnetcfg
  • iccvid
  • imm32
  • initpki
  • itircl
  • itss
  • localui
  • mdi
  • mlang
  • mpr
  • mscms
  • msg711.acm
  • msimtf
  • msnet32
  • msrle32
  • mssip32
  • msvcrt20
  • nddeapi
  • obsel
  • oleacc
  • oledlg
  • olepro32
  • postorec
  • query
  • tapi32
  • uxtheme
  • wined3d
  • dbghelp
  • fusion
  • hlink
  • riched20
  • activeds
  • atl
  • avifil32
  • cabinet
  • comdlg32
  • gdiplus
  • hhctrl.ocx
  • inetcomm
  • inseng
  • jscript
  • localspl
  • mciavi32
  • mcicda
  • mciqtz32
  • mciseq
  • mciwave
  • mscoree
  • msctf
  • msgsm32.ac
  • msvfw32
  • msvidc32
  • msxml3
  • oleaut32
  • rsaenh
  • schannel
  • shlwapi
  • sti
  • urlmon
  • usp10
  • version
  • windowscodecs
  • wintrust
  • comctl32
  • crypt32
  • mshtml
  • msi
  • msxml
  • ole32
  • qedit
  • quartz
  • rpcrt4
  • rsaenh
  • shdocvw
  • shlwapi
  • urlmon
  • widl
  • wininet

Third Party Libraries

LIST LIBRARIES IN THIS SECTION!!!!!!!!!!!!!!

Regressions

  • #4086 CDFS - Data Corruption
  • #4330 ReactOS crashes upon restart after installing a 3Com NIC-driver
  • #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 Not POWNED or CLASSDC hwndCurrent
  • #5372 Failed to create directory L"%USERPROFILE%\\Local Settings\\... in 2nd stage
  • #5443 Inkscape 0.43-2 crashes immediately upon start.
  • #5484 Desktop Open Window Offset
  • #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 2nd stage, misplaced warning message for empty name, wrong sized too.
  • #5569 Techlogica HTTP Server tray icon not displayed
  • #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn

MSC support

As part of the effort to support compilers beyond GCC, several components of ReactOS saw fixes and corrections to the coding style. These include but are not limited to:

  • explorer
  • rtl
  • BDAPLGIN
  • ksproxy
  • browseui
  • shell32
  • hal
  • ndk
  • ntoskrnl
  • mingw
  • win32csr
  • localspl
  • compstui

Host Tools

BUILDNO

LOG2LINES

RBUILD

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.

Core Functionality

Audio/Video Stack

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.

BDA

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.

DSOUND

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.

Kernel Streaming

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.

KSPROXY

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.

PORTCLS

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.

Booting

Booting 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.

FreeLoader

  • 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.

Filesystems

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.

FSRTL

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.

CDFS

  • Media ejection added.
  • Various memory leaks and corruptions have been resolved.

FASTFAT

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.

FASTFAT_NEW

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.

CM

  • 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.

Memory Management

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.

ARM3

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.

Network Stack

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.

MSAFD

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.

NDIS

  • Fixes to how operations are done on the timer queue.
  • 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.

TCP/IP

  • Correctly report errors for bad calls.
  • Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.

Power Management

Progress has been made in efforts to give ReactOS better support for power management, whether it be simply shutting down the system to detecting battery levels.

ACPI

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.

ACPI HAL

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.

Battery Framework

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.

Graphics

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.

VIDEOPRT

Kernel

  • IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.

I/O

  • 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.

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.

Registry

  • 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.

Security

  • 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.

Shell

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.

SHELL32

  • 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.

Storage Stack

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.

RAMDISK

  • Fixes for using ramdisk when booting on ARM.

SCSIPORT

  • x64 portability fixes.

UniATA

  • Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.


USB

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.

USBD

Helper library for third party USB drivers, used for querying information about USB devices.

USBEHCI

Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.

USBHUB

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

  • USB_DEVICE_DESCRIPTOR_TYPE
  • USB_CONFIGURATION_DESCRIPTOR_TYPE
  • URB_FUNCTION_SELECT_CONFIGURATION
  • URB_FUNCTION_CLASS_DEVICE
  • USB_DEVICE_CLASS_HUB
  • USB_BUS_INTERFACE_USBDI_V2
  • USB_BUS_INTERFACE_HUB_V5
  • URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE
  • IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION
  • IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE
  • IOCTL_INTERNAL_USB_GET_HUB_COUNT
  • URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN
  • USB_REQUEST_CLEAR_FEATURE
  • USB_REQUEST_GET_STATUS
  • USB_REQUEST_SET_FEATURE

USBDriver

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.

Drivers

PCI

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.

PCMCIA

  • Driver has been stubbed so will require more work before any functionality is added.

Libraries

ADVAPI32

  • 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.

KERNEL32

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.

GDI32

  • 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.

MSVCRT

  • Exports added for a variety of functions.

NTDLL

  • Various fixes to loading functions for libraries and executables.
  • Service status is now reported to the service manager.
  • Various x64 portability changes.

RTL

  • 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.

USER32

  • 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.

Win32™ Personality

User mode subsystem server (CSRSS)

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.

Regression tests

BASE

APPLICATIONS

DXDIAG

IPCONFIG

NETWORK

NETSTAT
  • Allocate memory for the TCP table properly (Jan)
  • Only netstat -a should show UDP connections (Jan)

SC

  • 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)

SERVICES

WLANSVC

SETUP

REACTOS

  • Add asm.h containing macros to make assembly code both GAS and ML compatible at the same time. (Timo Kreuzer)

CMD

EXPLORER

FORMAT

SYSTEM

  • Bail out when detecting invalid root path, instead of asking to insert a disk (Gregor Schneider; #4067)
  • Fix "potentially insecure" usage of non-string-literals in printf. (Timo Kreuzer)

SMSS

  • Remove the system environment variable PROCESSOR_ARCHITECTURE from the hivesys*.inf files. (Eric Kohl)
  • Let SMSS add the system environment variables PROCESSOR_ARCHITECTURE and PROCESSOR_IDENTIFIER to the registry. (Eric Kohl)
  • Remove the system environment variable OS from the hivesys*.inf files. (Eric Kohl)
  • Change the type of the system environment variable PATHEXT in the hivesys*.inf files from REG_EXPAND_SZ to REG_SZ. (Eric Kohl)
  • Let SMSS add the system environment variables OS and NUMBER_OF_PROCESSORS to the registry. (Eric Kohl)
  • Add the system environment variables PROCESSOR_LEVEL and PROCESSOR_REVISION. (Eric Kohl)
  • Create a new default paging file if no paging files exist. (Eric Kohl)
  • Set the calculated paging file sizes in the registry. (Eric Kohl)
  • Remove predefined paging file name from the hivesys*.inf files. (Eric Kohl)
  • Fixes bug #4048. (Eric Kohl)

USERINIT

WINLOGON

  • Add missing newline to a TRACE message. (Eric Kohl)
  • Move environment creation to a separate file. (Eric Kohl)
  • Impersonate the new user and create the 'Volatile Environment' key for the new user. (Eric Kohl)
  • Fixed bug of the month. I'm surprised that winlogon worked at all. (Eric Kohl)
  • Store all environment variables that were passed from msgina.dll in the volatile environment key. (Eric Kohl)
  • Add the APPDATA environment variable to the volatile environment. Unfortunately SHGetFolderPath does not seem to expand the appdata path. Bug or Feature?? (Eric Kohl)
  • Create the environment block for the shell process after the volatile environment key has been filled, so its variables are included. (Eric Kohl)
  • Yet another step to fixing bug #4102. (Eric Kohl)
  • Add a hack to fix the APPDATA environment variable. This hack will be removed after bug #5372 has been fixed. Fixes bug #4102. (Eric Kohl)
  • Set the APPDATA environment variable without loading shell32.dll. (Eric Kohl)
  • This should fix bug #5398. (Eric Kohl)
  • Create window station with all access rights. (Aleksey Bragin)
  • NtInitializeRegistry expects not just CM_BOOT_FLAG_ACCEPTED, but a number of the accepted control set to be added to it. After fixing this, NtInitializeRegistry won't fail with STATUS_INVALID_PARAMETER (someone should check return status for errors...) anymore. As a result lazy flushing is enabled. (Aleksey Bragin)
  • Fix comments copypasta. (Aleksey Bragin)

BOOT

ARMLLB

  • Fix incorrect frame buffer size calculation. (sir_richard)
  • Fix typo. (sir_richard)
  • PutChar should be a UCHAR routine, this way we can print characters above 127 (extended ASCII). This is needed for the progress bar, for example. (sir_richard)
  • ARM SDK]: Use real Versatile base addresses instead of the old hacked FreeLDR base addresses. (sir_richard)
  • Remove all deprecated video machine routines that are not used anymore. (sir_richard)
  • If all went well, the ARM port should now boot on Versatile platforms up until the ARM3 initialization code. (sir_richard)

BOOTDATA

  • Add DHCP to the service list to be loaded by svchost in the netsvcs group (Cameron Gutman)
  • Add the correct registry keys in the DHCP service key for loading by svchost (Cameron Gutman)
  • Remove dhcp.exe from bootcd (Cameron Gutman)
  • Part 3 of 3 (Cameron Gutman)
  • revert 47055 (Christoph von Wittich)
  • Add the 176 different PCI devices that Windows knows about, and the erratas that need to be applied to make those devices work correctly. This information is processed by eVb's PCI Bus driver. 3rd-party device manufacturers, as well as Microsoft online support pages, sometimes instruct users to add new entries to this list as well, and new entries are also added by 3rd-party driver .INF files. Probably 30% of computers in the world have at least one of these devices installed. (sir_richard)
  • Windows Bus Drivers/HAL/Kernel require Arbiter data in the registry placed by the installer, otherwise they will not load. Add this Arbiter data. (sir_richard)

LIBJPEG

DLL

3RDPARTY

  • 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)

MESA32

SRC
DRIVERS
  • Disable building of SWENUM, MPU401, CMIDriver, SPLITTER, STREAM to reduce build time (Johannes Anderwald)
  • Those modules are either unused or don't work yet due to missing functionality (Johannes Anderwald)

DIRECTX

BDAPLGIN

  • 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)

DEVENUM

  • Extend device enumerator to support class enumerators of device interfaces (Johannes Anderwald


MSDVBNP

MSVIDCTL

WINE

  • 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)
WINED3D
  • Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) (Timo Kreuzer)

KEYBOARD

KBDLV

  • 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)

IDNDL

NLS

CSR

  • 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)

WIN32

BATT

  • Add battery class installer dll. (Eric Kohl)
  • Add missing 4th parameter to BatteryClassCoInstaller. (Eric Kohl)

BEEPMIDI

BROWSEUI

DEVMGR

  • 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)

LSASRV

  • Use a single table for mapping privilege names to values and values to names. (Eric Kohl)
  • LsarLookupSids: Return ReferencedDomains information. (Eric Kohl)
  • Replace hard-coded privilege names by privilege names from the PSDK. (Eric Kohl)
  • Move all includes into a common header file. (Eric Kohl)
  • Create a (still incomplete) well-known-sid lookup table and use it in LsarLookupSids. (Eric Kohl)
  • Add missing file headers. (Eric Kohl)
  • Add more well known sids to the lookup list. (Eric Kohl)

MSGINA

  • 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)

NETCFGX

  • 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)

NETSHELL

NTMARTA

  • AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. (Michael Martin)

QMGR

  • 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)

SETUPAPI

USERENV

  • 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)

WINMM

  • 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)

WS2_32

  • Add support for reading the hosts file (Cameron Gutman)
  • Fix an off-by-one error which prevented reading the last value in the services file (Cameron Gutman)
  • Fixes bug 4410 and bug 4880 (Cameron Gutman)
  • implement WSAAddressToStringA/W (taken from wine) (Christoph von Wittich)
  • set LastError to 0 when WSASendTo was successful (Christoph von Wittich)
  • Update the catalog ID when we locate the matching provider (Cameron Gutman)
  • mswsock from aicom-network-branch can successfully create sockets now (Cameron Gutman)
  • DWORD -> DWORD_PTR (Timo Kreuzer)
  • Fix CryptReleaseContext parameter, wine uses an outdated version (< NTDDI_WINXP) (Timo Kreuzer)
  • Fix buffer overrun in getservbyname. (Alexander)
  • Check the return value of WSPSelect instead of the error number because the error number doesn't have to be initialized if the function doesn't return SOCKET_ERROR (Cameron Gutman)
  • Fix a crash when running with ws2_32 debugging on (Cameron Gutman)
  • Create a temporary variable and pass that to WSAIoctl for the bytes returned value instead of passing argp and corrupting the value we just retrieved (Cameron Gutman)

WS2_32_NEW

DRIVERS

BASE

BOOTVID

KDCOM

  • Include ntifs, instead of ntddk, needed by NDK (Timo Kreuzer)

BATTC

BATTERY

  • Add a nearly complete battc driver (the only stuff missing is WMI) (Cameron Gutman)
  • Tested with our stubbed cmbatt driver but testing on Windows would be nice too (Cameron Gutman)
  • define _BATTERYCLASS_ to not get dllimport specifiers (Timo Kreuzer)
  • Fix a warning (Timo Kreuzer)

BUS

ISAPNP

  • Fix isapnp compilation for 64-bit (Timo Kreuzer)
  • 36961 (sginsberg) (Timo Kreuzer)
  • Rewrite the ISAPnP driver based off EtherBoot source (Cameron Gutman)
  • TODO: Resource stuff (Cameron Gutman)
  • Fix a typo (Cameron Gutman)
  • Comment it out from the bootloader. (Aleksey Bragin)
  • Remove it from machine.inf. (Aleksey Bragin)
  • This "driver" introduces significant delay at every boot due to i/o space scanning every time at every boot, however there is no real benefit (it always fails). Inclusion of this driver into default boot process might be reconsidered only after it starts providing some advantages. For now please test this driver in your own working copies. (Aleksey Bragin)

NPFS

  • Change the other side's to PIPE_STATUS_CLOSING_STATE in NpfsCleanup and NpfsClose so the reading/writing thread knows that the pipe is dead when we signal its event (Cameron Gutman)
  • Fixes iphlpapi_winetest hang and possibly bug #4689 (Cameron Gutman)
  • Partially revert r47370 and apply a better patch (Cameron Gutman)
  • Change ReadEvent and WriteEvent to notification events because we reset those events manually when we run out of buffer space (Cameron Gutman)
  • Fix race conditions in read IRP cancellation that resulting in random crashes and hangs (Cameron Gutman)
  • Fixes MULTIPLE_IRP_COMPLETE_REQUESTS bug checks and failed cancellations resulting in hangs during ntdll:file test (Cameron Gutman)
  • Acquire the cancel spin lock before calling IoSetCancelRoutine (Cameron Gutman)
  • Remove the old cancellation code (Cameron Gutman)
  • Don't use the CCB stored in the IRP because it could be invalid depending on the state of the IRP (Cameron Gutman)
  • Simplify thread termination (Cameron Gutman)
  • Fixes random crash during rpcrt4:ndr_marshall test (Cameron Gutman)
  • Return buffer size if the buffer is too small (Johannes Anderwald)
  • Add more buffer checks (Johannes Anderwald)
  • Clear DO_DEVICE_INITIALIZING flag (Johannes Anderwald)
  • Add invariant checks and fix a bug: Copy+Paste error misusing OldFlink (Art Yerkes)
  • Check if MmGetSystemAddressForMdlSafe failed (Johannes Anderwald)
  • Fix 2 memory leaks when creating a pipe fails (Johannes Anderwald)
  • Fix minor style issue (Johannes Anderwald)

I8042PRT

INPUT

AUDIO

MULTIMEDIA

SNDBLST_SYS

NETWORK

DD

  • Fix ne2000 compilation (treat pointer size as ULONG_PTR, correct function prototypes) (Timo Kreuzer)
  • 36958 (sginsberg) (Timo Kreuzer)

TDI

  • Convert to spec. Taken from amd64 branch (by Samuel Serapión) (Timo Kreuzer)

SERIAL

CLASS

DISPLAYS

VIDEO

FRAMEBUF
FRAMEBUF_NEW
VGA
  • When doing pointer arithmetic, ULONG_PTR is your friend (Timo Kreuzer)
  • 37234 (tkreuzer) (Timo Kreuzer)
  • Return SPS_ACCEPT_NOEXCLUDE from DrvSetPointerShape because we completed the requested operation successfully (Daniel)
  • Fixes bug 4347 (Daniel)

FONT

BMFD
  • 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)

MINIPORT

  • Begin implementation of VMWARE SVGA-II Video Card Driver. (sir_richard)
  • Implement GetEventLogInformation. (Eric Kohl)
  • OpenBackupEventLogA, OpenEventLogA, RegisterEventSourceA and ReportEventA: Call the ANSI RPC-Server Function directly instead of converting arguments to Unicode and calling the matching Unicode Function. (Eric Kohl)
  • OpenEventLogW: Fix argument checks. (Eric Kohl)
  • Merge r45400 from aicom-network-branch to fix the crash that occurs when Steam starts (Cameron Gutman)

VIDEOPRT

  • Committing on behalf of eVb> - Patch to make VideoPort INT10 Services return VP_STATUS instead of NT_STATUS. It is not the same thing. (sir_richard)
  • Make videoprt compile for 64-bit (Timo Kreuzer)
  • Disable Int10 support as it uses x86 specific structures (is this support still available on amd64?) (Timo Kreuzer)
  • Disable VideoPortEnable/DisableInterrupt -- HalEnable/DisableSystemInterrupt are not apparently present on NT AMD64, so need to figure out what else to use (and if these routine are still present on amd64 videoprt) (Timo Kreuzer)
  • The following this time for real: (Timo Kreuzer)
  • 40927 (tkreuzer) (Timo Kreuzer)
  • Also check for the BASEVIDEO option set and return true in that case also (Cameron Gutman)
  • Fixes a bug with boot time (F8) options on my WC (Cameron Gutman)
  • Merge r40926 from amd64 branch: (Timo Kreuzer)
  • return ERROR_INVALID_FUNCTION on amd64, not ERROR_INVALID_ACCESS from VideoPortEn/DisableInterrupt. Fixes compilation of videoprt for amd64. (Timo Kreuzer)
DRIVERS
CMIDRIVER
  • Fix a number of warnings, no actual code change (Love; #5336)
FILTERS
  • Remove memset and memcpy implementations from pin.c (Amine Khaldi)
LEGACY
SYSAUDIO
  • Don't build the pin descriptor as this will make problems with dynamic audio devices which dynamically adjust their audio pins (Johannes Anderwald)
  • Remove dead code (Johannes Anderwald)
  • Perform all allocations / frees in dedicated alloc / free function (Johannes Anderwald)

HAL

  • Initialize the i8259A PIC controllers in C, and add register structures and enumerations to document the bits. These were taken from ISA System Architecture 3rd Edition and EISA System Architecture 2nd Edition by Mindshare. (sir_richard)
  • Add code to detect EISA systems with ELCR (Edge/Level Control Register). Since the current HAL does not support these, warn users about any level/shared interrupts, since they are likely to cause trouble. (sir_richard)
  • header cleanup (Christoph von Wittich)
  • spaces -> tabs in rbuild file (Christoph von Wittich)
  • Cleanup part 1/x (Timo Kreuzer)
  • Rename each architectures default hal to "hal" and delete the stubbed "hal" module. (Timo Kreuzer)
  • Delete halamd64 (will later reuse the x86 hal) (Timo Kreuzer)
  • Rename "halmp" to "halmps" as it's called on windows (Timo Kreuzer)
  • Set HalInitSystem as entry point (Timo Kreuzer)
  • Move pcibus.c into hal_generic.rbuild (Timo Kreuzer)
  • Use a common .pspec file (Timo Kreuzer)
  • Use a directory.rbuild for halx86 as it was done for the other architectures already (Timo Kreuzer)
  • Move some code from hal_generic to hal_generic_up (Timo Kreuzer)
  • No code change (Timo Kreuzer)
  • Merge from amd64-branch: (Timo Kreuzer)
  • 44886 KxAcquireSpinLock: check for already owned lock only on debug builds, fix check in inner loop, don't call Kii386SpinOnSpinLock inside the inner loop, but instead of it, simplify the code. Stubplement Kii386SpinOnSpinLock in C (Timo Kreuzer)
  • 44893 Move spinlock inline functions into their own header, so they can be shared with hal. (Timo Kreuzer)
  • Merge HalpAcquireSystemHardwareSpinLock and HalpReleaseCmosSpinLock from Timo's AMD64 branch, and delete ASM implementations. (sir_richard)
  • Implement KeGetCurrentIrql, KeRaiseIrqlToDpcLevel, KeRaiseIrqlToSynchLevel, HalClearSoftwareInterrupt in C instead of ASM. (sir_richard)
  • Document and implement KiI8259MaskTable in C using actual bit positions. Each mapping is best to the best of my ability. (sir_richard)
  • Implement KfRaiseIrql in C, remove ASM version. (sir_richard)
  • Implement HalEnableSystemInterrupt and HalDisableSystemInterrupt in C instead of ASM. (sir_richard)
  • Implement and document the HalpSpecialDismissTable. Explain how each IRQ should be handled and what the special cases are. Implement said special cases (based on ISA System Architecture, 3rd Edition). (sir_richard)
  • Implement HalBeginSystemInterrupt in C instead of ASM, it jumps into one of the IRQ handlers registered in the HalpSpecialDismissTable. (sir_richard)
  • You really need to get your compiler version shit together. I was told GCC 4.4 is what's used in ReactOS, yet the build server insists on using an old and broken version of GCC that doesn't support half the things we're trying to do here! Hackfix the Mask Table by providing ugly and incomprehensible hex magic numbers for the mappings, if a GCC older than 4.4 is used. (sir_richard)
  • Okay, this one was my fault, forgot to built the nasty-ass HALMPS. Move the CMOS lock routines to the shared CMOS file. (sir_richard)
  • KfLowerIrql in C instead of ASM. Add the SWInterruptLookUpTable and SWInterruptHandlerTable to the code and keep the same mechanism as the ASM code used. (sir_richard)
  • Implement HalRequestSoftwareInterrupt in C instead of ASM. Remove deprecated ASM code that was unused. (sir_richard)
  • Implement HalEndSystemInterrupt and HalpEndSoftwareInterrupt. Remove more ASM code/tables that aren't unused anymore. (sir_richard)
  • Implement the APC and DPC software interrupt traps in C instead of ASM. Delete all contents of irq.S except the two GENERATE_TRAP_HANDLER stubs. (sir_richard)
  • Move the HalpApcInterrupt and HalpDispatchInterrupt to pic.c now that there is a C-macro to generate such stubs. Remove irq.S from build/sources. (sir_richard)
  • Rewrite all V8086-related code in C instead of ASM. Delete v86.s. Makes uses of new macros and developments in NTOS, but should now only end up getting called at shutdown and for bugchecks. (sir_richard)
  • Implement the profile and clock interrupt trap/handlers in C instead of ASM. This allows the kernel to remove the ugly hacks based on internal knowledge of how the assembly/stack of the HAL is supposed to look like. Everything is now done through a clean C interface. (sir_richard)
  • Fix HalpFlushTlb. Thanks to Stefan Ginsberg <stefan100@reactos.org> (sir_richard)
  • Mark ECX as clobbered in HalpNestedTrap, otherwise if the compiler decides to store IRQL in ECX, it will then be overriden with our ECX parameter. With this clobber, the compiler will use another register, such as EAX, to hold the IRQL. (sir_richard)
  • Rewrite IRQL handling. Alex's original code (lately translated to C) was a copy of the MicroChannel (MCA), Checked-Build HAL, an unexplained choice considering MCA is not supported or even available anymore. Windows, on machines with a PIC, uses a mechanism called Lazy IRQL, in which the PIC is only programmed "lazily", meaning that lowering and raising the IRQL does not actually change the interrupt mask. Therefore, lower priority interrupts will still come in at high IRQL. At this point, the HAL will detect this, only now mask the PICs, and lie that the lower interrupt was "spurious", while setting a pending bit. When the IRQL is lowered, the bit is detected, and a software/delayed "INT" is done with the correct IRQ vector number. More details are available in the typical resources. (sir_richard)
  • Implement support for Level interrupts, which are used by certain EISA cards, and more particularly, all PCI hardware. Level interrupts were not previously handled correctly, being treated as edge/latched interrupts instead. (sir_richard)
  • fix HalEndSystemInterrupt prototype. (Sylvain Petreolle)
  • Add debugging feature to HalpTrap06 error that sometimes happen. Please post/email/IM your trap frame should you see this error. (sir_richard)
  • Move Reactos logon sound to WindowsLogon sound scheme. (Sylvain Petreolle)
  • Fixes bug 5002. (Sylvain Petreolle)
  • Use _setjmp/longjmp instead of saving a trapframe in HalpBiosCall (Timo Kreuzer)
  • Restore fs in HalpTrap06. Should fix crash on 1st stage with VBox. (Timo Kreuzer)
  • Use it in HalpAssignPCISlotResources. (Daniel)
  • Replace the inline assembly for entering V86 and the actual V86 stub with real assembly. This is neccesary for compiler portability. Also creating 16 bit V86 assembly using 32 bit inline assembly is rather hackish. (Timo Kreuzer)
  • Add a mini-HAL static library (Hervé Poussineau)
  • Mostly the same thing as the real one, except interrupts and DMA (Hervé Poussineau)
  • UP/MP cleanup: (Timo Kreuzer)
  • remove KxAcquireSpinLock from halp.h, use the one from ntoskrnl instead (Timo Kreuzer)
  • Use generic/spinlock.c in hal_generic_up and hal_generic_mp (Timo Kreuzer)
  • Delete mp/spinlock.c (Timo Kreuzer)
  • Move cmos spinlock functions to spinlock.c to make sure they are compiled for both up and mp (Timo Kreuzer)
  • Move wrappers around fastcall functions to misc.c, as they are identical on up/mp. (Timo Kreuzer)
  • Move architecture specific files into appropriate folders (Timo Kreuzer)
  • Move UP specific files into up folder (Timo Kreuzer)
  • Add some files for amd64, just enough to make compilation start. (Timo Kreuzer)
  • Add Phase 0 HAL Heap Allocation/Mapping/Unmapping APIs, remove current broken APIs that depend on Mm having been initialized. These APIs use the HAL Heap that's typically at 0xFFC00000. FreeLDR seems to map this region correctly. (sir_richard)
  • Although currently implemented for ACPI support (to come), these APIs can now also be used to enable DMA in Phase 0 like NT, instead of only in Phase 1 like ReactOS. (sir_richard)
  • Implement helper registry routine. (sir_richard)
  • Implement function to set ACPI mode the "Windows way", which is to enable/disable the firmware mapper. PnP Manager should probably check this in the future. (sir_richard)
  • Split HalReportResouceUsage into per-platform function, since PC/AT HAL and ACPI HAL have different requirements. As a bonus, the ACPI HAL now identifies itself as ACPI Compatible, instead of using the "PC Compatible" moniker. (sir_richard)
  • Implement HalpGetNMICrashFlag so you can do NMI crashes now. (sir_richard)
  • Implement basic HalpRegistryPciDebuggingDeviceInfo for the day someone implements the Kd routines. (sir_richard)
  • HalpInitializePciBus needs to be different between "Bus Handler HALs" (non-ACPI/embedded) and "Non-Bus Handler HALs" (ACPI/x64). On ACPI, all we do is setup the raw PCI Stubs and NMI crashing. PC/AT will need more involved code. (sir_richard)
  • Smarter .rbuild separation so that ACPI and PC/AT hal don't rebuild the generic library twice. Now generic stays generic, and generic_pcat/acpi are add-on libaries just like generic_up and generic_mp. (sir_richard)
  • Fucken' A, I knew I'd forget one. (sir_richard)
  • HalpActiveProcessors is KAFFINITY, not LONG. Also, MP HAL lacked it. (sir_richard)
  • Move all HAL-specific names to halacpi.c and halpcat.c. This includes the PnP Device Name (e_isa_up vs acpipic_up", the HAL Name, and whether or not the firmware mapper should be disabled (tells I/O Manager to skip legacy detection). (sir_richard)
  • Implement HalpReportUsage! On ACPI, all is implemented, on PC/AT, we don't yet parse the ROM blocks in the registry (but does FreeLDR even put them in?), and I don't think we'll ever enable 16-bit port decoding since FreeLDR never detects ISA vs EISA machines (so we always run as ISA). (sir_richard)
  • Fill out the "????" entries in HalpDefaultIoSpace... more typical Alex "I copied something without knowing what it meant"-magic. (sir_richard)
  • Whoever came up with this MINIHAL idea... (sir_richard)
  • Remove an unnecessary hack now that PnP manager doesn't suck (as much ;)) (Cameron Gutman)
  • Fix a possible overflow of the hal heap in HalpMapPhysicalMemory64 and simplify the code. (Timo Kreuzer)
  • Give mini-hal it's own rbuild file (Timo Kreuzer)
  • Export HalPutDmaAdapter (Cameron Gutman)
  • Return the correct value if the PCI slot number is invalid (Cameron Gutman)
  • Use the bus number from the PCI BIOS instead of doing a manual probe if we can because it is much more accurate (our probing code doesn't detect buses without devices present) (Cameron Gutman)
  • Don't probe for devices at invalid locations on PCI type 2 buses (Cameron Gutman)
  • Check for a valid bus number so we don't return the wrong value (Cameron Gutman)
  • comment out some amd64 specific stuff from rbuild files. (Timo Kreuzer)
  • Fix a typo. (Aleksey Bragin)
  • Fix compiler preprocessor checks for the IRQL masks so other compilers than GCC get proper entries too. (Stefan Ginsberg)
  • Replace IRQL_DEBUG with DBG so we always check for incorrect IRQL on debug. I believe incorrect IRQL raise/lower is a common and serious enough error to always be checked for on debug builds without defining some special debug option. (Stefan Ginsberg)
  • Several Italian translation updates by Paolo Devoti. (Gabriel Ilardi; #5438)
  • Include the correct headers for amd64 vs i386 (Timo Kreuzer)
  • Move memory functions from halinit.c to new memory.c (Timo Kreuzer)
  • HalpAllocPhysicalMemory: MemoryFirmwareTemporary -> LoaderFirmwareTemporary (same value, different enum) (Timo Kreuzer)
  • Move all amd64 specific files to one amd64 folder (Timo Kreuzer)
  • Compile x86 specific timer code only on x86 (Timo Kreuzer)
  • Use KeRegisterInterruptHandler instead of manual idt manipulation (Timo Kreuzer)
  • add missing stubs for amd64 (Timo Kreuzer)
  • Delete empty folder (Timo Kreuzer)
  • Bus support in the HAL actually creates a further wedge between the different x86 HALs: There are actually two dinstinct implementations. On the ACPI HAL, the system is assumed not to have things like special ISA, MCA, EISA buses, and a PCI driver is used in combination with the ACPI Interface for PCI Bus support. On non-ACPI systems, the legacy "Bus Handler" library is used, and the HAL provides a core set of CMOS, EISA, ISA, MCA and PCI bus handlers, each with their own routines and specific code. Additionally, PCI IRQ Routing and other PCI bus internals are handled directly by the HAL -- on the ACPI HAL, the PCI Bus support is implemented through a "Fake"/static bus handler, just to keep the functions shared. On ReactOS, both the ACPI and non-ACPI HAL were currently using a mix of both HAL bus handling types, mostly implemented the "ACPI way" (with a fake PCI bus handler and such). (sir_richard)
  • As a result, none of the Hal*Bus HALDISPATCH routines were implemented, which bus drivers expect to find when they're not on ACPI systems (ReactOS today). eVb's new PCI driver was crashing, for example. (sir_richard)
  • Furthermore, legacy systems suffer, because the ACPI HAL Bus routines (that we currently have) expect perfect ACPI-style-compliant systems, not the legacy crap from the early 90ies. This works fine in VMs and new hardware, but old hardware is left behind. (sir_richard)
  • This patch basically corrects the first part of the problem, by making the bus handling support separate between ACPI and non-ACPI HALs. For now, the code remains 100% the same in functionality between both. (sir_richard)
  • However, I have started adding the first few elements: (sir_richard)
  • Implement HalRegisterBusHandler HALDISPATCH routine. (sir_richard)
  • On legacy HALs, register the CMOS, ISA, SYSTEM handlers. (sir_richard)
  • Add cmosbus.c. Stub all bus-specific bus handler routines in the xxxbus.c files. (sir_richard)
  • No real functionality change occurs with this patch, yet. (sir_richard)
  • Kill debug spew. (sir_richard)
  • Add missing PCI Bus Handler support functions, used on non-ACPI systems (ISA-PCI support and such). (sir_richard)
  • Detect, initialize, and create bus handlers for, all PCI buses that are found on the machine. (sir_richard)
  • Detect PCI-to-PCI Bridges, Extended CardBus Addressing, read Chipset Hacks from Registry, and scan for IRQ lines used by PCI Devices. Scan for PCI-IDE controllers, broken Intel PCI Bridges/Controllers. Scan for OHCI and UHCI USB controllers. Warn the user that if any of these are found, the current HAL does not handle certain types of these devices (these checks are based on the ones the Legacy Windows HAL makes). (sir_richard)
  • Detect IDE controllers. Their interrupts should not be masked. (sir_richard)
  • Detect, check for, and warn about, chipset hacks that need to be applied for the machine. (sir_richard)
  • Implement partly HalpFixupPciSupportedRanges to detect PCI Bridges, and PCI-to-PCI Bridges. The point is we want buses to be cramped down to the addresses supported by the parent bus/bridge. This is NOT currently done, so we warn users of these systems. (sir_richard)
  • Implement HalpGetPciBridgeConfig to detect PCI-to-PCI/CardBus bridges, warn if they are found. (sir_richard)
  • Modify the debug messages to be more accurate as to what exactly is unsupported. (sir_richard)
  • Plug in the data from pcidata.c that was committed months ago to display a beautiful enumeration of all PCI devices on the machine. This will allow debug logs not only to contain nearly full hardware information, but also identify the VM the tester/reporter is using (based on the device's subsystem ID). (sir_richard)
  • Display all the warning DPRINTs in-line with the PCI enumeration code, resulting in a much easier to read and comprehensive review of the machine. (sir_richard)
  • First use of bus handler support: HalGetBusDataByOffset now uses bus handlers. Please report any problems. (sir_richard)
  • Use Bus Handler support for HalSetBusDataByOffset. Please report any problems. (sir_richard)
  • Implement system bus (and ISA) vector/interrupt translation. (sir_richard)
  • Forgot file. (sir_richard)
  • Implement PCI Vector/IRQL translation too. (sir_richard)
  • Implement Bus Handler support for HalGetInterruptVector too. The new functionality now includes support for checking against reserved HAL vectors instead of blindling assining IRQLs/Vectors to callers. A warning is printed on the debug log when the old HAL would've returned different values. Please test. If you have issues, the problem is in the DRIVERS, not this code. (sir_richard)
  • Implement system bus address translation. (sir_richard)
  • Implement ISA BUS address translation. (sir_richard)
  • Implement HalTranslateBusAddress using Bus Handler support. The old HAL would just return whatever the caller gave (no translation was done). For example, with the new HAL, this now results in the translation of 0xCF800 in I/O space to fail (not sure which driver requests this), because this is not a valid I/O address on PC/AT systems (highest is 0xFFFF). (sir_richard)
  • This change also allows for the PCI driver to override the translation mechanism (which will piggy-back to the system bus translator) with its own. Please test. (sir_richard)
  • Implement HalAdjustResourceList using Bus Handler support. Previous HAL said this was "deprecated" and faked success. Although correct on ACPI HALs, this is a legacy HALs, so Bus Handlers have a chance to do ajdustment. (sir_richard)
  • Use Bus Handlers for HalpAssignSlotResources. Warn that current PCI Slot assignment code is frelled. (sir_richard)
  • Add PAGED_CODE(); (sir_richard)
  • Use Bus Handler support for HalFindBusAddressTranslation. Implement HalpContextToBusHandler to support this. Seems to work fine with bootvid (only user). (sir_richard)
  • All the HAL's bus functions now use Bus Handlers on Legacy systems. There are still big issues with PCI cards. (sir_richard)
  • eVb: PCI-x should work now. (sir_richard)
  • More PCI-related HAL patches may follow later. (sir_richard)
  • Stub support for future timer latency watchdog. (Aleksey Bragin)
  • Change older-style comments to standard ReactOS commenting style. (Aleksey Bragin)
  • Add missing call to HalInitPnpDriver during I/O manager initialization. The HAL PnP driver was never getting initialized. (Aleksey Bragin)
  • Add HAL callback for HalInitPnpDriver. It's going to be needed in future for eVb's PCI driver to fully work (interrupt translation, among other things). (Aleksey Bragin)
  • Don't include PCI IDs database into mini-HAL. (Aleksey Bragin)
  • Partly implement HalpAdjustPCIResourceList required for legacy HAL. No actual adjustment is done yet, since the Range package is not implemented. (sir_richard)
  • Implement most of HalpGetISAFixedPCIIrq, other than the legacy PCI IRQ Routing Miniport callbacks, which aren't yet implemented by ReactOS. (sir_richard)
  • The Windows PCI Bus Driver seems to work now. (sir_richard)

HALX86

  • Revert changes to HalpGetPCIData made in r47162. There is no need to introduce ReactOS-specific behavior of this function. It's much better to aim real NT compatibility, and develop your drivers against NT first and only then hack ReactOS. (Aleksey Bragin)
  • Changes to buses scanning are left as they are. (Aleksey Bragin)

INCLUDE

CRT

  • allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change (Jose; #5121)
  • since esp was altered, but the definitions were not actually changed (Jose; #5121)
  • vsnprintf: added support for ll size specifier (Jose; #5122)
  • Disable spooler service. (Sylvain Petreolle)
  • This allows bootcdregtest to start here under qemu-kvm. (Sylvain Petreolle)
  • Remove unused variables. (Amine)
  • add TrailBytes-info for codepage 1361 (Christoph von Wittich)
  • david dot hedberg at gmail dot com> (Christoph von Wittich)
  • add dsound_winetest to bootcd (Christoph von Wittich)
  • Call acpi_bus_set_power instead of acpi_power_transition (Samuel)
  • Make sure the device has power management capabilities before calling acpi_bus_set_power (Samuel)
  • Report the new power state with PoSetPowerState (Samuel)
  • Initialize PDOs with the correct device power state ( (Samuel)
  • Initialze PDOs with the correct system power state (Samuel)
  • Add a stub for GetOwnerModuleFromTcpEntry (Olaf)
  • fix palette index for the progress bar (Matthias Kupfer)
  • Make the shutdown with ACPI enabled actually work. (Samuel)
  • Stubplement WTSQueryUserToken. (Olaf)
  • Import x87 asm version of pow() from glibc. Replaces our broken implementation, fixing a bunch of winetests (oleaut32 vartest) (Timo Kreuzer)
  • add _wctype table, it's not identical to _ctype as assumed before (Timo Kreuzer)
  • point _pwctype to _wctype instead of _ctype (Timo Kreuzer)
  • implement __pctype_func and __pwctype_func (Timo Kreuzer)
  • 46502 (tkreuzer) (Timo Kreuzer)
  • define _CRTBLD (Timo Kreuzer)
  • rename float_t/double_t/long_double_t to float_s/double_s/long_double_s to avoid name conflicts (Timo Kreuzer)
  • 46511 (Timo Kreuzer)
  • Set crt="static" in freeldr, rtl, bmfs, ftfd, rtl, mini_hal (Timo Kreuzer)
  • define "CRTDLL" in ntdll, crtdll, msvcrt, msvcrt20, msvcrt40 (Timo Kreuzer)
  • 46535 (Timo Kreuzer)
  • fix behavior of _system (fixes msvcrt environ winetest) (Christoph von Wittich)
  • Don't define __int64 for clang ( (Amine)
  • Fix file and purpose in the header (Amine)
  • add clang compatible asm version of ldexp and make the code more readable (Timo Kreuzer)
  • constify strndup parameter to match standard (Timo Kreuzer)
  • fix broken pointer comparison in signal() (Timo Kreuzer)
  • mbstowcs: Fix incorrect size passed as the second parameter for call to RtlMultiByteToUnicodeN. (Michael Martin)
  • Fixes loading assemblies when manifest is in a manifest file due to parsing failure. (Michael Martin)
  • CRT update part 1/x (Samuel)
  • add support for non-underscored symbols (Samuel)
  • Add missing file (Timo Kreuzer)
  • Stubplement _controlfp_s, rand_s (Samuel)
  • Implement _invalid_parameter, _get_invalid_parameter_handler, _set_invalid_parameter_handler (Samuel)
  • Implement memmove_s, strncpy_s (Samuel)
  • Export memmove_s and memcpy_s (Sylvain Petreolle)
  • Implement rnd_s (Sylvain Petreolle)
  • Add a debug print to help bugs like 5486. (Gabriel Ilardi)
  • Merge r44143 from amd64 branch (Timo Kreuzer)
  • Initialize MmDebugPte from MiDebugMapping variable instead of using MiAddressToPte for a constant initializer. This way the page can be set dynamically. Use MmDebugPte to determine if ready for mapping physical pages. (Timo Kreuzer)
  • Move #include <precomp.h> to the top, as precompiled headers must be the first thing that is included or it won't take advantage of being precompiled (Timo Kreuzer)
  • Fix the double use of _CRTIMP. (Amine Khaldi)
  • Add amd64 versions of setjmp / longjmp (Timo Kreuzer)
  • Add amd64 versions of chkstk_asm.s, seh.s to libcntpr (Timo Kreuzer)
  • Add a number of amd64 specific math functions (Timo Kreuzer)
  • add generic c versions of cos and sin (Timo Kreuzer)
  • Remove leading underscores from amd64 symbols (Timo Kreuzer)
  • Improve NULL definition. (Amine Khaldi)
  • Add __MINGW_ATTRIB_UNUSED macro. (Amine Khaldi)
  • Convert FillBuf to static __inline. (Amine Khaldi)
  • Add logf wrapper (Timo Kreuzer)
  • Add amd64 inf files (Timo Kreuzer)
  • Get back r47063 & r47960 reverted by r48273 (Pierre Schweitzer)
  • Add diffs for msimtf and atl. (Sylvain Petreolle)
  • Add hivecls_amd64.inf (Timo Kreuzer)
  • Implement a proper version of _assert. It nows shows a message box with the details and let's the user choose to either abort, debug or ignore the assertion. (Timo Kreuzer; #5486)
  • bug 5507, bug 5511 (Timo Kreuzer; #5486)
  • Remove "implementations" of __lc_collate_cp, __lc_handle and __lc_codepage. These are not functions, but varuables, implemented as MSVCRT_* (Timo Kreuzer)
  • add ___lc_codepage_func and ___lc_handle_func taken from wine (Timo Kreuzer)
  • Fix msvcrt spec file (Timo Kreuzer)
  • Fixes compilation with gcc 4.5.1 (Timo Kreuzer)
  • Fix __MINGW_MSC_PREREQ logic. (Amine Khaldi)

REACTOS

LIBS

PSEH

MC

  • Add pciclass.mc required for eVb's PCI driver. Matches resource data in Windows driver, minus typos. (sir_richard)

SUBSYS

CSRSS
  • Fix yet another bug in the unused csrss code. (sir_richard)
  • Bang in the new thread support in a bunch of places, including creating static server threads. It's very hacked and handle duplication doesn't work 100% reliably, but it gets the job done. (sir_richard)
  • Add CsrGetProcessLuid, CsrImpersonateClient, CsrRevertToSelf, CsrShutdownProcesses, CsrFindProcessForShutdown required for user-mode shutdown. Right now we are able to reliably enumerate user apps (in the user LUID) and then service/system apps (in the LOCAL SYSTEM LUID). (sir_richard)
  • Differentiate between first-try and second-try shutdown. In the first try, the console server should defer to the user/win32k server to attempt shutdown for a non-console app. However, if we end up with a second try because this did not happen, then the console server takes matters in its own hands and calls the CTRL-C handler (with some exceptions, such as system/service apps, or apps not belonging to the LUID). (sir_richard)
  • Split off CSRSS into a more Windows-friendly model. CSRSS.EXE is simply a stub which loads CSRSRV.DLL, where all the actual code is present. (sir_richard)
  • Don't expect ReactOS to always boot from C:\ReactOS (that's not the case for LiveCD) (Hervé Poussineau)
  • Don't enumerate the ACPI root device (Cameron Gutman)
  • Let the ACPI driver handle fixed feature buttons (Cameron Gutman)
  • Don't call PrivateCsrssInitialized (Giannis Adamopoulos)

WIN32K

  • 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)
  • Update libxml to 2.7.7 (Samuel)
  • Resync zlib to 1.2.5. (Samuel)
  • 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)

XDK

  • 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)

BZIP2

LIB

3RDPARTY

FREETYPE

  • 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)
  • Cleanup old files (Timo Kreuzer)
  • Remove setjmplongjmp.s (Timo Kreuzer)
  • Correction to last commit message: the conversion patch was already applied (Timo Kreuzer)
  • Update to 2.3.12, conversion patch already applied (Timo Kreuzer)
  • Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. (Aleksey Bragin)
ICU
SOURCE
= COMMON =
== UNICODE ==

ICU4ROS

= TEST =
== PERF ==
  • Do not declare the PCR in KeGetPcr as volatile. It is only volatile as in "if there is a context switch, the PCR is different". You are in a LOT of trouble if the thread switches while your code is running in the first place, and your code is somehow running as a different thread! (sir_richard)
  • This change makes C code a lot neater, especially during PCR access, because it doesn't force reloading the PCR each time. For example, Read-Modify-Operations on the PCR, such as AND are 1 line of assembly instead of 3. (sir_richard)
  • This helps and will help further with the C HAL, as well as the C trap handlers. (sir_richard)
  • Jose Catena <jc1@diwaves.com> (Aleksey Bragin; #5139)
  • Fix a typo in aulldvrm (one of the dividends was always wrong). (Aleksey Bragin; #5139)
  • Replace early ZwClose system calls with ObCloseHandle(KernelMode). This avoids taking a system call for those cases and gives a slight perf boost to booting up the system. It also pushes the first system call somewhat later in the boot process, allowing for easier debugging should the interface have issues/need tracing. (sir_richard)
  • Make all trap handlers, trap exit code, fatal exit code, and exception dispatch code "no return" since it always leads to an iret or other kind of non-directly-returning mechanism. This allows the compiler to optimize better and also remove useless code at the bottom of the functions. Since __builtin_unreachable is only for GCC 4.5, we use exit(0) for now (it will never be reached) to trick GCC. (sir_richard)
  • Fix vmwinst.exe crash (bug #5134). (Dmitry Gorbachev)
  • Forgot ntdef.h (Dmitry Gorbachev)
  • Put #endif where it should be. (Dmitry Gorbachev)
  • Trying r45222 hack again... (Dmitry Gorbachev)
  • Use for GCC before 4.5, too... (Dmitry Gorbachev)
  • Comment out DECLSPEC_NORETURN for now. (Dmitry Gorbachev)
  • Make the trap entry/exit macros inlined, just as they used to be before in their pure-assembly forms. This should boost performance quite a bit by avoiding 2-3 extra calls during traps and system calls. (sir_richard)
  • Remove ABIOS checks since ReactOS does not support this, and since it doesn't look like the target kernel actually does either, we can remove this vestigal/unsupported code, saving some extra branches and checks. (sir_richard)
  • Use __builtin_trap for old GCC, too. (Dmitry Gorbachev)
  • KiEoiHelper, KiDispatchExceptionFromTrapFrame: mark noreturn. (Dmitry Gorbachev)
  • Return DECLSPEC_NORETURNs. (Dmitry Gorbachev)
  • After spending the better part of the last two days rewriting the HAL V8086 code (used for BIOS Display Reset) in C, it dawned upon me that it shouldn't even be used during bootup in the first place! The boot loader, running in real-mode, already sets video mode 12 when starting ReactOS. We then repeat the operation, but since we're in protected mode, we have to emulate the whole sheebang with V8086 mode. We now initialize bootvid without requesting a mode switch (which was broken up until a commit ago). This gives us a dirty palette and VGA state. We then call VidResetDisplay to clean up the palette and setup the VGA registers correctly, but we only reset the screen if a custom /BOOTLOGO command is used (which isn't supported yet). We therefore don't need to enter V8086 mode at all up until the switch to graphics mode from the video card driver. Note that Windows doesn't do this (Win7 might due to the new Boot Graphics Library), so we're actually booting faster! (sir_richard)
  • What to do when your SYSEXIT code has a bug? Set KiFastSystemCallDisable to TRUE so it never gets used. Now, for the first time in 3 years and 3 months (not giving a specific revision # to protect the 'innocent'), ReactOS actually fully uses the SYSENTER/SYSEXIT instructions isntead of IRETD, since my code doesn't exhibit the bug and SYSEXIT is safe to use. This should save a good hundred cycles or more per system call. (sir_richard)
  • Set WP0 bit in CR0 later, thus allowing the existing runtime patches (and this new one) to function without requiring MmSetPageProtect. Saves TLB flushes and page table walking/mapping on boot. (sir_richard)
  • Left in some debug prints to see what buildbot reports...will remove if it survives. (sir_richard)
  • Not in any way a scientific number you should bet the farm on, but we do now count the number of cycles at the very first instruction of kernel initialization, at the moment SMSS initializes the registry (when we call kernel initialization complete), and at the moment there have been 12 processes created (10 without counting idle/system), which is a bit less than a normal GUI boot. We also display the number if interrupts, system calls, and context switches it took to get us there. A purely comparative number, perhaps worthy for inclusion in testman/regression tests? (sir_richard)
  • Optimize nested interrupt cases (where a pending interrupt exists at the end of a software or system interrupt) just like the old HAL did, by jumping into a second-level handler and completing the outer trap frame instead of the nested trap frame. This saves a lot of cycles in those cases, and they do happen quite often (pending DPC at the end of an interrupt, for example). (sir_richard)
  • This is too since the C interrupt handling code is a lot more efficient than the ASM one. Numbers look good here. (sir_richard)
  • On real machines, writing the PIC mask is a relatively expensive I/O operation, and IRQL lower/raise can happen hundreds of times a second. Lazy IRQL provides an important optimization. (sir_richard)
  • Correctly handling level interrupts as level interrupts allows for faster, and more efficient, IRQ handling. (sir_richard)
  • add missing delimiters (Sylvain Petreolle)
  • Omit setting certain useless trap frame fields. (sir_richard)
  • Change instructions used to save registers on the trap frame to fix some WaW and RaW hazards. (sir_richard)
  • Merge some small changes from aicom-network-branch to fix potential memory corruption and remove unused code in oskittcp (Cameron Gutman)
  • Add a hack to WSHSetSocketInformation so we don't fail with options that aren't implemented yet (Cameron Gutman)
  • Fixes bug #5131 (Cameron Gutman)
  • Boot-time improvement since the new system driver loading code uses low-level Cm interfaces (portability side-effect: can be shared with FreeLDR) instead of the complex parse-based object-manager-based system-calls. (sir_richard)

MINGW

= ZLIB

CMLIB

DRIVERS

IP

  • Don't try to close the connection again if it has already been terminated by the remote peer (Cameron Gutman)
  • Translate OSK_EADDRINUSE -> STATUS_ADDRESS_ALREADY_EXISTS, OSK_ECONNABORTED -> STATUS_LOCAL_DISCONNECT, and OSK_ECONNRESET -> STATUS_REMOTE_DISCONNECT (Cameron Gutman)
  • Fixes waiting for binding during ws2_32 sock winetest (Cameron Gutman)
  • Handle socket operations that can be completed immediately before terminating the socket to avoid losing data sitting in the receive buffer (Cameron Gutman)
  • Merge second part of the comctl32 Wine 1.2 sync. (Ged Murphy)
  • All code currently omits the reactos specific patches. It's been a long time since we synched this lib so it's possible we no longer need them. Time will tell. (Ged Murphy)
  • This bug seems to have gone now. Tried to replicate it the devmgmt treeview. (Ged Murphy)
  • Add "bootcdregtest" in the list of well-known targets. (Aleksey Bragin)
  • Fix a major bug in socket closure. Prior to this, a socket with pending IRPs that could not be satisfied when the socket was closed would be destroyed without completing the pending requests. Now, we check all of our IRP queues if we get a SEL_FIN signal and kill all the requests that cannot be satisfied immediately. (Cameron Gutman)
  • Maybe it's just me but Firefox 2 seems much more responsive after this fix (like actually usable!) (Cameron Gutman)
  • Dereference the connection endpoint again if it was associated with an address file as the connection endpoint to fix a reference leak (Cameron Gutman)
  • Set the network mask and destination address in TCPGetInterfaceData (Cameron Gutman)
  • Fix a reference leak when aborting a listen request (Cameron Gutman)

OSKITTCP

  • Add a sanity check (Cameron Gutman)
  • Dedicated to Caemyr (Cameron Gutman)
  • Improve the reactos-hack, by changing the ";" after an "if (...)" to "(void)0;" to tell the compiler that we intentionally do nothing in the if body. (Timo Kreuzer)
  • Use RtlUlongByteSwap / RtlUshortByteSwap for byte swapping. They are portable and intrinsics on x86. (Timo Kreuzer)
  • Don't add leading underscores to symbols on amd64 builds (Timo Kreuzer)
  • Disable routing because oskit needs to let our code do that (Cameron Gutman)
  • Comment out the ACK hack and restore the default BSD behavior (Cameron Gutman)
  • Prevent multiple wakeups for the same event which caused nasty problems for the SEL_FIN event because we dereferenced our connection context 3 times which not only caused the connection endpoint to be freed while holding its spin lock but made the reference count negative (Cameron Gutman)
  • Only tell the caller how much we sent/received if it completed successfully (Cameron Gutman)
  • Set SO_DONTROUTE on accepted sockets too (Cameron Gutman)
  • Disable the core routing code (Cameron Gutman)
  • Make our MSS calculation much better by sharing the existing code (Cameron Gutman)
  • Check for a shutdown connection that we missed a few times (Cameron Gutman)
  • Remove some junk and stop playing with flags behind oskit's back (Cameron Gutman)
  • Fix an invalid parameter check (Cameron Gutman)
  • Enable a check to ensure that accept doesn't get called for a socket that isn't listening (Cameron Gutman)
  • Use the queue manipulation function instead of manually changing the queue (Cameron Gutman)
  • Signal that we accepted/connected a socket (Cameron Gutman)
MMEBUDDY
MMENT4
  • 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)

FSLIB

VFATLIB

  • 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)

SDK

INF

MEDIA

  • 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)

NTOSKRNL

  • KiConvertToGuiThread() "accesses memory in an unpredictable fashion". (Dmitry Gorbachev)
  • Never suppose that buffer in UNICODE_STRING is null terminated. Fixes display artifacts on list of loaded drivers (Hervé Poussineau)
  • Better fix for correct display of loaded drivers (Hervé Poussineau)
  • Use the correct file name for services which have differing service and image names (Cameron Gutman)
  • Fixes the file name of the display miniports on the SOS screen (VGA.SYS -> VGAMP.SYS and VBE.SYS -> VBEMP.SYS) (Cameron Gutman)
  • Fix a memory leak of the allocated IO_STATUS_BLOCK (Cameron Gutman)
  • Don't free unallocated memory (Cameron Gutman)
  • Send the IRP with the correct MajorFunction (Cameron Gutman)
  • Use IoBuildAsynchronousFsdRequest instead of IoBuildSynchronousFsdRequest (fixes potiential null pointer access when attempting to set the wait event which is NULL) (Cameron Gutman)
  • Set the correct stack parameters for the IRPs (Cameron Gutman)
  • merge wdm.h second attempt. This time taking more care of vista definitions. (Timo Kreuzer)


  • Remove the broken implementation of IoReportDetectedDevice and replace it with a fully working implementation (Cameron Gutman)
  • There is still a bug that it creates a new device instance every boot, but unlike the previous code, at least it creates one ;-) (Cameron Gutman)
  • Store the device's assigned resources (raw and translated) in the RESOURCEMAP key (Cameron Gutman)
  • Implement IopDetectResourceConflict and IopCheckForResourceConflict but don't report the conflicts until we get a resource arbiter (Cameron Gutman)
  • Halfplement IoReportResourceForDetection (Cameron Gutman)
  • Fix certain scenarios in which a device node can have a NULL instance path which causes registry corruption when we try to write registry keys for that device node (Cameron Gutman)
  • Create the 'Control' subkey and add the ActiveService value inside it (Cameron Gutman)
  • Fix a memory leak (Cameron Gutman)
  • TODO: Fill AllocConfig and FilteredConfigVector (Cameron Gutman)


  • Fixes the registry corruption caused when PnP wrote an invalid resource list (passed back via UserIosb->Information) to the registry (Cameron Gutman)
  • Hopefully this also fixes a few other nasty bugs in other areas related to this issue (Cameron Gutman)
  • On backtraces, print the address of the call instruction (assumed 5 bytes lentgh) instead of the return address, which in many cases does not make sense. (WinDbg does it this way, too) (Timo Kreuzer; #5301)
  • Fix Ke386SaveFpuState to store the fpu state in the buffer, but in the pointer to the buffer (Timo Kreuzer; #5301)
  • Anable Ke386SaveFpuState to save the floating point state in KiNpxHandler and KiTrap13Handler, so we know what error we got. (Timo Kreuzer; #5301)
  • Disable saving debug registers in the trap frame, as long as the kernel doesn't support this (Timo Kreuzer; #5301)
  • Fixes ntdll_winetest exception / OllyDbg freeze/reboot (Timo Kreuzer; #5301)
  • Fix RtlWalkFrameChain to do usermode back traces for threads that are not system threads. Also use _SEH2_YIELD when leaving the SEH block. (Timo Kreuzer)
  • Fix a typo that results in ISRs being called at an unsafe IRQL (Interrupt->Irql instead of Interrupt->SynchronizeIrql) in certain situations (when Interrupt->Irql < Interrupt->SynchronizeIrql) that can result in ISR synchronization issues (Cameron Gutman)
  • In kdbg 'thread list', don't try to read from the kernel stack if there isn't one. (Bug 5318) (Jeffrey Morlan)
  • Implement Ke386IoSetAccessProcess, Ke386SetIoAccessMap, and Ke386QueryIoAccessMap (Samuel)
  • Fix the issue properly by holding the PFN lock while initializing (Cameron Gutman)
  • NtDuplicateToken: If the called does not provide any desired access rights the duplicate token will inherit the granted rights of the original token. (Eric Kohl)
  • merge 46805 from amd64 branch: (Timo Kreuzer)
  • Implement KeRegisterInterruptHandler and KeQueryInterruptHandler for amd64 (Timo Kreuzer)
  • NtDuplicateToken: Fail, if a primary token is to be created from an impersonation token and and the impersonation level of the impersonation token is below SecurityImpersonation. (Eric Kohl)
  • Print the base address of the process that we killed to make debugging much easier (Cameron Gutman)
  • Implement IRP_MN_REMOVE_DEVICE handling for PnP root PDOs (Cameron Gutman)
  • Set the resource list pointer to NULL after we free it (Cameron Gutman)
  • Fixes a double-free issue in the resource conflict resolution code (Cameron Gutman)
  • Use the current partition descriptor to check for container partitions. Logical units in extended partitions become visible again but you cannot access them yet. (Eric Kohl)
  • This fixes the first half of bug #2564. (Eric Kohl)
  • Move to the next entry in the thread IRP list before calling IoCancelIrp because if everything works as expected and IoCompleteRequest is called, we could end up with the IRP ripped out from under us before can move to the next element (Cameron Gutman; #5550)
  • for details. (Cameron Gutman; #5550)
  • Revert 48546. The code was correct, and there is more of same code in other places which firstly cancels the IRP and then moves to the next entry. The actual bug is somewhere else. (Aleksey Bragin; #5550)
  • Fixed IoGetRequestorProcess, IoGetRequestorProcessId, IoGetRequestorSessionId (Pierre)
  • Pass user buffer in NtNotifyChangeDirectoryFile (Pierre)
  • Fixed magic value in IoGetPagingIoPriority (Pierre)
  • Simplified IopGetRelatedTargetDevice implementation (Pierre)
  • Added notification in case of success in NtSetVolumeInformationFile() (Pierre)
  • Some fixes to IRP cancelation process: (Pierre)
  • Renamed IopRemoveThreadIrp() to IopDisassociateThreadIrp() to match Windows 2k3 (Pierre)
  • Made dead IRP global, to make its debug easier. (Pierre)
  • IopDisassociateThreadIrp(), Handle dead IRP at dispatch level, using IoCompletionLock. (Pierre)
  • IopDisassociateThreadIrp(), Use the proper error code to write the entry to logs. (Pierre)
  • IoCancelIrp(), removed non needed ASSERT, which is even not present on Windows, removed corresponding var as well. (Pierre)
  • IoCancelIrp(), fixed parameters to KeBugCheckEx() call. (Pierre)
  • IoCancelThreadIo() is pageable. (Pierre)
  • IoCancelThreadIo() under Windows isn't using given thread, but using current. Do the same here. (Pierre)
  • All that stuff doesn't fix bug #5550, it comes from outside. (Pierre)
  • Initialize the Parent member of the new Vad to NULL. This also initializes the Balance to 0 aka RtlBalancedAvlTree (Timo Kreuzer)
  • Should fix the failed assertion that randomly occurs. (Timo Kreuzer)
  • Implement support for /BURNMEMORY option. (Jay; #4957)
  • Don't stop boot on bad memory type (Jay; #4957)
  • Fix handling of next instruction in kdbg. (Daniel; #4457)
  • Add missing parentheses. Fixes "cont" (Timo Kreuzer)
  • Add a special case to IopInitializeDevice for raw devices (Cameron Gutman)
  • Call IopInitializeDevice to set up our device node and ready it to start (Cameron Gutman)
  • Fixes assertions hit by ACPI and PCIX (Cameron Gutman)
  • Shutdown the system if we receive a SYS_BUTTON_POWER event (Cameron Gutman)
  • Register for GUID_DEVICE_LID arrival events so we can receive lid events (Cameron Gutman)
  • The trailing NULL is NOT included in the string length (Cameron Gutman)
  • IopNotifyPlugPlayNotification needs a pointer to an actual GUID not a UNICODE_STRING (Cameron Gutman)
  • The Power Manager can now see ACPI power devices again (Cameron Gutman)
  • ROS will now do a graceful shutdown and power off if the power button is pressed and ACPI is enabled (Cameron Gutman)
  • Append the DLL name and NULL terminate the string more nicely (Cameron Gutman)
  • Don't overwrite the ACPI hardware key on every boot (Cameron Gutman)
  • Fix a typo that broke handling of DevicePropertyEnumeratorName inside IoGetDeviceProperty (Cameron Gutman)
  • Rewrite MiFindEmptyAddressRangeDownTree. The old implementation's "most awesome loop" duplicated both the initialization and the interation steps. It was also overcomplicated. The new implementation additionally returns the parent for the following table insertion, so this doesnt need to be done in an extra search. The return value is changed from NTSTATUS to TABLE_SEARCH_RESULT (Timo Kreuzer)
  • Modify MiInsertNode to accept a parent and TABLE_SEARCH_RESULT instead of searching for a free location. (Timo Kreuzer)
  • Modify MiCreatePebOrTeb to make use of the new features (Timo Kreuzer)
  • Handle failed allocation of the PEB/TEB (Timo Kreuzer)
  • Fixes a failed assertion that Olaf got (Timo Kreuzer)
  • I tested this code quite some time and no problems were found (Timo Kreuzer)
  • Revert the change from REG_SZ to REG_MULTI_SZ because it turns out that Windows does it this same way (research fail?) (Cameron Gutman)
  • Fix to PpSetCustomTargetEvent(), not to make caller wait forever in case it provided an event it waits for (Pierre)
  • Fix a regression in ACPI function from r48581 (Cameron Gutman)
  • Enable ACPI for testing purposes (will be disabled next commit) (Cameron Gutman)
  • Disable ACPI again (Cameron Gutman)
  • When a node is removed, check the NodeHint of the table to see if it matches the one being removed. If so update the NodeHint to the PreviousNode. FIxes VAD corruption messages. (Michael Martin)
  • Revert 48640, as it was incorrect. (Michael Martin)
  • Modified version of r48640: (Timo Kreuzer)
  • update the NodeHint to the root node when deleting a node (Timo Kreuzer)
  • remove this code from MmCleanProcessAddressSpace (Timo Kreuzer)
  • Fixed wrong prototype for IopParseDevice(). (Pierre)
  • 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)

KDBG

  • Fix attaching to processes (registers / backtraces) (Timo Kreuzer)

CSRSRV

CSR

SUBSYSTEMS

  • Mostly moved all the current CSRSS code into CSRSRV, with some very minor changes to get it workking. (sir_richard)
  • Add some more code from Alex's CSRSRV, such as thread dereferencing/deallocation, hacked to work. (sir_richard)
  • Make CsrTerminateProcess destroy each CSR thread in that process, otherwise we were always leaking a handle, so processes never died. Because of this, primary tokens would remain "in use", and when umpnpmgr attempted to do a "Create Process as User" for the second+ time, the call would fail since the token from the first process was still around. This fixed that regression from the mailing list. (sir_richard)
  • Move the new process/thread management functions into new, dedicated files. Export some of the functions, so that win32csr can use them by linking to csrsrv. Last change needed for barebones user-mode shutdown support. (sir_richard)

NTVDM

CSRSS

WIN32

WIN32CSR
  • Rewrite harderror handling. (Timo Kreuzer)
  • The old code was a monster function, leaking memory, using ansi rather than unicode strings and not getting this right. It was also vulnerable to attacks, making csrss crash, when corrupt parameters were sent. (Timo Kreuzer)
  • Add primitive resizing support and automatic scrolling support (Adam; #2622)
  • Get rid of dynamic "LineBuffer": it wasn't being resized properly in all cases, causing corruption of Win32CsrApiHeap. Replaced with fixed buffer (painting a line with multiple TextOutW calls if necessary). (Jeffrey Morlan)
  • Fix display of harderror message box for STATUS_UNHANDLED_EXCEPTION (Timo Kreuzer)
  • Fix a FIXME: convert ASCII char to Unicode char with input codepage (Gregor Schneider)
  • Rename define parameters to make sense (prefix s - source, d - destination) (Gregor Schneider)
  • Assign remaining services to the LocalSystem account. (Eric Kohl)
  • Silence a debugprint (Timo Kreuzer)
  • Make CsrFreeConsole close the process's console handles. (Jeffrey Morlan)
  • Clean up the debris from r47314: Removed some redundant code, reorganized headers, fixed win32csr.rbuild indentation (Jeffrey Morlan)
  • Protect ProcessData->Console with the HandleTableLock. (Jeffrey Morlan)
  • Simplify locking: having a lock for each screen buffer is overkill since most programs only use one screen buffer at a time. (besides, almost all APIs were taking the console lock anyway) Reduce to just having one lock for a console. (Jeffrey Morlan)
  • Instead of keeping track of how many references a screen buffer has, keep track of handles only. When all handles to a screen buffer are closed, it should be deleted even if it's the active buffer (not yet implemented). (Jeffrey Morlan)
  • Delete even the active screen buffer when all handles are closed. Fixes a winetest. (Jeffrey Morlan)
  • Implement FILE_SHARE_* flags for console handles. Fixes some more winetests. (Jeffrey Morlan)
  • Make consistent use of RECT/SMALL_RECT structures: a RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive; a SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive. (Jeffrey Morlan)
  • Allow text selections outside of the visible window (Jeffrey Morlan)
  • Implement GetConsoleSelectionInfo (Jeffrey Morlan)
  • fix tuiconsole (Jeffrey Morlan)
  • Revert 47310. Please find a way to enable kmtest only when building the testing cd image, not the installation/live one. (Aleksey Bragin)
  • Implement console pausing. [Bug 4739] (Jeffrey Morlan)
  • Split up excessively large and disorganized conio.c into 3 separate files: one for input-related functions, one for output-related functions, and one for general/miscellaneous functions. (Jeffrey Morlan)
  • Consistently store console input events internally as unicode. (Jeffrey Morlan)
  • Console input simplification: (Jeffrey Morlan)
  • Put code for processing events for line input in one place, instead of duplicating it everywhere (Jeffrey Morlan)
  • Remove "Fake" and "NotChar" fields from ConsoleInput struct. ConioProcessKey didn't actually add Fake events; they were used for the \n when converting \r to \r\n, but this is better done by the line input code. (Jeffrey Morlan)
  • Build an input line completely on the server side; this will make it practical to add history and more sophisticated editing later (Jeffrey Morlan)
  • Implement some basic line editing capability (Jeffrey Morlan)
  • Implement basic support for history in line editing (Jeffrey Morlan)
  • Reorganize code to reflect that line input is more coupled to history than it is to character input (Jeffrey Morlan)
  • Fix array subscript out of bounds error (Timo Kreuzer)
  • Fix a cast (Timo Kreuzer)
  • Delete ppcdevtree. (Amine Khaldi)

TOOLS

GENINC

MKHIVE

  • Use newinflib instead of inflib. (Eric Kohl)
  • Add RegDeleteKeyW stub. (Eric Kohl)
  • Convert registry generation code from ANSI APIs to UNICODE APIs. (Eric Kohl)
  • wcsicmp -> _wcsicmp, should fix buildbot build (Gregor Schneider)
  • Fix a buggy format string (%s --> %S). (Eric Kohl)
  • Add _wcsicmp to rtl.c. (Eric Kohl)
  • Partial revert of r47019 because mkhive failed on Linux machines. (Eric Kohl)
  • Comment out an ASSERT that gets trigged frequently. (Timo Kreuzer; #5320)
  • Revert remaining changes of r47019. (Eric Kohl)
  • Add RegDeleteKeyW stub. (Eric Kohl)
  • Implement RegDeleteKeyA so that it calls RegDeleteKeyW. (Eric Kohl)
  • Check parameters before accessing them, update usage information (Gregor Schneider)
  • Active the planned cleanup function to motivate people to actually free resources: mkhive currently leaks ~500kb of memory after a usual run (Gregor Schneider)
  • Improve debug print (Gregor Schneider)

Uncategorized

  • Add Cyrix, Pentium MMX, Pro, II, M, 4, Core Solo/Duo/Extreme/i*, Atom, AMD K6, K6-3, Via Nehemiah, Esther, Nano and a big bunch of Family 15 (1st gen Athlon64, Turion64, Sempron Series) AMD CPUs to cpu.inf (Daniel Reimer)
  • These should be all CPUs out there we support.... (Daniel Reimer)
  • Generalize some lines to be used for a whole bunch of models. (Daniel Reimer)
  • Reduced size about 10kb that way. As long as we don't have a CPU driver I will keep it that way its now, because now it at least shows a approximate CPU Title in Devmgr. (Daniel Reimer)
  • Update zlib from 1.2.3 to 1.2.5 (Daniel Reimer)
  • DejaVu Fonts 2.30 -> 2.31 (Daniel Reimer)
  • Liberation Fonts 1.04 -> 1.05.2 (Daniel Reimer)
  • Update openoffice 2.4 Links to a new and working mirror (Daniel Reimer)
  • Add Opera 9 to rapps. (Daniel Reimer)
  • Update OOo to 3.2.1 and the last time... fix the FF2 link. (Daniel Reimer)
  • Update rapps database to most recent Versions of all apps. (Daniel Reimer)
  • Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing. (Daniel Reimer)
  • Updated VB6, VC2005, VC2008 links according to winetricks. (Daniel Reimer)
  • Update the rapps download list. (Daniel Reimer)
  • Fix the SeaMonkey Mirror. (Daniel Reimer)
  • Try to fix FF2 Download. (Daniel Reimer)
  • Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly. (Daniel Reimer)
  • Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself) (Daniel Reimer)
  • Update the rapps Database to a valid FireFox Link once more... (Daniel Reimer)
  • Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath) (Daniel Reimer)
  • Update Rapps Links and add the two RosBE Addons. (Daniel Reimer)
  • Add more HIDs for other CPUs and Manufacturers like VIA and AMD into cpu.inf to make it show the real CPU name in the Device Manager. This does not work yet, because our ACPI always returns the Default CPU HID right now. (Daniel Reimer)
  • http transport support commented out. (Daniel Reimer)
  • Remove unix functions that are no longer needed. (Daniel Reimer)
  • Comment out check in cpsf.c that caused 2nd stage dll registrations to fail. (Daniel Reimer)
  • All rpcrt4 tests no longer crash. (Daniel Reimer)
  • Forgot to remove some now useless header (Daniel Reimer)
  • Additionally I added a * to all Autosyncs which lie a bit back already. Will look through them and check which are still recent. (Daniel Reimer)
  • Update some more apps. (OpenOffice 3.2.0, SciTE 2.03) (Daniel Reimer)
  • DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2. (Daniel Reimer)
  • Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps. (Daniel Reimer)
  • Update the banner.bmp in credui. (Daniel Reimer)
  • Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps. (Daniel Reimer)
  • Remove Esperanto and Walon languages from comctl32, comdlg32, mpr, msi, shlwapi, wininet (Daniel Reimer)
  • Tidy up tree from duplicate files. (Daniel Reimer)
  • Sync winemp3.acm with Wine HEAD. This one uses libmpg123 which was added in Version 1.12.3. Thx to Timo Kreuzer for telling me the magics of the crt="dll" switch. (Daniel Reimer)
  • Update some psdk Headers (Daniel Reimer)
  • Fix libtiff's external functions. (Daniel Reimer)
  • Fix setupapi setupcab winetest. (Samuel Serapion) (Daniel Reimer)
  • Update libjpeg from 6b to 8b. (Daniel Reimer)
  • Add a new libpng 1.4.3 to main tree, linked dynamically, as libjpeg is, too. (Daniel Reimer)
  • Add libtiff 3.9.4, linked dynamically, too. (Daniel Reimer)
  • Enable both libs in wine/config.h which results in working png and tiff support in windowscodecs.dll (Daniel Reimer)
  • Update VLC to 1.1.0 (Daniel Reimer)
  • Sync format_msg from kernel32 (Samuel Serapion) (Daniel Reimer)
  • Winetest now passes with 0 errors. (Daniel Reimer)

is already added by "mingw_common". (Daniel Reimer)

  • Add SuperFinder XT to rapps. (Daniel Reimer)
  • Some more psdk updates needed for winetests. (Daniel Reimer)
  • Another updated wine header to fix some synched winetest's build process. (Daniel Reimer)
  • Update WIDL to Wine 1.2 rc6 + sync/modify two idl files making problems with the new widl. (Samuel)
  • Silence zlibs warnings (Samuel Serapion) (Daniel Reimer)
  • Update readme.wine (Daniel Reimer)
  • update wine's unicode app to 1.2rc6. (Samuel Serapion) (Daniel Reimer)
  • update kernel32 nls files to be able to build it with the new unicode tool. (Daniel Reimer)
  • convert the cmd rc files to utf-8 to fix building. (Daniel Reimer)
  • Update the d3dx9_XX.dll files to the recent wine release version. Mostly stubs, but many games appreciate their existance. (Daniel Reimer)
  • Update log2lines to Version 1.11 (Jan Roeloffzen) Bug 4342 (Daniel Reimer)
  • Added -P Pipeline option for Powershell support, see below (Daniel Reimer)
  • Renaming some structs to avoid potential naming conflicts with windows.h (Daniel Reimer)
  • stdin/out -> stdIn/Out for redirecting (Daniel Reimer)
  • Fixed potential mem leak (Daniel Reimer)
  • Bug 4342: Update log2lines to Version 1.12b. (Jan Roeloffzen) (Daniel Reimer)
  • Update piperead to Version 0.3 (Jan Roeloffzen) (Daniel Reimer)
  • A little more tracing and cleanup (Daniel Reimer)
  • Updated piperead (Jan Roeloffzen) Bug 5146 (Daniel Reimer)
  • Added Pipe client function, based on msdn example (Daniel Reimer)
  • Improved option handling (try piperead -h) (Daniel Reimer)
  • logging, error handling (Daniel Reimer)
  • Integrated in build (pipetools.mak) (Daniel Reimer)
  • Experimental try to get Itunes Setup start. By Samuel Serapion (Daniel Reimer)
  • XML Compliance Patch for the RBUILD Files. By Samuel Serapion (Daniel Reimer)
  • Sync sccbase, slbcsp, usp10, wldap32, wuapi and xinput1_3 to Wine 1.1.40 (Daniel Reimer)
  • The big RosBE 1.5 compatibility patch. You will need RosBE 1.5 from this point! (Colin Finck; #4810)
  • Set the minimum GCC version to 4.4.0 and minimum Binutils version to 20091016. (Colin Finck; #4810)
  • Remove the -fno-unit-at-a-time hacks. (Colin Finck; #4810)
  • Remove dgorbachev's temporary hacks for user-mode C++ applications. (Colin Finck; #4810)
  • Merge ntoskrnl's "precomp.h" and "ntoskrnl.h" again, the PCH issues have been fixed. (Colin Finck; #4810)
  • Use our "ofmt_stub.a" to be compatible with newer MinGW Runtime versions. (Colin Finck; #4810)
  • Use LD's new -exclude-all-symbols option to not auto-export all symbols in case no DEF file or __declspec(dllexport) was specified. (Colin Finck; #4810)
  • We used to patch our LD version to work around this problem. (Colin Finck; #4810)
  • Use LD's --start-group and --end-group parameters to allow a more flexible linking order. (Colin Finck; #4810)
  • Use GCC's -fno-set-stack-executable for amd64 and i386 targets to disable adding the __enable_execute_stack code. (Colin Finck; #4810)
  • Change the makefile's name to "makefile-$(ARCH).auto" for all architectures. (Colin Finck; #4810)
  • Remove some -Wno-error flags. (Colin Finck; #4810)
  • We don't need "csq.h" twice in our tree. (Colin Finck)
  • This ancient version didn't even receive the GCC 4.1 compatibility update from years ago, so it's safe to remove it. (Colin Finck)
  • Put Vizzini's "csq.h" in the Public Domain with permission from the author: (Colin Finck)
  • sedwards> I talked to vizini (Colin Finck)
  • sedwards> it's public domain (Colin Finck)
  • sedwards> do what you will (Colin Finck)
  • sedwards> slap your name on it (Colin Finck)
  • sedwards> and submit it (Colin Finck)
  • Colin_Finck> I can just do a commit to put it under PD now and everything will be alright? (Colin Finck)
  • sedwards> yes, the author who wishes to remain anonymous is quite fine with that (Colin Finck)
  • Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. (evb)
  • Fix wrong initialization of different modes and stacks. (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)
  • More cleanup/work needed. (evb)
  • Will post Wiki on testing info soon. (evb)
  • Fix bugs. (evb)
  • Enable serial output. (evb)
  • Forgot to change SARCH back to Versatile. (evb)
  • More fixes (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)
  • Implement IRP_MN_QUERY_DEVICE_RELATIONS with PciFdoIrpQueryDeviceRelations and PciQueryDeviceRelations (evb)
  • Begin PciScanBus, now just dump all found device with no more work (0 QDR return) (evb)
  • Support PCI device resource dicsovery for limit and current now, so bridge + device BAR functionning (evb)
  • PciScanBus second pass enabled: PciProcessBus, most stubs now until VGA/ISA system tested (evb)
  • PciClassifyDeviceType implement as helper function (evb)
  • PCI Enumeration 100% complete! (evb)
  • Add new unified VGA/VBE miniport driver. Based on NT4 DDK Cirrus Miniport Driver Sample with my modifications (marked with // eVb) to change Cirrus parts to VGA parts if needed. Also add VBE suppor which is not in Cirrus driver, but exists in Windows VGA miniport. (evb)
  • Work-in-progress, can boot to GUI with VMWare, but banked modes not yet supported, no VDM, no Mode-X, etc... (evb)
  • Thanks to sir_richard for help with headers, comments and other English stuff. (evb)
  • Driver is only built, not yet used. (evb)
  • NOTE: Some parts of BootVid seem to use functions copied from this sample (VgaInterpretCmdStream) but under "GPL", and also buggy (Chain4 Mode test will not work on most cards and VgaIsPresent == FALSE). Someone should fix. (evb)
  • New Framebuffer (Linear) Display Driver to support new unified VGA/VBE miniport. Based on NT4 DDK Sample, with modifications by me (marked with // eVb) to support new functionality needed for 2003-era driver. (evb)
  • Also used Virtual Box Display Driver as sample, which is based on "GPL" Windows 2003 DDK sample driver. Could not use 2003 DDK sample directly because of licensing issues, and feel unsafe about VirtualBox "GPL" driver that says "PATENTED AND ONLY FOR USE IN MICROSOFT PRODUCTS". (evb)
  • Note that old driver was based off DDK sample too, but with variables renamed (some comments identical!) and code reformatted, then marked as "GPL". This is not very good way to share/use code... one day someone can teach you lesson. (evb)
  • Remove bits saying dithering supported, since code patented and removed (also, ReactOS win32k not support dithering calls!). (evb)
  • Fix bugs. (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)
  • Add GetTime stub, bump version to 1.4. (evb)
  • Implement function for drawing character on the screen when request come from firmware. (evb)
  • Tui.c assumes all screens are x86 VGA Consoles with 8-bit character and 8-bit attribute. On ARM, call Mach function to draw character instead of drawing into ScreenMemory off-screen buffer. (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)
  • Begin implement full PCI Bus Driver. code by me comments by sir_richard to avoid Engrish (evb)
  • DriverEntry full 100% implemented, ACPI WatchDog detect, PCI IRQ Routing detect, PCI errata/hackflag detect (PciGetDebugPorts not support, need PCI Debug Device to test) (evb)
  • Native (S)ATA, PCI BIOS Resource Lock, System Errata/Hackflag also is detect (evb)
  • HAL Hoooking enabled, callbacks stub (evb)
  • Stub PnP Interfaces: PciAddDevice, PciDriverUnload, PciDispatchIrp (evb)
  • PCI utility routines: PciUnicodeStringStrStr, PciStringToUSHORT, PciIsSuiteVersion, PciIsDatacenter, PciOpenKey, PciGetRegistryValue, PciBuildDefaultExclusionList done (evb)
  • PCI Verifier Support for future: PciVerifierInit/PciVerifierProfileChangeCallback (stub) (evb)
  • Thank you for much patience~ This 1200 first codes, have 12000 codes more to come!~~ (evb)
  • More implement of PciScanBus, now read hack flags from table (PciGetHAckFlags), and check for critical device (PciIsCriticalDeviceClass) and VGA device on PCI bridge (evb)
  • Do check for skipping some function (double decker ghost, Intel Alder SMP Pentium Pro machine, hacl flag, more), PciSkipThisfunction (evb)
  • Do check for PDO already exist for function (PciFindPdoByFunction) (evb)
  • Finish impement PciFindParentPciFdoExtension (evb)
  • Implement PciPdoCreate and add all PDO IRP stub functions, set dispatch table for major/minor command, add PciIrpInvalidDeviceRequest (evb)
  • Fix bug in PciFindPdoByFunction should check device slot info too (evb)
  • Add more enumeration codes in PciScanBus to create PDO (evb)
  • PCI_HACK_FAKE_CLASS_CODE support (evb)
  • Build PDO extension, set ready for PnP manger, now 41 QDR returned (evb)
  • Add PCI/CardBus Bridge to list (evb)
  • Detect bridge/IDE controller with no power down support, hack for Intel 82375 PCI to EISA bridge for Alpha thanks to sir_richard (evb)
  • QUERY_ID is sent to PDOs now! (evb)
  • More PciScanBus codes now to check saved PCI BIOS config header saved in registry (PciGetBiosConfig, PciSaveBiosConfig) and support load save compare (PcipIsSameDevice) if change in interrupt line (evb)
  • Also for interrupt line use HAL to get parent bus IRQ# if device connected (PciGetAdjustedInterruptLine) (evb)
  • For PCI debug HW PciIsDeviceOnDebugPath to detect, but have not real machine with this kind of device to test (evb)
  • Support PCI_HACK_NO_SUBSYSTEM and PCI_HACK_NO_SUBSYSTEM/REVISION_AFTER_D3 for when compareing (evb)
  • New config function required PciWriteDeviceConfig to update IRQ line from BIOS registry data (evb)
  • Save initial, current Command enables to PDO extension, interrupt data too (evb)
  • Can't sleep so write more source codes! add scan bus functions to get power caps (PciGetEnhancedCapabilities) and AGP caps, use PciReadDeviceCapability util function, now can get wake levels, PCI power state plus target AGP ID. Now can find PCI Device that can't sleep neither! Ha-ha! (evb)
  • Support PCI_HACK_NO_PM_CAPS, PCI_HACK_PRESERVE_COMMAND, PCI_HACK_DONT_DISABLE_DECOES (evb)
  • Add scan bus function to set power for PCI, for now to power up (PciSetPowerManagedDevicePowerState), with support for device that is critical/broken (PciCanDisableDecodes) (evb)
  • Check spec-correct with PciStallForPowerChange after define PciPowerDelayTable for D0<->D3 crossmatrix spec timings (add PciReadDeviceConfig for support) (evb)
  • If bad spec timing use PCI verifier support (PciVerifierRetrieveFailureData) + STATUS_DEVICE_PROTOCOL_ERROR (evb)
  • Add PciVerifierFailureTable with all failure type (evb)
  • Almost the time for resource discovery of BARs! (evb)
  • Added support IOCTRL_QUERY_PUBLIC_ACCESS_RANGES, IOCTRL_SET_PALETTE_REGISTERS, IOCTRL_QUERY_CURRENT_MODE, used by test Standard VGA-only display driver. (evb)
  • Code from NT4 DDK Cirrus miniport with some mods by me. (evb)
  • Missing PCI_BUS_DRIVER_INTERNAL added to bugcodes. Thx for sir_richard to show me how to add. (evb)
  • Implement Root Bus FDO AddDevice codes, get boot config, connect to HAL or ACPI config handlers (PciQueryForPciBusInterface, PciGetConfigHandlers), read BUS FDO hack flag, get _HPP HotPlug PCI ACPI data and initialize arbiter support. (evb)
  • PciGetHotPlugParameters work but no PCI HotPlug support on my machines, so cannot test ACPI data, that part stub now (evb)
  • Add PciFdoDispatchTable, PciFdoDispatchPnpTable, PciFdoDispatchPowerTable but all stub to PciIrpNotSupported however set correct IRP Dispatch Style for the IRPS (evb)
  • Arbiter support in PciInitializeARbiters done, but PciInterfaces array is NULL (stub) at moment (evb)
  • Add PCI_SIGNATURE, PCI_STATE, PCI_DISAPTCH_STYLE type, add PciInitializeState to begin the state support (evb)
  • Add structure for PCI_FDO_EXTENSION, PCI_SECONDARY_EXTENSION, PCI_INTERFACE, PCI_ARBITER_INSTANCE, PCI_DISPATCH_TABLE (evb)
  • PCI utility functions added: PciFindParentPciFdoExtension, PciInsertEntryAtTail, PciInsertEntryAtHead, PcipLinkSecondaryExtension, PciGetDeviceProperty, PciSendIoctl (evb)
  • Need sir_richard to add arbiter.h header to define ARBITER_INSTANCE for finish support (evb)
  • This 1000 more codes done now~ (evb)
  • Implemented IRP dispatch to work in new PCI driver (PciDispatchIrp), fill out FDO IRP handlers which all stubs now, make up/down-call work (PciPassIrpFromFdoToPdo, PciPassDownIrp) (evb)
  • Added the helper debug routines (evb)
  • PCI driver receive IRP_QUERY_INTERFACE now and hit stub (evb)
  • Fix for code to handle IRP dispatching when unrecognized IRP (Thanks you sir_richard) (evb)
  • Add FDO IRP_MN_QUERY_INTERFACE support (it calls PciQueryInterface) (evb)
  • Add all PCI interface descriptor: PciLocationInterface (GUID_PNP_LOCATION_INTERFACE), PciPmeInterface (GUID_PCI_PME_INTERFACE), PciCardbusPrivateInterface (GUID_PCI_CARDBUS_INTERFACE_PRIVATE), PciLegacyDeviceDetectionInterface (GUID_LEGACY_DEVICE_DETECTION_STANDARD), AgpTargetInterface (GUID_AGP_TARGET_BUS_INTERFACE_STANDARD), PciRoutingInterface (GUID_INT_ROUTE_INTERFACE_STANDARD), BusHandlerInterface (GUID_BUS_INTERFACE_STANDARD) and stub initializer and constructor. (evb)
  • Add missing devhere.c interface file (evb)
  • Add all PCI arbiter descritptor: ArbiterInterfaceBusNumber, ArbiterInterfaceMemory, ArbiterInterfaceIo. Write constructor stub but not handled ArbitersInitialized == TRUE (evb)
  • Also add last-resort PCI interface: TranslatorInterfaceInterrupt (GUID_TRANSLATOR_INTERFACE_STANDARD) and part implement tranirq_Constructor (evb)
  • Add PciQueryInterface to find correct FDO/PDO/ROOT interface for a request and call interface constructor (evb)
  • Fix interface signatures, fix interface constructor type and PCI_INTERFACE, add interface flags (Thanks sir_richard) (evb)
  • Fix Aribtriter code (Thanks sir_richard) (evb)
  • Now another 1200 codes added, soon time for enumeration code! (evb)
  • IRP_MN_START_DEVICE implement for ROOT FDO (PciFdoStartDevice) (evb)
  • PciInitializeArbiterRanges implement to scan arbiter not yet construct since Arb library missing (evb)
  • Add PCI state machine (PciBeginStateTransition, PciCancelStateTransition, PciCommitStateTransition) andtransition array (PnpStateTransitionArray) to check if valid (evb)
  • Now IRP_MN_QUERY_DEVICE_RELATIONS sent to ROOT FDO means time to enumerate bus! (evb)
  • Add all pci bridge control function (PciBridgeIoBase, PciBridgeIoLimit, PciBridgeMemoryBase, PciBridgeMemoryLimit, PciBridgePrefetchMemoryBase, PciBridgePrefetchMemoryLimit, PciBridgeMemoryWorstCasealignment, PciBridgeIsPositiveDecode, PciBridgeIsSubtractiveDecode) (evb)
  • More support ICH0/1/2/3/4 hub (evb)
  • Add all PCI2PCI bridge limit/current resource codes (PPBridge_*), now is BAR setup okay, and Device_* must be implement (evb)
  • Support ISA+VGA legacy decode, 20+64-bit decode, ROM BAR, prefetch BAR (evb)
  • Add support for PnP IRP to PDO: IRP_MN_QUERY_BUS_INFORMATION (PciQueryBusInformation), IRP_MN_QUERY_ID (PciQueryId), IRP_MN_QUERY_DEVICE_TEXT (PciQueryDeviceText), IRP_MN_QUERY_CAPABILITIES (PciQueryCapabilities), IRP_MN_QUERY_DEVICE_RELATIONS (PciQueryTargetDeviceRelations implement, PciQueryEjectionRelations, stub) (evb)
  • Stub support for PnP IRP to PDO: IRP_MN_QUERY_RESOURCE_REQUIREMENTS (PciQueryRequirements), IRP_MN_QUERY_RESOURCES(PciQueryResources) (evb)
  • Add support for PnP IRP to FDO: IRP_MN_QUERY_CAPABILITIES (handle in PciFdoIrpQueryDeviceCapabilities) (evb)
  • Build device capability UI number (PciDetermineSlotNumber), use PIR$ (seem support broken, need to check loader) or device property for bus not root (evb)
  • Use parent attachee device and this PDO for build device/system wake states, latency, device/system power mappings (evb)
  • PCI-ID manage support: PciInitIdBuffer, PciIdPrintf, PciIdPrintfAppend (evb)
  • Debug helper: PciDebugDumpQueryCapabilities (evb)
  • Thanks richard for advise + beer (evb)
  • PCI-X driver now pass 10000 codes lines! (evb)
  • IRP_MN_QUERY_RESOURCES support for PDO (PciQueryResources, PciAllocateCmResourceList), now remain IRP_MN_QUERY_RESOURCE_REQUIREMENTS to last device stack interogration from PNPMGR (evb)
  • IRP_MN_QUERY_RESOURCE_REQUIREMENTS half support now, PciQueryRequirements, PciAllocateIoRequrementsList, full implement, but PciBuildRequirementsList return 0 always for now (evb)
  • Debug helpers: PciDebugPrintIoResReqList, PciDebugPrintIoResource, PciDebugCmResourceTypeToText (evb)
  • Now hit assert Assertion '(DeviceNode->Flags & DNF_ADDED)' failed at ntoskrnl/io/pnpmgr/pnpmgr.c line 201, too night to debug, maybe tomorow (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)
  • Now pass 7000 SLOC ^_^;~ Good night! (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)
  • More fixes (evb)
  • Flesh out more code. (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)
  • shellapi.h] (Timo Kreuzer)
  • fix inclusion of pshpack / poppack (global and not for _WIN64) (Timo Kreuzer)
  • DHCPCSVC] (Cameron Gutman)
  • Move code from dhcp to dhcpcsvc (Cameron Gutman)
  • Export ServiceMain from dhcpcsvc (Cameron Gutman)
  • Now our DHCP service is compatible with the Windows architecture (Cameron Gutman)
  • Remove dhcp from build (Cameron Gutman)
  • Restore SVN history (Cameron Gutman)
  • Part 2 of x (Cameron Gutman)
  • INFLIB] (Timo Kreuzer)
  • Merge r36443 from amd64 branch: (Timo Kreuzer)
  • Remove references to Infp Functions that collide with inflib names, call the actual functions instead of making small functions that shared the same parameters and just called into inflib anyway, with no changes whatsoever. (Timo Kreuzer)
  • NTOSKRNL / RTL] (Eric Kohl)
  • Implement BreakOnTermination case for NtQueryInformationProcess and NtSetInformationProcess. (Eric Kohl)
  • Implement RtlSetProcessIsCritical. (Eric Kohl)
  • rpcndr.h] (Timo Kreuzer)
  • Add a tag to NDR_SCONTEXT struct. MS headers don't have it, but gcc 4.5.x requires it, because without the tag, the struct would be from an unnamed namespace and can't be shared by different compilation units in C++. Yeah whatever... (Timo Kreuzer)
  • sdkddkver.h] (Timo Kreuzer)
  • Add UL suffix to some constants. (Timo Kreuzer)
  • wine/commctrl.h] (Timo Kreuzer)
  • Don't use #include_next, instead imclude psdk/commctrl.h (Timo Kreuzer)
  • _mingw.h] (Amine)
  • Help compilation with clang. (Amine)
  • ReactOS-amd64.rbuild] (Timo Kreuzer)
  • The old explorer won't compile for amd64 without massive hacking, so remove it from the build. (Timo Kreuzer)
  • DDK} (Timo Kreuzer)
  • Add a number of PCI related types to ntddk.h (Timo Kreuzer)
  • Revert r47553 because testbot doesn't like it (Timo Kreuzer)
  • WINEMP§.ACM] (Timo Kreuzer)
  • Define WIN32 to fix compilation for anything else than x86 (Timo Kreuzer)
  • NDK] (Timo Kreuzer)
  • Add missing TEB member for Vista (Timo Kreuzer)
  • stdlib.h] (Timo Kreuzer)
  • Improve definition of __mb_cur_max and related (Timo Kreuzer)
  • properly handle _M_CEE_PURE (Timo Kreuzer)
  • HHCTRL.OCX] (Christoph von Wittich)


0

  • Fix pointer arithmetics in the gdi batch code (&pTeb->GdiTebBatch.Buffer is a PULONG, but pTeb->GdiTebBatch.Offset is a byte offset) (Timo Kreuzer)
  • To prevent this from happening again, refactor the code to use one common routine GdiAllocBatchCommand to do most of the stuff. (Timo Kreuzer)
  • Reenable gdi batch for SelectObject (Timo Kreuzer)
  • Fixes gdi handle leak, causes some drawing problems in Acrobat reader, but those are less critical and I'll investigate those. (Timo Kreuzer)

_EX

ADVAPI32_LSASRV

  • Implement LookupPrivilegeValueW and LsaLookupPrivilegeValue. (Eric Kohl)
  • Move lookup code from LookupPrivilegeValueW to LsarLookupPrivilegeValue. (Eric Kohl)
  • Implement LookupPrivilegeNameW and LsaLookupPrivilegeName. (Eric Kohl)
  • Move lookup code from LookupPrivilegeNameW and LsarLookupPrivilegeValue into a separate file. (Eric Kohl)
  • Katayama Hirofumi MZ <katayama DOT hirofumi DOT mz AT gmail DOT com> (Matthias Kupfer; #5487)
  • Preperation of quick preview für themes. (Matthias Kupfer; #5487)
  • for details. (Matthias Kupfer; #5487)
  • unix has no io.h. (Sylvain Petreolle)
  • move its include to a _WIN32 block. (Sylvain Petreolle)
  • Export LsaLookupPrivilegeName. (Eric Kohl)
  • Move mockup code from advapi32 to lsasrv (LsaLookupSids --> LsarLookupSids). (Eric Kohl)
  • Make LsaLookupSids call the server function LsarLookupSids. (Eric Kohl)
  • LookupAccountNameW: Call LsaLookupNames instead of returning a dummy name. (Eric Kohl)
  • Implement LsaLookupNames. Calls LsarLookupNames. (Eric Kohl)
  • LsarLookupNames: return dummy names. (Eric Kohl)
  • Merge r45430 from amd64-bringup : Add #pragma intrinsic for msvc intrinsics. (Amine Khaldi)
  • Fix _InterlockedExchangeAdd16, _InterlockedCompareExchangePointer and _InterlockedExchangePointer intrinsics. (Amine Khaldi)

ARMDDK

  • Use the same KPCR structure on ARM as on x86. (sir_richard)
  • Use the same addresses for KPCR and KUSER_SHARED_DATA on ARM as on x86. On ARM however, since there are no "segments", the KPCR is also mapped in user-mode, read-only, to have a static structure that can point to the current TEB. (sir_richard)

A|W

  • TODO: Add same checks to IShellLinkW interface and fix IShellLink::GetPath / SetPath / SetIdList / GetIdList logic. (Amine Khaldi)

BASE_SYSTEM_EXPAND

  • 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)

BOOTCD_LIVECD

  • Add -$(ARCH) to non-x86 bootcd and livecd image names. (Timo Kreuzer)

BUGCODES

CMLIB_NEWINFLIB_MKHIVE

  • Make cmlib, newinflib and mkhive use the Wine unicode lib instead of the host_wcsfuncs lib. (Eric Kohl)
  • Only the header file include/host/wcsfuncs.h is still used to map str*W functions to wcs* functions in WIN32 builds. (Eric Kohl)
  • Remove obsolete rtl functions. (Eric Kohl)
  • Make mkhive use the newinflib instead of inflib. (Eric Kohl)
  • Remove duplicate line. WRC complains about the control id already being in use. (Eric Kohl)
  • Delete ANSI version. (Eric Kohl)
  • Convert hivedef_i386.inf to Unicode. (Eric Kohl)
  • Add Strings-Sections for several languages and add TEMP_DIR string. (Eric Kohl)
  • Please translate the TEMP_DIR string as this is the sollution for bug #2482. (Eric Kohl)


CPORTLIB

  • Implement Windows' Cp (ComPort) library. See Notes in C file. Not yet used. Based on MS Whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation. (Anton)
  • Fix typos in the description of serial port defines. (Aleksey Bragin)

DDK_NDIS

  • Add missing ntstatus.h inclusion. (Amine Khaldi)
  • Group some related definitions. (Amine Khaldi)
  • Add several missing ones. (Amine Khaldi)
  • update README.WINE (Jérôme Gardou)
  • Group some related definitions. (Amine Khaldi)
  • Remove some duplicated NDIS_MINIPORT_MAJOR_VERSION/NDIS_MINIPORT_MINOR_VERSION combinations. (Amine Khaldi)
  • Add some missing NDIS_LEGACY_DRIVER guards. (Amine Khaldi)
  • _ANONYMOUS_UNION -> __MINGW_EXTENSION (Amine Khaldi)
  • Update NDIS_PROCESSOR_TYPE and NDIS_INTERFACE_TYPE. (Amine Khaldi)
  • Guard NDIS_GENERIC_OBJECT with NDIS_SUPPORT_NDIS6. (Amine Khaldi)
  • Add missing NDIS_WAN_GET_STATS, NdisAllocateGenericObject, NdisFreeGenericObject, fPACKET_WRAPPER_RESERVED and NDIS_FLAGS_* definitions. (Amine Khaldi)
  • PNDIS_PACKET_POOL : HANDLE -> NDIS_HANDLE. (Amine Khaldi)
  • Improve MEDIA_SPECIFIC_INFORMATION (Amine Khaldi)
  • Some minor formatting. (Amine Khaldi)

DDK_XDK

  • Use PCI_COMMON_HEADER_LAYOUT for C, too, place it where it belongs (Timo Kreuzer)
  • Don't auto define NO_LEGACY_DRIVERS on reactos x64 builds. (Timo Kreuzer)

EXPLORER_NEW

  • Display a message box if the explorer registry key cannot be loaded, (Katayama; #5407)

FBTUSB

FTP_DHCP

HALMP

  • MP HAL should have HalpDefaultInterruptAffinity too. (sir_richard)

HEADERS

  • Fix type of PRTL_HEAP_PARAMETERS in ifssupp.h. Will be required soon (Hervé Poussineau)
  • Reintegrate header-work branch. Thanks to hours of boring work on the ddk headers (Most of it done by Amine Khaldi), we have now a decent set, which is still incomplete but already relatively close to latest WDK. (Timo Kreuzer)
  • Remove BOM from UTF-8 rc files. (Sylvain Petreolle)
  • asm.h: fix definition of HEX macro (Giannis Adamopoulos)

HOSTS

INCLUDE_WINE

  • Update Wine-specific headers to Wine-1.3. (Aleksey Bragin)
  • Remove unneeded 16 bit header, and add a bit of stuff into another legacy header. (Aleksey Bragin)
  • Indicate in config.h that there is a freetype library present. (Aleksey Bragin)

INFLIBNEW

INPUT_I8042PRT

  • 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)

INTRIN_X86

IOEVENT

KERNEL32_CSRSS

  • Register new Win32 threads with CSRSS. Add a bunch of lookup, creation, allocation, hashing and CSR thread management routines from the unused CSRSRV in trunk. (sir_richard)

LIB_3RDPARTY

MKHIVE_USETUP

  • Fix buffer size calculation for the parser. (me)
  • Do not try to execute an empty registry instruction (me)
  • Patches by Roel Messiant. (me)
  • Stop the parser at the first NULL character. (me)
  • Hardcode GeckoCabDir to C:\ReactOS. (Sylvain Petreolle)
  • the mshtml installer now wants a REG_SZ string for it, which excludes using %SystemRoot%. (Sylvain Petreolle)
  • Fixes bootcdregtest. (Sylvain Petreolle)

NETEVENT

  • Add new netevent.dll. It is a resource dll that will be used by the event log viewer. (Eric Kohl)

NEWINFLIB

  • Add a UNICODE-aware version of the inflib library. (Eric Kohl)
  • It is not used by other components yet but usetup and mkhive will use it in the future. (Eric Kohl)
  • Use LANGID instead of LCID. (Eric Kohl)
  • Move LANGID and language macros into the host typedefs header. (Eric Kohl)
  • Remove dead code. (Eric Kohl)
  • Change Unicode string functions from wcs* to str*W because glibc (Linux build) provides the wcs* functions but they use a wchar_t size of 32 bits instead of the required 16 bits. (Eric Kohl)
  • Add a str*W to wcs* wrapper (infrosrtl.c) in order to use the wcs* function for the WIN32 build. (Eric Kohl)
  • Add required str*W functions to the host library. (Eric Kohl)
  • Fix an off-by-one bug, which lead to the crash of mkhive after parsing ~3 files on Windows or ~5 files on Linux (Gregor Schneider; #5338)
  • PINT -> INT* (Timo Kreuzer)

NTDDK

  • Protect IoMapTransfer from incompatible redefinition. (AmineKhaldi)

NTDKK

  • Don't use PEB::FastPeb(Un)LockRoutine, these members are deprecated since Windows 2003, use RtlEnter/LeaveCriticalSection instead. (Timo Kreuzer)
  • 44523 (tkreuzer) (Timo Kreuzer)

NTIFS

  • Use a preprocessor definition for FSRTL_COMMON_FCB_HEADER instead of using an ms extension, that wouldn't work for ISO C (Timo Kreuzer)

NTORKRNL

  • SepAccessCheck: Deny access if the DACL is is empty (but not NULL). (Eric Kohl)

NTOS

  • The kernel normally does not save FPU state during Ring 0 transitions since the FPU should not be used. The one exception is when a kernel debugger is attached. Unfortunately, the latter check in ReactOS results in even "print on the serial line" to count as "debugger attached", and thus FPU state was almost always saved, slowing down traps significantly. (Sir_Richard)
  • The kernel also does not typically save DRx (debug) registers unless they were in use. During an exception dispatch, they are zeroed out, and later during trap exit, if any debug register is set, DR7 is updated to enable that hardware breakpoint. Unfortunately, the code to clear the debug registers had a bug: DR2 was never cleared. Because DR2 ended up being a random stack value during trap frame generation, this caused a bogus address to be added to DR2, and DR7 would then enable the 2nd hardware breakpoint. This caused the kernel to always save DRx state, which is slow, and worse, could cause random hardware breakpoints to fire. (Sir_Richard)
  • Start implementing trap handling in C. ASM trap handlers will now only be 5 lines of assembly including a function call to a C handler. All C handling code uses maximum two arguments and is all FASTCALL for efficiency. (Sir_Richard)
  • Implement C versions of TRAP_PROLOG and TRAP_EPILOG. Implement C version of Ki386EoiHelper. Implement C version of CommonDispatchException (and helper) and KiFatalSystemException. Implement C version of CHECK_FOR_APC_DELIVER. Implement trap debugging checks as a separate entity instead of always doing them. (Sir_Richard)
  • Add missing intrinsics for DS/ES/GS segment query. (Sir_Richard)
  • The kernel is now ready for some trap handling to be done in C. Due to the FPU/Debug fixes and relaxation of paranoid debug checks, the C code will likely be faster than the original assembly. (Sir_Richard)
  • define _tcscpy_s and _tsplitpath_s again for native VC++ builds (Martin Fuchs)
  • Trap Handlers in C Patch 2 of X ( (Sir_Richard)
  • Convert Trap 0, 1, 3, 4, 5, 8, 10, 11, 12, 15, 17, 2C (Assertion) and 2D (Debug) to C. Tested INT3 and still works as expected, and obviously DbgPrint is still functionning (0x2D). The other traps are mainly programming errors such as bound overflow or integer overflow, so we need some test cases, but they should work. Note the 3-4 lines of C for what used to be dozens of ASM lines. (Sir_Richard)
  • Fix infinite loop in KiCheckForApcDelivery. (Sir_Richard)
  • Trap Handlers in C Patch 3 of X ( (Sir_Richard)
  • Fix a bug in the assertion handler. (Sir_Richard)
  • Implement page fault trap (14) in C instead of ASM. (Sir_Richard)
  • Implement V8086 trap entry/exit, we were hitting these during page faults in Ke386CallBios for video reset during GUI boot. (Sir_Richard)
  • Trap handlers in C Patch 4 of X: (sir_richard)
  • Implement trap 6 (invalid opcode) in C. (sir_richard)
  • Trap handlers in C Patch 5 of X: (sir_richard)
  • Convert trap 19 (XMMI exception) to C. (sir_richard)
  • avoid warning messages on Explorer startup when missing configuration files (Martin Fuchs)
  • Implement Trap 7 and 16 in C. These are the last two FPU/NPX traps. Not really good with x86 FPU stuff, so there might be some mistakes to look over later. (sir_richard)
  • Fixed a bug in Trap 19 handler (forgot to write CR0 back). (sir_richard)
  • Implement KiAdjustEsp0 in C. (sir_richard)
  • Temporarily remove FPU save/restore instructions since they seem to be smashing the stack and breaking boot. (sir_richard)
  • Simplify trap exit code. (sir_richard)
  • Move some stuff in appropriate headers. (sir_richard)
  • Write V86 fast entry/exit traps, needed for later. (sir_richard)
  • Implement all V8086 Opcode emulation in C instead of ASM. (sir_richard)
  • Update credits. (James Tabor)
  • Rewrite BIOS Call (V8086) Entry/Exit routines in C. Only 4 lines of ASM stub remain. This wasn't fun... the stack dancing alone gives you headaches. Who ever thought of dynamically sized trap frames! (sir_richard)
  • Trap handlers in C patch 7 of X: (sir_richard)
  • Implement GPF handler (trap 13) in C. This was by far the most complex one of them, since it also servces two complex purposes: to handle V86 emulation since the real-mode code will generate GPFs during privileged instructions, and it will detect an illegal IRET, check if it's the known V8086 Exit IRET, and then jump to V86 exit code. (sir_richard)
  • Get rid of even more V8086 assembly since the GPF handler is now C. Deleted the entire V8086 assembly file. (sir_richard)
  • Get rid of a bunch of helper ASM functions that nobody is using anymore since almost all the trap handlers are in C. (sir_richard)
  • my once a year commit, update email address (Steven Edwards)
  • Trap Handlers in C Patch 8 of X: (sir_richard)
  • Implement KiCoprocessorError in C. (sir_richard)
  • Make NMI handler fully C, now that the other parts are C too. (sir_richard)
  • Delete more ASM macros and code that are now unused. (sir_richard)
  • Put ASM macros back since the HAL also uses them. (sir_richard)
  • Fix a logic bug in KiExitTrap: Always only restore segments if we came from user-mode (since they might be bogus on a kernel transition as they're not always saved), even if the caller wants segment restore. (sir_richard)
  • Small perf boot: do a JMP, not a CALL into C handling code. (sir_richard)
  • Make KiGetTickCount/KiCallbackReturn handled in C (as stubs). (sir_richard)
  • Implement KeSynchronizeExecution in C. Move Kei386SpinOnSpinLock to C stub. (sir_richard)
  • Implement overall architecture for handling hardware interrupts in C. Not used yet, since it needs C code in HAL. (sir_richard)
  • Switch to a slightly (perhaps, hopefully?) safer version of V86 entry/exit to see if this fixes the buildbot boot (suffice it to say, the original code works fine on my test machine, but since half the developers seem to be using GCC 4.4 and the others GCC 4.1, I wouldn't be surprised if there's compiler subtleties involved). (sir_richard)
  • Bring back a simplified GPF handler just for V8086 opcode detection and V8086 exit, to see if this resolves testbot booting. (sir_richard)
  • A trap can get us into a state where DS/ES are invalid, making any pointer dereference (on DS/ES segmented memory, not SS, the stack) crash (and probably double-fault). Therefore, we have to be careful to switch to a good DS/ES before touching the TrapFrame pointer, which we don't have in ESP like the ASM code, but in a DS/ES-segmented register. For V8086 traps we can switch to the good DS/ES immediately, but for other kinds of traps, we actually need to save the current (bad) segments first. So we save them on the stack now, then switch to the good ones, then store the stack values into the trap frame. This is what happens on a non-optimized (-O0) build. On an optimized build, the segments will end up in registers instead, which is fine too (they'll be direct values). The order of instructions is guaranteed since the segment macros are volatile. (sir_richard)
  • The GPF and Invalid Opcode handlers are performance critical when talking about V8086 traps, because they control the main flow of execution during that mode (GPFs will be issued for any privileged instruction we need to emulate, and invalid opcode might be generated for BOPs). Because of this, we employ a fast entry/exit macro into V8086 mode since we can make certain assumptions. We detect, and use, such scenarios when the V8086 flag is enabled in EFLAGS. However, because we can land in a GPF handler with an invalid DS/ES, as some V8086 code could trample this during BIOS calls for example, we must make sure that we are on a valid DS/ES before dereferencing any pointer. We fixup DS/ES either in KiEnterTrap (for normal entry/exit) or, for V86, in KiEnterV86Trap. Notice the problem: we need to detect which of these to use early on but we can't touch the EFLAGS in the frame because DS/ES could be invalid. Thankfully SS is always guaranteed valid, so stack dereferences are game! We therefore read the EFLAGS here, in assembly, where we can touch ESP as we please. We save this in EDX, which will be used as the second argument for the FASTCALL C trap entry. When we make the fast V86 check, we use the parameter instead of the trap frame, leading us to using the correct trap entry function, which fixes up DS/ES and lets us go on our merry way... (sir_richard)
  • Make appropriate changes to GENERATE_TRAP_HANDLERS macro. (sir_richard)
  • Switch to using well-known NT trap handler names (hex-based, double-zeroed) instead of decimal-based trap handler names which are confusing. (sir_richard)
  • Clean up some debug spew. (sir_richard)
  • Enable a few definitions for amd64, too (Timo Kreuzer)
  • Add a dummy PSEH2 for amd64 (Timo Kreuzer)
  • Fix some bugs and cleanup V8086 code in regards to flags usage. (sir_richard)
  • Add VDM debug spew to see why there's now an invalid opcode on Windows builds of VMWare and certain QEmu combinations. (Note: the double fault issue is fixed, this is a new issue). (sir_richard)
  • KiExitV86Mode is supposed to return a pointer to the protected mode KTRAP_FRAME. Instead it was returning the value of TrapFrame->Edi, which would be identical to PmTrapFrame->Ebp, which doesn't have any particular meaning. Fix it by returning PmTrapFrame directly. Fixes 2nd stage boot. (Timo Kreuzer)
  • Remove debug spew (but keep Flag macros and fixes which fixed other bugs), thanks Timo. (sir_richard)
  • Perf improvements: (sir_richard)
  • Optimize trap entry/exit by manually copying registers to the trap frame the correct way from the first time. Avoids conversion between PUSHA and KTRAP_FRAMEs and makes trap frames compatible the whole time (other than being slightly faster). (sir_richard)
  • Provide compiler with hints on likely code paths during trap entry and exit, which makes the code more linear and improves performance. The following assumptions (known to be true) are made: (1) Interrupts happen more often than system calls (per unit of time), so prioritize paths we take during interrupts. (2) The CPU spends most of its time in Ring 3, so prioritize traps from user-mode. (3) V8086 mode, debugging, 16-bit stacks, are uncommon, so de-prioritize them. (sir_richard)
  • Use KTRAP_FRAME offset names recommended by Timo instead of substraction which was confusing some people (still seems clearer to me). (sir_richard)
  • Fix bug in illegal instruction trap handling. (Timo)
  • Merge from amd64-branch: (Timo Kreuzer)
  • 34969 Some ULONG / SIZE_T fixes, handle amd64 in PspCreateThread (Timo Kreuzer)
  • 34986 Fix several 64 bit issues (Timo Kreuzer)
  • 35968 Fix Size parameter of CmpAllpcate (ULONG->SIZE_T). (Timo Kreuzer)
  • 35970 Fix pointer <-> ULONG cast (Timo Kreuzer)
  • 35971 Fix pointer <-> ULONG cast fixes (Timo Kreuzer)
  • 36332 fix 64 bit warnings (Timo Kreuzer)
  • 37435 Fix several ULONG/ULONG_PTR issues. Add a parameter to DefaultQueryInfoBufferCheck for ULONG_PTR/SIZE_T ResultLength (Timo Kreuzer)
  • 39522 ExInitializeSystemlookasideList: Use InitializeSListHead instead of directly accessing the members. ExpAllocateLocallyUniqueId: use InterlockedCompareExchange64 instead of non-portable ExfInterlockedCompareExchange64 (Timo Kreuzer)
  • 37433 fix InterlockedExchangePointer usage (Timo Kreuzer)
  • 38105 Use KeGetCurrentPrcb() instead of KeGetPcr()->Prcb / KeGetPcr()->CurrentPrcb (Timo Kreuzer)
  • 39160 Use wbinvd instruction for amd64, too. (Timo Kreuzer)
  • KiTrap0DHandler: fix buffer overrun (Spotted by Amine Khaldi) and optimize the code by checking the counter variable, instead of Instruction, this works the same, but the compiler can make sense of it and safe one comparison. (Timo Kreuzer)
  • Fix buffer overrun in ExFreePoolWithTag when dealing with a PoolType other than NonPagedPool and PagedPool. Spotted by Amine Khaldi. (Timo Kreuzer)
  • Fix possible NULL pointer dereference. Spotted by Amine Khaldi. (Timo Kreuzer)
  • Implement KeUpdateSystemTime and KeUpdateRunTime in C instead of ASM. Based off eVb's ARM implementation, with multiple bugs fixed (incorrect update of system counters, incorrect expiration of timers, remove non-used debug features, use locks when needed). (sir_richard)
  • Implement KiComputeTimerTableIndex in C instead of ASM. Based off eVb's ARM implementation, bugfixed to do correct math instead. (sir_richard)
  • As a side effect, this should fix timers on ARM ;-) (sir_richard)
  • Implement KiServiceExit2, C Version. This is used for exiting to user-mode with full state restore (as in NtContinue, thread startup, NtRaiseException...). (sir_richard)
  • Implement system service exit (for system calls or KiServiceExit2) in KiExitTrap. Both iret (for user calls), jmp (for kernel calls) and sysexit (for user fast calls) are implemented. (sir_richard)
  • Implement KiThreadStartup in C instead of ASM. It is the first caller of the new KiServiceExit2. Threads now start up in C! (sir_richard)
  • Implement "Edited Trap Frame" exit. This funky trick is actually how NT emulates longjmp/setjmp when doing an NtContinue: it allows arbitrary return with a new CS/ESP. (sir_richard)
  • Implement C version of KiServiceExit, the second system call exit routine. This one sets a new EAX value to be returned to the caller and is used by system calls. (sir_richard)
  • Implement NtContinue in C instead of ASM. Due to the changes above, this can now be done in C and use the new KiServiceExit. (sir_richard)
  • Implement the special NtRaiseException in C as well, just like we did for NtContinue. (sir_richard)
  • Kei386EoiHelper now jumps into the C KiEoiHelper. All interrupt exit is now done through the C trap exit code. (sir_richard)
  • The ASM KiServiceExit/KiServiceExit2 are no more. All system call exit is now done through the C trap exit code. (sir_richard)
  • We don't actually need wrappers for NtContinue/NtRaiseException. These are now fully portable C code, so move them appropriately. (sir_richard)
  • Convert system call handling to C. Only kernel system calls are done this way for now, not SYSENTER calls from user-mode. A small ASM trampoline is used inline for the call itself. (sir_richard)
  • 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)
  • All system calls are now handled in C. This code will be further optimized/refined soon. (sir_richard)
  • Try backing out a change to see if thix fixes BuildBot. (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)
  • Make KiUserTrap use the MODE_MASK instead of hard-coding a check for Ring 0 CS (which is slower and not as correct). (sir_richard)
  • Fix initialization of PICs. (Dmitry Gorbachev)
  • Cleanup the traphdlr.c vs. trap_x.h mess into something much more structured. trap_x.h is now all inlined C functions which pretty much replace the asmmacros.S file. It is meant to be used outside the kernel as well (such as by the HAL, which requires trap entry/exit too). (sir_richard)
  • Split the GENERATE_TRAP_HANDLER in two separate macros. The original builds the name of the function (and makes it global), while the TRAP_HANDLER_PROLOG is actually the code. (sir_richard)
  • Make TRAP_HANDLER_PROLOG handle software traps, in which the interrupt stack must be faked. (sir_richard)
  • Optimize TRAP_HANDLER_PROLOG by not pushing an error code and then making space on the stack without the error code -- just make space with the error code in the first place (nobody reads the value, so having it zero or garbage isn't important). (sir_richard)
  • Implement a C/Extended ASM macro for generating trap stubs, removing the need to do this in ASM. The macro covers all possible entries, from SYSENTER to a fake sotware interrupt (needed for HAL changes later). By being somewhat in C, it makes the code cleaner to read and uses C expressions to make its decisions, making the code more maintanable as well. It also removes the need for separate assembly files. (sir_richard)
  • Modify the semantics of how a fast system call (SYSENTER) is processed in the stub, by moving more work in the C handler, such as setting up FS and getting the correct argument stack. Saves us some cycles too (and allows the trap stub macro to be more generic). (sir_richard)
  • Refactor some stub code and add a couple of more possible trap exit mechanisms (needed for HAL). Later we should really combine all the exit macros into one, as we've done for the entry macro. (sir_richard)
  • Remove said hacks and have a normal C implementation of KeUpdateSystemTime. It exits the interrupt through a soft interrupt exit. (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)
  • Implement KiUnexpectedInterruptTail and KiUnexpectedInterrupt in C as well. (sir_richard)
  • Implement the KiInterruptTemplate in C since we now have a C entrry macro. Add a new KI_HARDWARE_INT flag for the C entry macro to generate the appropriate labels for runtime patching of the KINTERRUPT pointer to work, and issue an absolute instead of relative jmp. (sir_richard)
  • Remove thousands of lines of assembly that are not needed anymore. (sir_richard)
  • Put all interrupt code in irqobj.c (platform-specific). (sir_richard)
  • DPC Interrupt is really the thread scheduler interrupt (DPC work happens in C), which mostly does contexts switching and scheduling decisions, so move it to ctxswitch.S (sir_richard)
  • Implement chained interrupt dispatch. For level interrupts, the first interrupt handler should process the interrupt and no other handlers are called. Edge interrupts are another matter, but since they aren't yet supported, I haven't implemented that code path (it wasn't implemented previously). I seriously hope we don't have edge/chained interrupts because the HAL/NTOS could never handle this! (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)
  • Found a leak fix patch from years ago (Ged Murphy)
  • Update log2lines to ver. 2.1. Jan Roeloffzen, bug #4342. (Dmitry Gorbachev)
  • MxGetNextPage is not platform-specific, so share it. (sir_richard)
  • 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 broken MI_PFNENTRY_TO_PFN macro. (sir_richard)
  • Remove bogus assertion. (sir_richard)
  • Get rid of page locking mechanism for MDL since I can't see a reason this would make sense, since these pages won't be scheduled for page out anyway, and that is the only code that looked at this value. (sir_richard)
  • Push vector as error code on the stack in KiUnexpectedInterrupt* instead of putting it into eax, because we must not clobber it. Spotted by jcatena. (Timo Kreuzer)
  • Allocate the trap frame on the stack by decreasing esp before modifying any members. (Timo Kreuzer)
  • While doing it after is a tiny optimization (no need to wait for esp to be ready) and would work with all real traps (which clear cli), it doesn't work with Zw calls that directly call KiSystemService with interrupts enabled. This caused random trap frame corruption when an interrupt fired after members of the trap frame have been set but before esp was adjusted. Should hopefully fix most random failures on real hardware and qemu. (Timo Kreuzer)
  • 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)
  • Add missing InbvIndicateProgress routine to update the progress bar while drivers are loading. Make boot and system driver initialization call it for each new driver. This updates the progress bar in the 25-75% range which was defined prior to IoInitSystem. (sir_richard)
  • Fix InbvUpdateProgressBar code to correctly handle the floor and ceiling. (sir_richard)
  • Remove shutdown "funny messages", do correct shutdown (should fix the ACPI shutdown issues) procedure. Display the shutdown screen on systems without ACPI (just like Windows does). (sir_richard)
  • Add a resource header with IDB_ definitions for all the embedded bitmaps, instead of using magic numbers and guessing which is which. (sir_richard)
  • Fix the boot logo initialization code as it was all wrong. 5 is the logo to be used during shutdown, for example, not the full logo background (which is supposed to be in 1, with a special palette that's faded in). Also handle server vs workstation scenarios. (sir_richard)
  • Booting in the new WinNT mode now correctly displays the blue background screen when in debug (/SOS) mode, and the header/footer also has the correct color, as does the separator band. (sir_richard)
  • Remove logo files that are simply not needed for ReactOS (Compute Cluster Edition, Tablet PC, etc...) (sir_richard)
  • Fix logo files (mostly) to have correct palettes. Note that 1.bmp is still quite different from Windows (no fade). (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)
  • Rewrite Trap exits stubs in raw assembly (2nd try) and remove inline assembly. Bugcheck in KiTrap0DHandler, when the fault was not handled. Replace code patching for sysexit vs iret with a function pointer. Slightly refactor KiSystemServiceHandler/KiFastCallEntryHanlder. Unroll the loop in the systemcall handler and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack after converting to gui thread to prevent the compiler from optimizing it away (or moving it out of the loop). Add an asm macro KiCallHandler, which expands to call on debug builds to make sure backtraces work as expected and to jmp on release builds for improved performance. Modify KiExitV86Trap to always exit and add DECLSPEC_NORETURN. Use __debugbreak() instead of while(TRUE) on errors in KiExitTrapDebugChecks. (Timo Kreuzer)
  • The old code hat 2 issues: one was restoring segments in KiExitV86Trap when they shouldn't be, leading to a bugcheck. And the other was a long hang (5 mintes or more) in 3rd stage on qemu when selecting RosDbg, caused by the KiFastCallExitHandler function pointer being initialized with a pointer to the iret handler. Initializing it in code solved the issue. To figure out why is left as an exercise to the reader. (Timo Kreuzer)
  • 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)
  • Implement IopInitializePnpServices to replace PnpInit. Mostly the same work is done, but using new PnP ABI. (sir_richard)
  • Implement new helper: IopCreateRegistryKeyEx. (sir_richard)
  • Try moving towards new ABI. Lots of debug spam will be generated by various device node flags in incorrect states, and hacks that had to be made to maintain current functionality. Also document things being done at the wrong place. One small step... (sir_richard)
  • 1MB is not 1000 * 1KB... (sir_richard)
  • Read almost all the Memory Management variables into the system configuration vector. These includes pool limits, percentages, debugging flags, behavioral changes, and others. (sir_richard)
  • Minimal stubbed support for some large page functionality in case it gets implemented later and these things would've been ignored. One critical change is that now the MmProcessList is initialized, and the system process is added to it. Other processes should be added later. (sir_richard)
  • Add stubbed support for parsing the registry list of drivers that should have large pages enabled. (sir_richard)
  • Initialize the loaded module list before working set work. (sir_richard)
  • Start doing some minor MmResidentAvailablePages accounting during bootup. (sir_richard)
  • Start doing the math required for computing the appropriate MmSystemCacheWsMinimum on the booting system (based on RAM). (sir_richard)
  • Now that we use the HAL heap, add the code to scan it for I/O mappings. These are dangerous because we need to sync up caching attributes (not yet used in ReactOS, so not a problem for now). (sir_richard)
  • Add more header definitions, and helper definitions such as PDE_MAPPED_VA instead of doing the math by hand. (sir_richard)
  • Move MmPageEntireDriver and MmResetDriverPaging to sysldr.c since drvmgmt.c is more for Driver Verifier-style functionality. (sir_richard)
  • Recommit rest of ntifs.h and wdm.h from header merge revert (Timo Kreuzer)
  • Enable MmPageEntireDriver by implementing MiSetPagingOfDriver. (sir_richard)
  • Call MiEnablePagingOfDriver from MmLoadSystemImage and implement it. All the work is done other than actually enabling paging, which requires system working set support. (sir_richard)
  • Implement MiWriteProtectSystemImage and MiComputeDriverProtection. All the work is done other than actually setting the bits on the pages, since I wanted to avoid too many changes. (sir_richard)
  • MmCheckSystemImage returns STATUS_INVALID_IMAGE_PROTECT, not STATUS_INVALID_IMAGE_FORMAT, so the branch in MmLoadSystemImage needs to check for the correct status code. (sir_richard)
  • Support FLG_SHOW_LDR_SNAPS for the kernel loader. (sir_richard)
  • Support unload of system modules by parsing the LoadedImports (implement MiDereferenceImports which was just a stub) and calling MiCallDllUnloadAndUnloadDll. (sir_richard)
  • Fix a bug in MiClearImports. (sir_richard)
  • remove svn:mergeinfo (Timo Kreuzer)
  • MiFindExportedRoutineByName should validate the ordinal to make sure it's not higher than the function count. (sir_richard)
  • Use MM_SYSLDR_ defines instead of magic pointer casts. Use appropriate pool tags. (sir_richard)
  • Set the LoadedImport count early-on during image referencing, so that failure will correctly de-reference the imports. By setting it to zero, failures would've leaked driver-dependent DLLs already loaded but now useless. (sir_richard)
  • Do the same checks as Windows to avoid drivers linked with user-mode DLLs. (sir_richard)
  • Allow "coverage" and "irt" to be linked with Win32K drivers as well. (sir_richard)
  • When the linker is fixed not to generate corrupt drivers, add the appropriate code to scan IMAGE_DIRECTORY_ENTRY_IAT for updating thunks. A hack exists in ReactOS now to permit loading these hacked drivers, but Windows is not so generous and will crash with a ReactOS driver. (sir_richard)
  • Implement and call MiUseLargeDriverPage. (sir_richard)
  • Implement and call MiBuildImportsForBootDrivers. We now have full dependency tracking for correct unloading. (sir_richard)
  • Implement and call MiLocateKernelSections. Pool code and paging paths will require this information later. Loader work done for now. (sir_richard)
  • Implement MiRemoveAnyPage and MiRemovePageByColor, but only using the list heads, and not the color list heads. Unused. (sir_richard)
  • Fixup unused MiInsertPageInFreeList variables ot match the other functions (ColorTable vs ColorHead). (sir_richard)
  • Acquire PFN lock before setting up hyperspace PTE/page. (sir_richard)
  • Flush TLB after setting up hyperspace. (sir_richard)
  • Use new MiRemoveAnyPage interface instead of MmAllocPage(MC_SYSTEM), as the first test of the new Page API/ABI. (sir_richard)
  • Add support for creating software PTEs. (sir_richard)
  • Restore previous correct ASM behavior of checking for success codes, not only STATUS_SUCCESS, after a page fault. For example, a demand zero fault returns STATUS_PAGE_FAULT_DEMAND_ZERO upon success, and the new C code would treat it as a failure. Fixes a bug. (sir_richard)
  • User pages are not used until Phase 1, they should not be setup in Phase 0. Fixes premature initalization. (sir_richard)
  • Fix 4MB assumptions and use PDE_MAPPED_VA instead, which accurately describes the address space mapped by a PDE (which is different on PAE, x64, ARM, etc). (sir_richard)
  • Add assertions to the paged pool and demand zero page faults, to catch possible errors and corruptions. These paths are not yet taken in today's builds, so they do not affect any runtime code. (sir_richard)
  • Add assertions regarding the portability of certain code, which will need changes on ARM/x64. These should probably be C_ASSERT's but I don't want to break Timo's build. (sir_richard)
  • Define MM_NOIRQL (found in assertions) instead of magical -1. (sir_richard)
  • Add MI_IS_SESSION_PTE macro. (sir_richard)
  • Export the MiXxxPte variables. (sir_richard)
  • Fix some typos in comments. (sir_richard)
  • When grabbing physically contigous pages from the zero or free list, make sure to re-initialize their PFN entries correctly, since their data might be stale. Fixes potential weird memory corruption bugs. (sir_richard)
  • Physically contiguous memory allocations are not guaranteed to be zeroed, so do not zero the pages. (sir_richard)
  • When allocating contigous memory, mark the PFN entries appropriately after mapping the I/O ranges. (sir_richard)
  • When freeing contiguous memory, assert that all the freed pages correspond to PFN entries that we expect to have allocated for this purpose. Detects (not neccessarily fixes) memory corruption issues in contiguous memory allocations. (sir_richard)
  • These changes mostly affect certain network card and sound card systems/real hardware, they fix possible bugs and detect corruption that was otherwise going by unnoticed. (sir_richard)
  • Fix definition of unused MI_MAKE_SOFTWARE_PTE macro. (sir_richard)
  • Correctly setup the PFN entries for freshly allocated paged pool pages. Fixes a problem where the page could've still had stale/garbage data. (sir_richard)
  • Add some extra assertions in the code to catch memory corruption and detect invalid logic. (sir_richard)
  • Fix some typos in the code (comments/whitespace). (sir_richard)
  • Make the dreaded page fault message that breaks paged pool on some systems more verbose for future debugging. (sir_richard)
  • Re-implement IoGetDeviceProperty. Main changes are usage of existing (and new) helper functions for registry/IRP access, much better factored code, correct implementation of DevicePropertyPhysicalDeviceObjectName, fixed implementation of DevicePropertyBootConfigurationTranslated and DevicePropertyBootConfiguration (do not crash the system anymore), and support for more device properties. (sir_richard)
  • Fix caller of IoGetDeviceProperty in pnpres.c to work with new function behavior (which matches WDK documentation and test cases). (sir_richard)
  • Implement helper function PnpBusTypeGuidGet, should be used later in other PnP code, but now used only for this patch. (sir_richard)
  • Implement helper function PnpDetermineResourceListSize, ditto. N.B. Current IopCalculateResourceListSize function is broken and callers should use this one instead. (sir_richard)
  • Implement helper function PpIrpQueryCapabilities, should be used later in device node code, but now only used for this patch. (sir_richard)
  • Implement helper function PnpDeviceObjectToDeviceInstance, ditto. (sir_richard)
  • Main purpose of this patch is to unblock the new PCIx driver. (sir_richard)
  • Root Bus PDO should not override Status with STATUS_NOT_IMPLEMENTED and instead use the current IRP status (which drivers/PnP will typically set to STATUS_NOT_SUPPORTED). Found by testing the new PCIx driver (probably fixes other bus drivers too). (sir_richard)
  • Implement and start using the Pending-Deletion PFN flag. (sir_richard)
  • As a result, for stack pages, the Transition page state will now be seen, and the new routine for re-inserting pages into the free list will now be used. Tracking of page table references is also done now for these pages (but we don't free the PT since this doesn't seem safe yet). (sir_richard)
  • Fix Implementation of BreakOnTermination -- Process Flags should be accessed with interlocked bit semantics, not through C bitfield extension. (sir_richard)
  • Revert 47425 and apply a better fix. (sir_richard)
  • Timo/Physicus: Please validate for AMD64. (sir_richard)
  • Write down the PTE attribute flags for X86/AMD64. Timo/Physicus: Please double-check. (sir_richard)
  • Write down the array that converts from the MM_ protection flags arleady defined, into the appropriate PTE attribute flags that are architecture-specific. (sir_richard)
  • This will allow constant-time conversion of NT attributes into PTE attributes. Win32 attributes to NT attributes conversion won't be needed until VAD support. (sir_richard)
  • Implement MiAllocatePfn, it is a simpler wrapper that grabs a page, sets its protection, and initializes its PFN entry. (sir_richard)
  • Use MiAllocatePfn in MiLoadImageSection instead of MmAllocPage. Other than doing a better job at initializing the page, it creates our first caller of this function, great for testing, since this is a rather high-demand function, especially at boot. (sir_richard)
  • Please test. (sir_richard)
  • Re-enable the APC debug check in the system call exit code that somehow got removed in 46247. (Stefan Ginsberg)
  • Use an inline for emitting the iret instruction in C code for portability. (Stefan Ginsberg)
  • Simplify the MSC assembly in KiSwitchToBootStack. (Stefan Ginsberg)
  • Fix assertion hit during install (Johannes Anderwald)
  • Fix identation (Johannes Anderwald)
  • Remove superflous spaces (Johannes Anderwald)
  • Allocate non-paged pool pages with MiRemoveAnyPage instead of MmAllocPage. (sir_richard)
  • Implement a MI_MAKE_HARDWARE_PTE macro for the generation of valid kernel PTEs instead of always taking the ValidKernelPte and changing its flags. This macro will take into account the protection mask (up until now ignored) and use the array previously implemented to determine the correct hardware PTE settings. Assertions are also added to validate correct usage of the macro, and later revisions will fill out NT-specific fields to help deal with transition PTEs, page faults, etc. (sir_richard)
  • Make the stack code the first user of this macro, for the stack PTEs. Good testing base as we create kernel stacks very often. (sir_richard)
  • The NT MM ABI specifies that in between the allocation of a new PTE and its initialization as a valid PFN, the PTE entry should be an invalid PTE, and should only be marked valid after the PFN has been initialized. For stack PTEs, do this -- first allocating the page, making it invalid, then initializing the PFN, and then writing the valid page. (sir_richard)
  • Build paged pool demand-zero PTE with MI_MAKE_SOFTWARE_PTE macro. (sir_richard)
  • Handle paged pool demand-zero fault fulfillment with MI_MAKE_HARDWARE_PTE macro. (sir_richard)
  • Use MiRemoveAnyPage instead of MmAllocPage, in paged pool demand-zero fault fulfillment. (sir_richard)
  • These changes affect code paths that are not currently in-use. (sir_richard)
  • When expanding paged pool, use MiRemoveAnyPage, not MmAllocPage. (sir_richard)
  • When expanding paged pool, initialize the PFN entry for the allocated page. Note we might be in arbitrary process space, so the PTE is not necessary valid for the process causing the expansion. (sir_richard)
  • Implement MiInitializePfnForOtherProcess to handle the case above. (sir_richard)
  • Change two static ASSERTs into C_ASSERTs. Might break non-x86 builds for a bit (vs breaking them at boot, which is worse). (sir_richard)
  • Paged pool should start working soon. (sir_richard)
  • Implement MiDeleteSystemPageableVm. (sir_richard)
  • In MiDeleteSystemPageableVm, should also handle the case where the PTE is demand-zero. This can happen if the caller allocated, say, 12KB (3 pages) of paged pool, only touched 4KB (1 page), and then frees the allocation -- the other 2 pages will still be demand-zero at this point. (sir_richard)
  • In MiInitializePfnForOtherProcess, should increment the sharecount of the page table PFN entry, not the PFN entry of the PTE itself. Spotted by Stefan100. (sir_richard)
  • Define POOL_BLOCK_SIZE definition to set the minimum pool block size. In NT, this is equal to a LIST_ENTRY structure, because the Pool Allocator must be able to store a LIST_ENTRY into a freed pool block. This also determines the alignment of pool allocations. So 8 on x86, 16 on x64. (sir_richard)
  • Don't depend on LIST_ENTRY, but use POOL_BLOCK_SIZE instead (on IA64, if we ever want to support this, the pool block size is different from a LIST_ENTRY/POOL_HEADER). (sir_richard)
  • The following ASSERTs must hold: the POOL_HEADER must be as big as the the smallest pool block (POOL_BLOCK_SIZE), which must be at least as big as a LIST_ENTRY structure. 8 == 8 == 8 on x86, 16 == 16 == 16 on x64. (sir_richard)
  • Use logical math operations on the various block<->entry<->free_list_head operations in the pool code, instead of works-by-chance-and-assumption pointer math operations. This will now allow pool implementations where the pool header is not the size of a pool block (and the size of a LIST_ENTRY, by definition, although, even that, could change, if we choose to implement a cache-aligned overhead). (sir_richard)
  • Defensive programming on the pool macros. (sir_richard)
  • Add some paranoid-invariant list access checks to the pool code. They serve a dual purpose: catch pool corruption by broken drivers/kernel code, as well as catch malicious modification of the pool links as part of a kernel-mode exploit. (sir_richard)
  • Not yet used, thanks to Arthur for the idea. (sir_richard)
  • See comment for more information. (sir_richard)
  • Fix Exp*PoolList macros. Also make then non-inlined, so we can see who called them in a stack trace. (sir_richard)
  • Enable them. (sir_richard)
  • This boots on my system -- if it doesn't boot on yours, someone is corrupting your nonpaged pool. Reverting this patch is NOT the solution to your woes. (sir_richard)
  • Kill debug spew. (sir_richard)
  • Fix up POOL_PREV_BLOCK based on suggestion by hpoussin. (sir_richard)
  • Fix up NTAPI location in function definition. (sir_richard)
  • Implement even more stringent header checks: ExpCheckPoolHeader and ExpCheckPoolBlocks. Normally we would only want this on a DBG build, but I am enabling them for now until I can fix paged pool. If your machine crashes, reverting this commit is NOT the solution (boots for me). (sir_richard)
  • Fix for the the bug that broke ARM3 paged pool (and has been corrupting ReactOS paged pool behind the scenes for years): (sir_richard)
  • When a KCB (key stuff) is allocated, the key name associated with it receives an NCB (name stuff). In case this name is already used, a cache exists, and an existing NCB is grabbed, and its reference count is increased. When the KCB goes away, its NCB loses a reference. When all references are gone, the NCB is destroyed. Simple enough. (sir_richard)
  • It turns out that what was currently happening is that an NCB would get dereferenced to 0, deleted, but still remained attached to a valid KCB (shouldn't happen). When that KCB went away, the NCB's reference count was dropped to... -1, and then -2, -3, -4, etc. Remember this is a FREED NCB. In other words, freed pool, that might now belong to someone else, was getting "-1" operations on it. So any value stored in that freed pool would get decremented by one. In ARM3 paged pool, because the allocator keeps a linked list, what would happen is that the FLINK pointer would be 0xE0F01234 instead of 0xE1A01234. What happened is that "0xE1A0" was treated as the reference count of the freed NCB, and it kept getting dereferenced down to 0xE0F0. (sir_richard)
  • Proving this was easy, by adding an ASSERT(Ncb->RefCount >= 1) to the routine that dereferences NCBs. Obviously, we should not try to dereference an NCB that has a reference count of 0, because that NCB is now gone. Adding this ASSERT immediately caught the error, regardless of which pool implementation was being used, so this was a problem in ReactOS today, right now. (sir_richard)
  • My first thought was that we were taking references to NCBs without incrementing the reference count. The NCB gets referenced in two places: when it gets created, and everytime a cached NCB is re-used for a new KCB (all this in CmpGetNameControlBlock). (sir_richard)
  • After adding some tracing code, I discovered that CmpGetNameControlBlock would sometimes return an NCB that was cached, but without referencing it. I did not understand why, since the code says "if (Found) Ncb->RefCount++". (sir_richard)
  • Further analysis showed that what would happen, on this particular instance, is that NCB "Foo" was being Found, but NCB "Bar" was returned instead. Therefore, causing some serious issues: First, NCB Foo was receiving too many references. Secondly, NCB Bar was not being referenced. (sir_richard)
  • Worse though, it turns out this would happen when "Foo" was the CORRECT NCB, and "Bar" was an INCORRECT NCB. What do we mean by correct and incorrect? Well, because NCBs are hashed, it's possible for two NCB hashes to be VERY SIMILAR, but only ONE OF THOSE NCBs will be the right one -- for example, HKLM\Software\Hello vs HKLM\Software\Hell. (sir_richard)
  • In our case, when a KCB for "Hello" was searching for the "Hello" NCB, the "Hello NCB would get a reference, but the "Hell" NCB would be returned. In other words, whenever a HASH COLLISION happened, the incorrect NCB was returned, probably messing up registry code in the process. Subsequently, when the KCB was dereferneced, it was attached to this incorrect, under-referenced NCB. (sir_richard)
  • Since in ANY hash collision with "Hell", in our example, the "Hell" NCB would come first, subsequent searches for "Hellmaster", "Hellboy", "Hello World" would all still return "Hell". Eventually when all these KCBs would go away, the "Hell" NCB would reach even -18 references. (sir_richard)
  • The simple solution? When the CORRECT NCB is found, STOP SEARCHING! By adding a simple "break" statement. Otherwise, even after the correct NCB is found, further, incorrect, collided NCBs are found, and eventually the last one ("Hell", in our example) got returned, and under-referenced, while "Hellmaster" and "Hellboy" were not returned, but LEAKED REFERENCES. (sir_richard)
  • There you have it folks, MEMORY CORRUPTION (USE-AFTER-FREE), INCORRECT REGISTRY NAME PARSHING, REFERENCE LEAKS and REFERENCE UNDERRUNS, all due to ONE missing "break;". (sir_richard)
  • r (sir_richard)
  • Fix a loop off-by-one when saving the page table index in contigious memory allocation PFNs. Spotted by Stefan100. (sir_richard)
  • Implement MiRemoveZeroPage and MiZeroPhysicalPage. (sir_richard)
  • Not yet used. (sir_richard)
  • Don't use MmAllocPage for the first paged pool PDE, instead, use MiRemoveZeroPage. (sir_richard)
  • Use MiInitializePfnForOtherProcess to setup the first paged pool PDE. (sir_richard)
  • A PFN entry is not necessarily physical only if it is higher than MmHighestPhysicalPage. It can also be physical if it lies in a memory hole within the min-max physical page range. We can detect this by using our PFN Bitmap. So replace all "Is this an I/O mapping?" checks with a check on whether or not the PFN Database entry is NULL (which will check for us both of these statements). This ought to be a macro... (sir_richard)
  • Another one bites the dust, another one bites the dust. And another one gone and another one gone. Another one bites the dust, yeah. Out of the doorway the bullets rip, Repeating to the sound of the beat. (sir_richard)
  • Fix a comment and remove a superfluous extern. (Stefan Ginsberg)
  • Get rid of MiInitializePageList, use MiGetPfnEntryOffset instead of hard-coded pointer math in freelist.c. (sir_richard)
  • Inline writing to PTEs through MI_WRITE_VALID/INVALID_PTE. (Stefan Ginsberg)
  • Check registry for our CardList, check if the PCI hardware matches any entry in there that specifies it has full/extended address decoding, and write the registry flag for it. (sir_richard)
  • Warn only once about MmLockPageableImageSection being unimplemented. (sir_richard)
  • There's no such thing as PRTL_MESSAGE_RESOURCE_ENTRY, use PMESSAGE_RESOURCE_ENTRY instead. (sir_richard)
  • Add "vf" NTOS component, required NDK headers, and enable exports required for PCI driver to load. (sir_richard)
  • VfFailDeviceNode is actuall __cdecl. (sir_richard)
  • Sort, update, clean-up, and add descriptions to bugcodes.mc. (sir_richard)
  • Warn only once in MmSecureVirtualMemory/MmUnsecureVirtualMemory, like it was done in 47864. (Aleksey Bragin)
  • PnpBusTypeGuidGet : Really return status. (Amine Khaldi)
  • Dedicated to Richard ;) (Amine Khaldi)
  • Update comctl32 base address. (Sylvain Petreolle)
  • Avoids inetcomm related comctl32 relocations. (Sylvain Petreolle)
  • Also update comdlg32 address. (Sylvain Petreolle)
  • Fixup some base address after mshtml growup. (Sylvain Petreolle)
  • Revert rpcrt4 to 99% previous state : (Samuel)
  • keep out unix functions (Samuel)
  • keep checks that prevent crashes in rpc cstub and rpc winetests (Samuel)
  • Fix a typo. (Aleksey Bragin)
  • Handle faults on user-mode addresses, from user-mode processes, if they are owned by ARM3, so they can be forwarded to the VAD fault handler. (sir_richard)
  • Thanks to Timo Kreuzer for some clever definitions, Knuth for his genius, several online C implementations for ideas, the HPI kernel blog for insight on how Windows does it, and others. (sir_richard)
  • Learn to build User PTEs as well, with MI_MAKE_HARDWARE_PTE_USER. (sir_richard)
  • MI_MAKE_HARDWARE_PTE becomes MI_MAKE_HARDWARE_PTE_KERNEL, since it assumed this. MI_MAKE_HARDWARE_PTE is now a "generic" you can use when you don't know what the PTE should be. It uses MiDetermineUserGlobalMask to set the right bits. (sir_richard)
  • Add two more helpers: MI_IS_PAGE_TABLE_ADDRESS and MI_IS_SYSTEM_PAGE_TABLE_ADDDRESS. One is in the symbols, the other I made up to make things clearer. (sir_richard)
  • MiResolveDemandZeroFault now knnows how to resolve user-demand-zero-faults. (sir_richard)
  • Implement MiZeroPfn to do the actual zeroing during user-demand-zero-faults (also later for VAD faults). (sir_richard)
  • Initialize the system cache working set pushlock. (sir_richard)
  • Implement Mi(Un)Lock(Process)WorkingSet inlines to handle the various scenarios. Replace broken/hacky code that was in the system loader, fault handler, and VM deletion paths with the correct macros. No locking is done yet as ReactOS' MAREA implementation overloads the Vm field in EPROCESS, but the correct APC blockings and state transitions are done. (sir_richard)
  • Add another helper from symbols, MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS, and use it instead of the math-by-hand. (sir_richard)
  • Add MM_IS_ANY_LOCK_HELD and MI_WS_OWNER to help out the new working let locking inlines (names taken from symbols). (sir_richard)
  • Add _1GB helper for large-memory checks. Also define _1KB as "1024u". The "u" makes GCC not complain when sizes reach >= 2GB, because GCC will interpret the integer literals as "signed", even if the final calculated value is in an unsigned variable. (sir_richard)
  • Allocate the PEB at a pseudo-random address just like Windows XP SP2 and later, to prevent certain kinds of exploits. (sir_richard)
  • Allocate PEB and TEB using VADs! The user-mode fault handler seems to work fine, and I could find no regressions. This is the beginning of the end for MAREAs for VM allocations (they will remain for sections). (sir_richard)
  • Antique leftover, initialize the shared user data page with MI_MAKE_HARDWARE_PTE_KERNEL (sir_richard)
  • Stop handling a bunch of MEMORY_AREA_TYPEs that aren't used anymore. (sir_richard)
  • Define the template prototype PTE. (sir_richard)
  • Stop handling PEB/TEB MAREAs since they're not used anymore. (sir_richard)
  • Note: this patch only implements the code paths, they are not excercised yet. (sir_richard)
  • Implement handling a very special case of "prototype PTE", the one used to map the shared user data for user-mode applications. (sir_richard)
  • MiCheckVirtualAddress detects this (Windows behavior) and returns a prototype PTE that's marked MM_READONLY. This is our MmSharedUserDataPte from before. This gets sent to MiDispatchFault which calls MiResolveProtoPteFault to handle it. In turn, this calls MiCompleteProtoPteFault. All these code paths have heavy ASSERTions to only allow them to be hit for the shared user data page, however, in the far distant future when prototype PTEs are used for section objects, we'll at least have the right checks and code flow (many of these ASSERTions will then have to be removed). (sir_richard)
  • The end result is that we also now have STATUS_PAGE_FAULT_TRANSITION, not just STATUS_PAGE_FAULT_DEMAND_ZERO, and that prototype PTEs are somewhat understood and some assumptions have been removed. (sir_richard)
  • Prepare to take over MmCreateProcessAddressSpace. (sir_richard)
  • Reimplement MmCreateProcessAddressSpace in ARM3. Basically the same as before but using the ARM3 PFN list APIs, the ARM3 macros, etc. Once change is processes are now populating the MmProcessList, and the "MmGlobalKernelPageTable" isn't used anymore for new processes. Also the mappings come from SysPTE space, not hyperspace. (sir_richard)
  • More work will be needed in this area, but this gets rid of another ReactOS dinosaur. (sir_richard)
  • Implement MmCleanProcessAddressSpace in ARM3, now the PEB/TEB VADs are removed when the process exits (although the pages are still leaking, for now), and the pool allocation for the VAD is also freed. (sir_richard)
  • Use ARM3 paged pool up until smss.exe starts. There's a last bug in the expansion code before we can get rid of the old paged pool. (sir_richard)
  • Implement MmDeleteTeb, VADs are now deleted/freed on thread exit as well (but the underlying page is still leaked). Should fix the advapi32 security crash. (sir_richard)
  • Sometimes it seems we hit some bad VADs due to bugs? in the AVL tree implementation. I'm going on vacation for a month and can't look at this, so I've hacked the code to ignore such VADs for now, in the interest of fixing the winetest regression. (sir_richard)
  • Convert MmProtectToPteMask to extern. (Amine Khaldi)
  • Convert LpcpAllocateFromPortZone to static __inline. (Amine Khaldi)
  • Another long-lost-promised straggler for Timo. There may be more of these needed, this is what I had done on my disk. (sir_richard)
  • Fix kernel memory corruption when dequeuing a PnP event (Cameron Gutman)
  • Xcode.... (Cameron Gutman)
  • 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)
  • Add DRIVER_CAUGHT_MODIFYING_FREED_POOL bugcheck code. (sir_richard)
  • Add support for protected freed nonpaged pool. This is controlled through MmProtectFreedNonPagedPool, which is initialized based on a registry value (see cmdata.c). This is not "Special Pool", but a useful debugging feature Windows implements that we now have too, since I noticed a lot of mj's work was with freed pool access. (sir_richard)
  • NB. It's 3AM and I have not tested this, it should be off in trunk by default, you'll need to try turning it on and testing it. Hope it helps. (sir_richard)
  • This line, and those low, will be ignored-- (sir_richard)
  • M ntoskrnl/mm/ARM3/pagfault.c (sir_richard)
  • M ntoskrnl/mm/ARM3/pool.c (sir_richard)
  • M include/reactos/mc/bugcodes.mc (sir_richard)
  • Missed a bunch of codepaths, protected pool "should" work now. (sir_richard)
  • Add an extra layer of protection for freed nonpaged pool: write a 4-byte signature on freed blocks, and assert its valid on checked builds. Use a slightly less egocentric ASCII value than on Windows (name of the developer who wrote the first memory manager). (sir_richard)
  • Remove useless variables in kernel code that were set, but never actually used (dead code, tests, copy/pasters). If a variable was set but not used because of missing/#if'ed out code, a note was added instead. (sir_richard)
  • In the process, fix bugs in the Event dispatcher code that used Win32 EVENT_TYPE instead of NT KOBJECTS enumeration. (sir_richard)
  • Fix a bug in ObpInsertHandleCount, where the object access check was being done with the previous mode, instead of honoring the probe mode, which is defined by OBJ_FORCE_ACCESS_CHECK. (sir_richard)
  • Fix a bug in a section function which was always returning STATUS_SUCCESS, now it returns the result of the previous Status = function assignment. If this isn't desired, then don't check for the Status anymore. (sir_richard)
  • Note that MDL code does not support SkipBytes argument. If it is used, MDL could be invalid. (sir_richard)
  • Add checks for VerifierAllocation and set it when needed (WIP). (sir_richard)
  • Clarify what _WORKING_LINKER_ is, and the legal risks in continuing to use a linker that builds non-Microsoft drivers when used with headers whose EULA specify that they can only be used for Microsoft drivers. (sir_richard)
  • Rename KINTERRUPT_DISPATCH_CODES to DISPATCH_LENGTH, as it is in PSDK. (Aleksey Bragin)
  • Enhance NMI debug support. (Aleksey Bragin)
  • 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)
  • Add CmRegistryMachineSystemName to the internal header file, needed for Pierre's further work. (Aleksey Bragin)
  • Move the fix for pool corruption due to dangling MmProcessLinks pointer into its correct location. Thanks again to Martin for the fix. (sir_richard)
  • Likely fix for bug 5600: (sir_richard)
  • Using IsBadRead/CodePtr, it's possible for user-mode code to generate cases where we *think* this is an ARM3-managed piece of VA, which will always have a VAD (Since we only manage the PEB/TEB), but actually it's a bogus VA-looking address that is actually invalid. We didn't consider this case. We now implement the same code Windows normally would also handle, when the VA is bogus, and accept that no VAD might be found, so MM_NOACCESS is returned and thus an access violation sent to the caller. In the case of the IsBad...Ptr, this function would then return TRUE, as the caller expects. (sir_richard)
  • More fixes to VDM PUSH/POPF code: (Timo Kreuzer)
  • When doing a 32bit push, don't store the flags 2 bytes off (Timo Kreuzer)
  • Recalculate HardwareEsp, by substracting the segment part, instead of truncating the flat pointer to 16 bit. (Timo Kreuzer)
  • Add support for Cyrix CPUs by checking and applying a workaround for the Cyrix 6x COMA bug (description here: http://gwyn.tux.org/~balsa/linux/cyrix/p11.html). (Aleksey Bragin; #5610)
  • Add support for KeyValueFullInformationAlign64, used by some Windows drivers (as a bonus, support Win64). PartialInformationAlign64 is a different beast -- warn when a driver attempts to use it, instead of silent failure. (sir_richard)
  • Export VfFailSystemBIOS and stub it. (sir_richard)
  • Warn when a driver fails to load due to a missing dependency and print the name and/or missing module, instead of silently failing. (sir_richard)
  • Due to a bug in the ReactOS PnP manager, Windows PCI Driver hits an internal pseudo-assert. Hack KeBugCheckEx to ignore this pseudo-assert and continue executing normally. (sir_richard)
  • Update 3rd Party Files.txt To Current 3rd Party Releases. (Aleksey Bragin; #5603)

NTOS_HAL

  • Rework respective code to handle this by using the VDM Alert field in the KPCR. (sir_richard)
  • this log message left intentionally non-descriptive (Matthias Kupfer)
  • Remove VDM Alert KPCR hack (which was buggy). Now the PKTRAP_FRAME is passed as a parameter to HalpEndSoftwareInterrupt/HalEndSystemInterrupt. This also removes the HalpNestedTrap ASM hack, since the call can now be done in C. (sir_richard)
  • Move trap entry points from C into a GAS/ML compatile assembly file (might need fine tuning for ML). The entries are generated by a shared assembly macro TRAP_ENTRY. Removed KiTrapStub, KiIsV8086TrapSafe, KiIsUserTrapSafe, KiSetSaneSegments, removed segment handling from KiEnter*Trap. (Timo Kreuzer)

NTOS_PERF

  • 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)

NTOSKNL

  • undef IoAllocateAdapterChannel before implementing it (Timo Kreuzer)

NTOSKNRL

  • Add the possibility to break on all first chance exceptions, by passing /FIRSTCHANCE on the command line. Enable it temporary to get some more information from the sysreg crash. (Timo Kreuzer)
  • Add /KDSERIAL to the command line, to make sysreg able to bt in first stage. (Timo Kreuzer)

NTOSKRL

NTOSKRNL_CONFIG

  • 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)

NTOSKRNL_FREELDR

NTOSKRNL_IO

  • Check for null pointers before attempting to copy or free memory. (Michael Martin)
  • Modify IopCreateDriver to accept the PLDR_DATA_TABLE_ENTRY instead of the DllBase and SizeOfImage from this structure. (Michael Martin)
  • Set the DriverObject->DriverSection before calling the DriverEntry routine. (Michael Martin)
  • If the DriverEntry routine fails then set the DriverObject->DriverSection back to NULL so that IopDeleteDriver doesnt attempt to unload the ModuleObject, after it was already unloaded by the caller. (Michael Martin)

NTOSKRNL_IO_PNPMGR

  • Fix incorrect POOL_TYPE allocation in IoInvalidateDeviceRelations. This function can be called at DISPATCH_LEVEL, which requires NonPagedPool POOL_TYPE. (Michael Martin)

NTOSKRNL_PO

  • 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)

NTOSKRNL_PS

  • 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)

NTSOKRNL

OLDNAMES

RSYM64

SCM

  • Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). (sir_richard)

SETUPLDR

  • 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)

STRSAFE

VMX-SVGA

  • Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. (sir_richard)

WDMAUD_KERNEL

WIN32K|GDI32

  • 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)

WIN32K|GGI32

  • Diagnostic commit used for troubleshooting leaking region handles. (James Tabor)
  • Updates to headers and experimental code added for regions. (James Tabor)

WIN32K|USER32

  • Rewrite user handles and switch over to the new handle manager. (James Tabor)
  • Fix leak in engwindow.c and monitor.c. (James Tabor)
  • Updated DrawIconEx information for Meta support. (James Tabor)
  • Start Menu and Item structure migration. (James Tabor)

XDK_DDK

SYSGEN

Versions / Official Changelogs / Community Changelogs
0.0.x Series 0.0.8 | 0.0.9 | 0.0.10 | 0.0.11 | 0.0.12 | 0.0.13 | 0.0.14 | 0.0.15 | 0.0.16 | 0.0.17 | 0.0.18 | 0.0.19 | 0.0.20 | 0.0.21
0.1.x Series 0.1.0 | 0.1.1 | 0.1.2 | 0.1.3 | 0.1.4 | 0.1.5
0.2.x Series 0.2.0 | 0.2.1 | 0.2.2 | 0.2.3 | 0.2.4 | 0.2.5 | 0.2.6 | 0.2.7 | 0.2.8 | 0.2.9
0.3.x Series 0.3.0 | 0.3.1 | 0.3.2 | 0.3.3 | 0.3.4 | 0.3.5 | 0.3.6 | 0.3.7 | 0.3.8 | 0.3.9 | 0.3.10 | 0.3.11 | 0.3.12 | 0.3.13 | 0.3.14 | 0.3.15 | 0.3.16 | 0.3.17
0.4.x Series 0.4.0 | 0.4.1 | 0.4.2 | 0.4.3 | 0.4.4 | 0.4.5 | 0.4.6 | 0.4.7 | 0.4.8 | 0.4.9 | 0.4.10 | 0.4.11 | 0.4.12