Difference between revisions of "ChangeLog-0.3.6"

From ReactOS Wiki
Jump to: navigation, search
Line 7: Line 7:
 
* Red Screen of Death now functioning ([[ReactOS Portable Systems Group]])
 
* Red Screen of Death now functioning ([[ReactOS Portable Systems Group]])
 
* Create separate boot data files for each architecture because of differing Registry configurations ([[ReactOS Portable Systems Group]])
 
* Create separate boot data files for each architecture because of differing Registry configurations ([[ReactOS Portable Systems Group]])
 +
* Clean up KTRAP_FRAME and KEXCEPTION_FRAME definitions ([[ReactOS Portable Systems Group]])
  
 
== Translations ==
 
== Translations ==
Line 28: Line 29:
  
 
== RBuild ==
 
== RBuild ==
 +
* Correct LD to not assume the base address is an entrypoint ([[ReactOS Portable Systems Group]])
  
 
== Sysreg ==
 
== Sysreg ==
Line 39: Line 41:
  
 
== Kernel and Executive (NTOSKRNL) ==
 
== Kernel and Executive (NTOSKRNL) ==
 +
* Fix exports for ARM ([[ReactOS Portable Systems Group]])
 +
 
=== Cache ===
 
=== Cache ===
  
 
=== CM ===
 
=== CM ===
 +
* Add ramdisk class ([[ReactOS Portable Systems Group]])
  
 
=== EX ===
 
=== EX ===
Line 48: Line 53:
 
* Better implementation of QSI SystemInterruptInformation ([[Aleksey Bragin]])
 
* Better implementation of QSI SystemInterruptInformation ([[Aleksey Bragin]])
 
* Remove a hack in the executive handle implementation which worked around a memory corruption bug ([[Stefan Ginsberg]], bug #3512)
 
* Remove a hack in the executive handle implementation which worked around a memory corruption bug ([[Stefan Ginsberg]], bug #3512)
 +
* Correct a debug print to make sure it is Execute in Place boot ([[ReactOS Portable Systems Group]])
  
 
=== FSRTL ===
 
=== FSRTL ===
Line 56: Line 62:
 
* Fix Irp flags assignment in case of an IoAllocateIrp call with ChargeQuota set to TRUE ([[Aleksey Brgin]])
 
* Fix Irp flags assignment in case of an IoAllocateIrp call with ChargeQuota set to TRUE ([[Aleksey Brgin]])
 
* Fixed double freeing of IRP in NtSetInformationFile ([[Michael Martin]])
 
* Fixed double freeing of IRP in NtSetInformationFile ([[Michael Martin]])
 +
* Dereference the device object instead of an I/O work item ([[ReactOS Portable Systems Group]])
 +
* Have PnP handle BusRelations instead of ignoring them ([[ReactOS Portable Systems Group]])
  
 
=== KD ===
 
=== KD ===
Line 62: Line 70:
 
=== KE ===
 
=== KE ===
 
* Fix a problem with normal and special APCs being inserted in the wrong order, spotted by Jury Sidorov. Now Borland Turbo Debugger should be able to debug applications, also it can fix hangs in other applications ([[Aleksey Bragin]], [[Yury Sidorov]], bug #3426)
 
* Fix a problem with normal and special APCs being inserted in the wrong order, spotted by Jury Sidorov. Now Borland Turbo Debugger should be able to debug applications, also it can fix hangs in other applications ([[Aleksey Bragin]], [[Yury Sidorov]], bug #3426)
* Implement KiSaveProcessorControlState, KiApcInterrupt ([[ReactOS Portable Systems Group]])
+
* Implement KiSaveProcessorControlState, KiApcInterrupt, KiPrefetchAbortHandler, KiDispatchException ([[ReactOS Portable Systems Group]])
 +
* Rewrite low level trap/exception/system call code for ARM ([[ReactOS Portable Systems Group]])
 +
* Rewrite system call interface using a BSD model ([[ReactOS Portable Systems Group]])
 +
* Move timebase code into its own file ([[ReactOS Portable Systems Group]])
 +
* Fire off DPC when quantum has ended ([[ReactOS Portable Systems Group]])
 +
* Check if trap originated from kernel mode or user mode ([[ReactOS Portable Systems Group]])
 +
* Use KdpSerialPrint instead of arm_kprintf ([[ReactOS Portable Systems Group]])
 +
* Implement prefetch abort handler ([[ReactOS Portable Systems Group]])
 +
* Implement KeArmInstructionFaultStatusRegisterGet, KeTrapFrameToContext, KeContextToTrapFrame, KeSaveStateForHibernate, KeQueryActiveProcessors, KeSetDmaIoCoherency, KeFlushEntireTb, KeGetRecommendedSharedDataAlignment, KeDisableInterrupts, KeInvalidateAllCaches, KeIcacheFlushCount ([[ReactOS Portable Systems Group]])
 +
* Call TRAP_PROLOG with 0 ([[ReactOS Portable Systems Group]])
 +
* Decrement PC count by 4 to reach previous instruction, increment by 4 to skip actual instruction during a DebugService trap ([[ReactOS Portable Systems Group]])
 +
* Enable timer expiration ([[ReactOS Portable Systems Group]])
 +
* Reorganize function stubs according to port targets ([[ReactOS Portable Systems Group]])
 +
* Implement NtSetLdrEntries, NtVdmControl ([[ReactOS Portable Systems Group]])
 +
* Enable interrupts after probing and capturing parameters during a system call ([[ReactOS Portable Systems Group]])
 +
* Enable WFI during idle loop ([[ReactOS Portable Systems Group]])
 +
* Request APC interrupt if thread context switched to has APCs pending and enabled ([[ReactOS Portable Systems Group]])
 +
* Perform DPC watchdog debugging code if a DPC lasts longer than a second ([[ReactOS Portable Systems Group]])
 
* PDT of CSRSS has no entry for TCB of the thread, fix this problem ([[Dmitry Gorbachev]], bug #3591)
 
* PDT of CSRSS has no entry for TCB of the thread, fix this problem ([[Dmitry Gorbachev]], bug #3591)
 
* Get rid of a confusing goto in apc.c, a remnant of some code refactoring ([[Stefan Ginsberg]])
 
* Get rid of a confusing goto in apc.c, a remnant of some code refactoring ([[Stefan Ginsberg]])
Line 71: Line 96:
 
** Invalid parameter error is returned if requested memory area is located above USER_SHARED_DATA address (0x7FFE0000) (WinXP compatible).
 
** Invalid parameter error is returned if requested memory area is located above USER_SHARED_DATA address (0x7FFE0000) (WinXP compatible).
 
** Access violation error is returned if existing memory area found on requested address and this area have uninitialized region list.
 
** Access violation error is returned if existing memory area found on requested address and this area have uninitialized region list.
 
 
* MiGetLastKernelAddress was totally broken on x86 and always returned the highest available physical page, thus the PFN database always end up at the address 0x80000000 and higher (just before the kernel). And when PFN database's size was bigger than usual (e.g. 1Gb of RAM and more), the PFN database zeroed out the kernel. This logic was introduced by 32640 commit. Fix it. ([[Aleksey Bragin]])
 
* MiGetLastKernelAddress was totally broken on x86 and always returned the highest available physical page, thus the PFN database always end up at the address 0x80000000 and higher (just before the kernel). And when PFN database's size was bigger than usual (e.g. 1Gb of RAM and more), the PFN database zeroed out the kernel. This logic was introduced by 32640 commit. Fix it. ([[Aleksey Bragin]])
 
* Implement MmDeleteVirtualMapping ([[ReactOS Portable Systems Group]])
 
* Implement MmDeleteVirtualMapping ([[ReactOS Portable Systems Group]])
Line 89: Line 113:
 
* Prevent crashes when heapPtr is NULL, also fix broken heap magic output ([[Aleksey Bragin]], [[Roel Messiant]])
 
* Prevent crashes when heapPtr is NULL, also fix broken heap magic output ([[Aleksey Bragin]], [[Roel Messiant]])
 
* Implement RtlCaptureContext ([[ReactOS Portable Systems Group]])
 
* Implement RtlCaptureContext ([[ReactOS Portable Systems Group]])
 
+
* Write a DebugService routine for ARM ([[ReactOS Portable Systems Group]])
 +
* Implement DebugService2 ([[ReactOS Portable Systems Group]])
 
* Always call ZwRaiseException in user mode and RtlDispatchException in kernel mode. If RtlDispatchException failed call ZwRaiseException in kernel mode. Otherwise unhandled RtlRaiseException() call in kernel mode simply ignored (do nothing)! ([[Yury Sidorov]])
 
* Always call ZwRaiseException in user mode and RtlDispatchException in kernel mode. If RtlDispatchException failed call ZwRaiseException in kernel mode. Otherwise unhandled RtlRaiseException() call in kernel mode simply ignored (do nothing)! ([[Yury Sidorov]])
 
 
* Call RtlRaiseStatus in RtlRaiseException, if something went wrong  ([[Yury Sidorov]])
 
* Call RtlRaiseStatus in RtlRaiseException, if something went wrong  ([[Yury Sidorov]])
 
 
* Speed-up user mode exception handling by calling RtlDispatchException() first if there is no active user mode debugger. This avoids switches to kernel mode if exception can be handled by SEH ([[Yury Sidorov]])
 
* Speed-up user mode exception handling by calling RtlDispatchException() first if there is no active user mode debugger. This avoids switches to kernel mode if exception can be handled by SEH ([[Yury Sidorov]])
 
 
* Implement RtlSetUserValueHeap, RtlSetUserFlagsHeap, RtlGetUserInfoHeap functions. It is quick implementation and it works. It fixes "Out of memory" error in all InnoSetup based installations. A lot of software can be at least installed in ReactOS now. Also it fixes Delphi applications which use TMemoryStream class. ([[Yury Sidorov]])
 
* Implement RtlSetUserValueHeap, RtlSetUserFlagsHeap, RtlGetUserInfoHeap functions. It is quick implementation and it works. It fixes "Out of memory" error in all InnoSetup based installations. A lot of software can be at least installed in ReactOS now. Also it fixes Delphi applications which use TMemoryStream class. ([[Yury Sidorov]])
  
Line 133: Line 155:
  
 
=== KDCOM ===
 
=== KDCOM ===
 +
* Separate KDCOM into i386 and ARM ([[ReactOS Portable Systems Group]])
 +
* Implement KdPortPutByteEx, KdPortInitializeEx for ARM ([[ReactOS Portable Systems Group]])
  
 
=== NTFS ===
 
=== NTFS ===
Line 144: Line 168:
 
* Define NT RAM DISK device interface ([[ReactOS Portable Systems Group]])
 
* Define NT RAM DISK device interface ([[ReactOS Portable Systems Group]])
 
* Add boot support for ramdisk ([[ReactOS Portable Systems Group]])
 
* Add boot support for ramdisk ([[ReactOS Portable Systems Group]])
 +
* Implement RamdiskAddDevice, RamdiskOpenClose, RamdiskPnp, RamdiskCreateRamdisk, RamdiskDeviceControl, RamdiskCreateDiskDrive, RamdiskQueryDeviceRelations, RamdiskWorkerThread ([[ReactOS Portable Systems Group]])
 +
* Add device state data ([[ReactOS Portable Systems Group]])
 +
* Add support for IRP_MN_SURPRISE_REMOVAL ([[ReactOS Portable Systems Group]])
 +
* Handle IRP_MN_QUERY_ID, IRP_MN_QUERY_DEVICE_TEXT/BUS_INFORMATION/CAPABILITES, IRP competion for bus and ([[ReactOS Portable Systems Group]])
 +
* Implement IRP_MN_QUERY_RESOURCES/RESOURCE_REQUIREMENTS for bus and drive ([[ReactOS Portable Systems Group]])
 +
* Separate ramdisk device extensions into bus and drive device extensions ([[ReactOS Portable Systems Group]])
 +
* Rename device types to bus and drive, not FDO and PDO ([[ReactOS Portable Systems Group]])
 +
* Implement work queue to handle requests asynchronously ([[ReactOS Portable Systems Group]])
 +
* Fill out device relation count instead of leaving it uninitialized at 2 billion ([[ReactOS Portable Systems Group]])
 +
* Create Ram disk drive device object and name based off of GUID, DOS device symbolic name, and DOS drive letter ([[ReactOS Portable Systems Group]])
 +
  
 
=== SCSIPORT ===
 
=== SCSIPORT ===

Revision as of 06:27, 4 August 2008

This is the changelog for ReactOS™ version 0.3.6 (not released yet), 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.5 (released 30 June, 2008).

Contents

General

Generic 0.3.6 Changes

Translations

  • Updated Slovak and Czech translations for calc, solitaire, winmine, shell32 and desk.cpl by Mário Kačmár (bug #3519)
  • Added/updated Spanish and basque translations for notepad, explorer, explorere-new, winlogon, access.cpl, deskadp, deskmon, slayer, shell32 and shimgvw. (Javier Remacha, bug #3376)
  • Added/updated Ukrainian translation for kbswitch and shell32 by Artem Reznikov (bug #3405).
  • Added German translation of strings in INF-files (media/inf) (bug #3396) (Matthias Kupfer)
  • Added/updated Slovak translation for shell32, newdev, eventvwr, devmgr, regedit/clb, regedit, intl.cpl, mmsys.cpl, media/inf/*.inf, calc, solitare, winemine, setup/reactos and desk.cpl by Mário Kačmár (bug #3414, #3518, #3519, #3610)
  • Update Czech translation for several win32/cpl files and calc by Radek Liska (bug #3413)
  • Update Italian translation for usetup, regedit and sehll32 by Paolo Devoti (bug #3435)
  • Update Polish translation of usrmgr by Maciej Bialas (bug #3480)
  • Update Slovak, Ukranian and Polish translations for packmgr by Mário Kačmár (bug #3601)
  • Added Norwegian translation of magnify and downloader by Lars Martin Hambro (bug #3504)
  • Updated French translation for Shell32.dll (Pierre Schweitzer)

Host Tools

Buildno

CabMan

RBuild

Sysreg

Core

Bootloader (FreeLoader)

  • Reduce Freeldr memory requirements: FreeLoader first reads entire ntoskrnl.exe (about 3M) into memory, then copies it to other address. Now, freeldr reads it straight to the place, not allocating extra memory for buffer (Dmitry Gorbachev, bug #3447)
  • Modify i386 and PowerPC ports in several places to use the heap to allocate temporary data (Stefan Ginsberg)
  • Add ramdisk support for non-clean architectures (ReactOS Portable Systems Group)
  • Add driver database code (ReactOS Portable Systems Group)

Kernel and Executive (NTOSKRNL)

Cache

CM

EX

  • Include a "System Idle Process" as the first item in QSI SystemProcessInformation (Aleksey Bragin)
  • Pass thread's CreateTime in QSI SystemProcessInformation (Aleksey Bragin)
  • Better implementation of QSI SystemInterruptInformation (Aleksey Bragin)
  • Remove a hack in the executive handle implementation which worked around a memory corruption bug (Stefan Ginsberg, bug #3512)
  • Correct a debug print to make sure it is Execute in Place boot (ReactOS Portable Systems Group)

FSRTL

IO

  • Save pointer to driver's section in DriverSection during driver loading (Aleksey Bragin, bug #3221)
  • Fix unloading function to check if a driver to be unloaded really has DriverSection set, and if not, fail (Aleksey Bragin, bug #3221)
  • Fix Irp flags assignment in case of an IoAllocateIrp call with ChargeQuota set to TRUE (Aleksey Brgin)
  • Fixed double freeing of IRP in NtSetInformationFile (Michael Martin)
  • Dereference the device object instead of an I/O work item (ReactOS Portable Systems Group)
  • Have PnP handle BusRelations instead of ignoring them (ReactOS Portable Systems Group)

KD

KE

MM

  • Prevent boolean flags from being optimized away by compiler (due to PSEH usage) by making them volatile (Yury Sidorov, bug #3408)
  • VirtualAlloc() fixes (Yury Sidorov, bug #3467):
    • Invalid parameter error is returned if requested memory area is located above USER_SHARED_DATA address (0x7FFE0000) (WinXP compatible).
    • Access violation error is returned if existing memory area found on requested address and this area have uninitialized region list.
  • MiGetLastKernelAddress was totally broken on x86 and always returned the highest available physical page, thus the PFN database always end up at the address 0x80000000 and higher (just before the kernel). And when PFN database's size was bigger than usual (e.g. 1Gb of RAM and more), the PFN database zeroed out the kernel. This logic was introduced by 32640 commit. Fix it. (Aleksey Bragin)
  • Implement MmDeleteVirtualMapping (ReactOS Portable Systems Group)

OB

PO

PS

  • Don't leak critical region when going through failure return branch (Dmitry Gorbachev)
  • Prevent BSOD if ObReferenceObjectByHandle failed in NtGetContextThread and NtSetContextThread (Yury Sidorov)

Hardware Abstraction Layer (HAL)

Run Time Library (RTL)

  • Prevent crashes when heapPtr is NULL, also fix broken heap magic output (Aleksey Bragin, Roel Messiant)
  • Implement RtlCaptureContext (ReactOS Portable Systems Group)
  • Write a DebugService routine for ARM (ReactOS Portable Systems Group)
  • Implement DebugService2 (ReactOS Portable Systems Group)
  • Always call ZwRaiseException in user mode and RtlDispatchException in kernel mode. If RtlDispatchException failed call ZwRaiseException in kernel mode. Otherwise unhandled RtlRaiseException() call in kernel mode simply ignored (do nothing)! (Yury Sidorov)
  • Call RtlRaiseStatus in RtlRaiseException, if something went wrong (Yury Sidorov)
  • Speed-up user mode exception handling by calling RtlDispatchException() first if there is no active user mode debugger. This avoids switches to kernel mode if exception can be handled by SEH (Yury Sidorov)
  • Implement RtlSetUserValueHeap, RtlSetUserFlagsHeap, RtlGetUserInfoHeap functions. It is quick implementation and it works. It fixes "Out of memory" error in all InnoSetup based installations. A lot of software can be at least installed in ReactOS now. Also it fixes Delphi applications which use TMemoryStream class. (Yury Sidorov)

Kernel Mode Drivers

AFD

TCPIP

NDIS

BLUE

BOOTVID

  • Fix a problem in VgaIsPresent: Content of the Address Register goes to the Data Register, and vice versa. It also writes content of the Map Select Register (which is number 4) into the Bit Mask Register (number 8) (Dmitry Gorbachev, bug #2125)
  • Implement VidResetDisplay for ARM (ReactOS Portable Systems Group)

EXT2

FASTFAT

  • Removed wrong FIXME: CcInitializeCacheMap doesn't raise exceptions. (Pierre Schweitzer, bug #3315)

I8042PRT

KDCOM

NTFS

RAMDISK


SCSIPORT

  • Don't release the same spinlock twice on failure (Cameron Gutman) (bug #3520)

SERIAL

SERENUM

VIDEOPRT

NT System Library (NTDLL)

  • Initialize TLS expansion bitmap properly, it fixes accessing uninitialized memory when all regular TEB slots for TLS data are occupied (Aleksey Bragin)
  • Add an initial breakpoint for usermode process startup, this makes usermode debuggers working (Yury Sidorov, Aleksey Bragin)

Static Libraries

CRT

TCP

NTFSLIB

SCRNSAVE

Keyboard Layouts

  • Add Slovak QWERTY keyboard layout (kbdsk1.dll) by Mário Kačmár (bug #3528)

USETUP

  • Remove all translations for the "Paged Memory", "Nonpaged Memory" and "Free Memory" progress bars.
    This is debug stuff, which should have never been translated. As the translated strings are also sometimes longer than the english ones, they led to unnecessary problems like overlapping text. (Colin Finck)

Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Fix a typo in the DC_ATTR structure (mxDevicetoWorld -> mxDeviceToWorld) (Stefan Ginsberg)
  • Check if pool allocation succeeded right after allocation, not at the end of the function, when the pointer has been used quite a few times already (Aleksey Bragin)
  • Remove XFORM members from DCLEVEL and use MATRIX instead (Stefan Ginsberg)
  • Fixed RestoreDC and lots of visual glitches as result. Especially in Delphi applications (Yury Sidorov, bug #3491)

Services

services

  • Implemented ScmDeleteMarkedServices. Services can be deleted now (Yury Sidorov)

tcpsvcs

umpnpmgr

Control panel applets

Appwiz-New

Desk

Input

Intl

  • Fixed country codes (each country appears once only) (Matthias Kupfer, bug #3488)

Ncpa

Usrmgr

Sysdm

Timedate

Win32™ Applications

3dtext

Autochk

Blankscr

Charmap

Cmd

Control

Downloader

Dwnl

Explorer

Explorer_new

Fontview

Magnify

Matrix

Mazescr

Msconfig

Notepad

Regedt32

Taskmgr

Vgafontedit

Win32™ Libraries

ADVAPI32

  • Check for correct access, DELETE, when deleting services (Michael Martin)
  • Dependencies param in CreateService is a double terminated string array (Michael Martin)
  • Fixed dependency string length to pass correct size to rpcserver (Michael Martin)

COMCTL32

D3D9

DNSAPI

DirectX

GDI32

  • Fix a typo in the DC_ATTR structure (mxDevicetoWorld -> mxDeviceToWorld) (Stefan Ginsberg)

GDIPLUS

INETMIB1

MSAFD

KERNEL32

  • Port Wine's WideCharToMultiByte implementation for conversion to a codepage to ReactOS.
    It adds support for DefaultChar, UsedDefaultChar and the flag WC_NO_BEST_FIT_CHARS. (Colin Finck)
  • Added comments to the CPTABLEINFO structure based on documentation from http://www.ping.uio.no/~ovehk/nls/ (Colin Finck)
  • Add a new check for 'MultiByteCount < 0' to WideCharToMultiByte (verified under WinXP SP2) (Colin Finck)
  • Fixed WriteProcessMemory. With this fix applied, user mode debuggers are able to work much better - be able to write in memory, set breakpoints, etc. (Yury Sidorov, Aleksey Bragin, bug #3415)

MSVCRT

  • Fix ordinals of msvcrt according to Windows Server 2003 SP1's msvcrt.dll (Colin Finck)
  • Implement new versions of wctomb and wcstombs, which consider the language set by setlocale() and work according to all behaviours I could find when testing under WinXP SP2 (Colin Finck)

OpenGL32

SECUR32

SETUPAPI

  • Support of [Strings.LanguageID]-sections for INF-files added in setupapi (bug #3396) (Matthias Kupfer)

SHELL32

UEXT2

UNTFS

USER32

WININET

WS2_32

  • Implemented freeaddrinfo() and getaddrinfo() (Yury Sidorov)
  • Implement bare boned getprotobyname() and getprotobynumber() (Yury Sidorov)
  • Make winsock functions return proper error codes instead of success (will help to identify any probs with network apps) (Yury Sidorov)

Template:Changelog