ChangeLog-0.3.3

From ReactOS Wiki
Revision as of 18:59, 22 July 2007 by Christoph_vW (talk | contribs) (Kernel-mode subsystem server (Win32K))
Jump to: navigation, search

This is a work in progress.

IMPORTANT: When adding a change, write a REAL NAME of the person, not his irc or whatever nicks. This is an official paper. Also, reference bug numbers at the end of the change, in braces, like (your name, bug #2373). If this is not a bug, but a patch, reference it with (your name, ticket #2373) or something like that.



This is the changelog for ReactOS™ version 0.3.3 (released whenever), an open-source operating system designed to be binary executable- and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was version 0.3.1 (released 10 March, 2007).

General

Generic 0.3.3 Changes

  • Source tree restructure and cleanup (Alex Ionescu, Aleksey Bragin)
  • Update DejaVu font to 2.18 (Magnus Olsen)
  • Switch to DejaVu font in all cases, Cmd is now using DejaVu font as well, the GUI already uses it (Magnus Olsen)
  • Import usp10 from Wine, CVS revision 1.8 (Magnus Olsen)
  • Add a test case for a few APIs of the Win32k DirectX support, like NtGdiDdCreateDirectDrawObject, NtGdiDdDeleteDirectDrawObject, NtGdiDdQueryDirectDrawObject. The test case is not 100% correct because of different faults, so you need to check by hand why it failed in some cases. The test case works on every Windows that supports DirectX8 or higher, or ReactOS 0.2.9 or higher (Magnus Olsen)
  • Change ObpDosDevicesShortName to match the ob.h header prototype (Magnus Olsen)
  • Many header compatibility fixes between our DDK and MS DDK version 3790.1830 (Magnus Olsen)
  • Update FreeType to 2.3.4 (Magnus Olsen)
  • Create a folder called DXSDK, which contains headers that work similar as MS DXSDK 2004 December (Magnus Olsen)
  • Various compilation fixes for MSVC for different modules (Magnus Olsen)

RBUILD

  • Add option to macro to specify for which backend this macro is intended (Johannes Anderwald)
  • Add support for .ocx files (Ged Murphy)
  • Add OPTIMIZE configuration setting to config.rbuild/config.template.rbuild (-O, -Os, -O1, -O2, -O3) (Magnus Olsen)
  • Add a Microsoft build backend to be able to check drivers with PREfast (Christoph von Wittich)

Translations

  • Added some more LANG and SUBLANG definitions to the "winnt.h" header file (Colin Finck)
  • Changed the rules for the SUBLANG entries in translations (new rules can be found here), so the existing translations apply to more locales now (Colin Finck, Daniel Reimer, Magnus Olsen)
  • Added German Translations for charmap, console, msgina, serialui, win32csr (Daniel Reimer)
  • Commited Translations from Bugzilla (#2349, #2350, #2351, #2352, #2353, #2355) (Daniel Reimer) thx to (Kario) and (Smiley)
  • Added Brazilian Portuguese Translations for Control, Expand, Hdwwiz, Mmsys, ntvdm, "reactos.exe" (Setup tool under Windows), Regsvr32, Rundll32, Taskmgr, Userinit, Welcome (Wagner Leandro Bueno Angelo, bugs #2373, #2385)
  • Fixed spelling errors for Dutch translations in Explorer, Setup and Welcome. Added Dutch translation for Wordpad. (Joost de Meij, bug #2296)
  • Fixed spelling and grammar for Dutch translations in desk.cpl and intl.cpl. New Dutch translations for main.cpl (keyboard and mouse) and powercfg.cpl. (Joost de Meij, bug #2300)
  • Added, updated a few translations for polish, lithuanian, french, german, bulgarian, spanish (Johannes Anderwald)
  • Updated the Italian translation of Syssetup (Paolo Devoti, bug #2391)
  • Added/updated french translations for Calc, Cacls, Charmap, Desk, Explorer, Explorer-new, Fontview, Imagesoft, Intl_new, Matrix, Mmc, Msconfig, Regedit, Shutdown, Sndvol32, Solitaire, Syssetup, Taskmgr, Vmwinst, WineMine, Winhelp, WordPad (Pierre Schweitzer, bugs #1969, #2001, #2051, #2054, #2085, #2120, #2209, #2275, #2282, #2297, #2370, #2377, #2390, #2399, #2425, #2427)
  • Improved translations support for Calc, Solitaire, Syssetup (Pierre Schweitzer, bugs #2054, #2247, #2275, #2400)
  • Added Ukrainian translations for Cacls, Charmap, Mmc, Msconfig. Improved Ukrainian translations support for Comdlg32, Explorer, Console, Devmgr, Regedit, Solitaire, Userenv, Win32csr (Artem Reznikov, bug #2411)
  • Added Slovak translation for Calc (Mario Kacmar, bug #2405)
  • Polish translation team translated (or fixed/updated translations of) base applications that were present in 0.3.1, setup subsystem, cmd shell, some system utilities like format, cpl applets, win32 dll's related rc's and some other minor translations (Artek Wisniewski, Olaf Siejka, Lech Groblewicz, Konrad Chmielecki, bugs #2181, #2194)

Core

Kernel and Executive(NTOSKRNL)

  • "Fix" RtlQueryRegistryValues() usage (Alex Ionescu, Aleksey Bragin)
  • Mandatory address PCR via FS register in certain cases (Aleksey Bragin, Dmitry Gorbachev).
  • Fix wrong access-rights when referencing the object, fixes NtEnumerateKey() API (Aleksey Bragin).
  • KiRosFrldrLpbToNtLpb(): Round up to the correct size in pages (Aleksey Bragin).
  • Change "FreeLDR BIAS hack" to a better one: measure sizes of all 3 codepages, and place them contiguously (Aleksey Bragin).
  • Clear DPC request when delivering DPCs from the idle loop (Alex Ionescu).
  • Fix (and optimize) KeRemoveByKeyDeviceQueue() routine (Aleksey Bragin).
  • Fix freeing of an unallocated memory bug (Aleksey Bragin).
  • Correctly fill FullDllName for modules loaded by the bootloader. Don't load a module with the same name more than once (Aleksey Bragin).
  • If the module failed to load (e.g. fixup couldn't be done), then don't include it in the list of loaded modules (Aleksey Bragin).
  • Fix a bug with querying registry values (Herve Poussineau).
  • Fix a problem when a device, which was already in the list is freed and memory corruption is introduced (Aleksey Bragin).
  • Massive changes to the driver loading / device creation logic: Really reuse the driver's object (Aleksey Bragin).
  • Fix driver's object creation accordingly in NtLoadDriver() and IopActionInitChildServices() (Aleksey Bragin).
  • VMWare video driver regression is gone (Aleksey Bragin).
  • "New device found" wizard appears in the 3rd stage (Aleksey Bragin).
  • Move InvalidateRelations to a later stage, when it really should happen (Aleksey Bragin).
  • Minor bugfixes in various places related to these changes (Aleksey Bragin).
  • Remove a hack from IopCreateDriver(), no boot hang happens in VMWare without it anymore (Aleksey Bragin).
  • Give "RAW" filesystem driver a name (Aleksey Bragin).
  • Added a small piece of a new logic into IopCreateDriver(). In ReactOS it's being called two times almost immediately, which results in a non-unique driver object name, since KeTickCount is the same. In order to prevent this situation a loop is added, having 100 iterations as max (Aleksey Bragin).
  • Correctly set DN_DRIVER_LOADED flag (Aleksey Bragin).
  • Fix symbols loading due to an improved PE mapping (Aleksey Bragin).
  • Fix incorrect usage of sprintf in the kernel (Aleksey Bragin).
  • Rewrite KdbSymProcessBootSymbols() with respect to recent kernel changes (Aleksey Bragin).
  • Change KdbSymInit() to match standard kd-wrapper init function (Aleksey Bragin).
  • Always use PsLoadedModuleList as a list of modules (Aleksey Bragin).
  • Load kernel and hal symbols during BootPhase 1 initialization of this KD wrapper (Aleksey Bragin).
  • Commit a fix for KDBG's attach to process problem (Aleksey Bragin and an author of issue #1263).
  • Start turning KDBG into a KD wrapper, and thus removing KDBG-specific hacks in various places of the kernel (Aleksey Bragin).
  • KdbSymInit() became a general initialization routine (Aleksey Bragin).
  • KdpEnterDebuggerException() improvement related to KDBG support (Aleksey Bragin).

Hardware Abstraction Layer (HAL)

  • Reimplement HalpAssignPCISlotResources() based on the old implementation (Aleksey Bragin)

Run Time Library (RTL)

Kernel Mode Drivers

  • Fix HalGetInterruptVector()'s usage of level vs. vector (Aleksey Bragin).
  • Fix incorrect usage of DevicePropertyAddress in videoprt and ndis, so that ndis.sys+pcnet.sys load [again] in Windows XP (Aleksey Bragin).

Storage Stack

PCI

  • Fix incompatibility: In Windows IoGetDeviceProperty(DevicePropertyAddress) returns information as 0xDDDDFFFF (D=Device, F=Function) and not as a PCI_SLOT_NUMBER structure. This is confirmed by tests in Windows XP and 2003, and also found via Google (Aleksey Bragin).

mouclass

kbdclass

i8042prt

  • Ignore incorrect responses to ACK and just retry sending data until either ACK is read, or max number of iterations is reached. This fixes the keyboard/mouse detection problems when running ReactOS inside VMWare (Aleksey Bragin)

Network Stack

  • NDIS: Fix a multiplication error, which lead to a garbage DueTime being passed to KeSetTimerEx() (Aleksey Bragin)
  • AFD: Fix a race condition resulting in a BSOD when running FireFox (Aleksey Bragin)

Audio Stack

NT System Library (NTDLL)

  • Implemented strtoull (msvcrt.dll & ntdll.dll, most generally in libcntpr) (Pierre Schweitzer, bug #2314)

Services

Services.exe

  • Move calls to SetServiceStatus into service.exe (Ged Murphy)

tcpsvcs

  • rewrote the service handler and parts of the main control thread, fixes starting / stopping (Ged Murphy)

Win32™ Personality

User mode subsystem server (CSRSS)

  • Fix a bug where a lock was not released in win32csr (Johannes Anderwald)
  • Fix user32, gdi32 and dnsapi's base addresses so that no relocations occur during system bootup (Aleksey Bragin)

Kernel-mode subsystem server (Win32K)

  • dont double free memory (Johannes Anderwald)
  • remove MenuItem from MenuItemList on request (Johannes Anderwald)
  • Fix return call of GetObject under certain conditions (Ged Murphy)
  • Implement SPI_GET/SETMINIMIZEDMETRICS and SPI_SETNONCLIENTMETRICS in IntSystemParametersInfo (Timo Kreuzer, bug 1668)
  • NtUserBuildHwndList: non-recursive implementation, also processing child windows (Timo Kreuzer)
  • IntSetSysColors: update SysColor brushes and pens and broadcast WM_SYCOLORCHANGE (Timo Kreuzer)
  • NtGdiMoveToEx: copy old cursor pos back to caller instead of copying from caller (Timo Kreuzer)
  • NtGdiGetObjectW: fail if buffer != 0 and count == 0, don't write beyond buffer size (Timo Kreuzer)
  • NtGdiGetObjectW: use SEH only once (Timo Kreuzer)
  • Implement EXTPEN support (Timo Kreuzer)
  • NtGdiGetObjectW: add support for EXTPEN and PALETTE, fix BITMAP and BRUSH (Timo Kreuzer)
  • IntGdiAddFontResource: Add the filename to the font entry (Timo Kreuzer)
  • Partly implement NtGdiGetFontResourceInfoInternalW (Timo Kreuzer)
  • Handle FW_DONTCARE in GetFontScore (Timo Kreuzer)
  • NtGdiPaintRgn: fix a region leak, unlock a bitmap (Timo Kreuzer)
  • IntGetNCUpdateRegion: fix region leak (Timo Kreuzer)
  • co_UserRedrawWindow: Don't use a region after it was deleted (Timo Kreuzer)
  • Fix broken IntValidateParent function (Timo Kreuzer)
  • co_WinPosSetWindowPos: Validate parent windows if a region is bitcopied (Timo Kreuzer)
  • co_WinPosSetWindowPos: fix window drawing (Timo Kreuzer, bugs #902, #735)
  • Set default screensaver timeout to 10 minutes (Aleksey Bragin)
  • Bug fixes for NtGdiDdCreateDirectDrawObject, NtGdiDdCanCreateSurface, NtGdiDdGetScanLine and NtGdiDdWaitForVerticalBlank for various minor bugs, so that they work similar to the Windows NT4/2000/XP/2003 functions in most cases (Magnus Olsen)
  • Bug fixes for NtGdiDdCreateSurface, it can create one surface now, but it contains many bugs (Magnus Olsen)
  • Rewrite NtGdiDdBlt, it can now operate on a surface, but it might contain bugs (Magnus Olsen)
  • Revert revision 21677, this change is not needed, I confirm VMware's own graphics driver does not release the DX interface in windows XP/2003 or higher.
    I removed this, so the VMware driver gets a DX interface, this enables Windows XP graphics driver again. Unfortunately, there are no DX hardware accelerations from VMware any longer. (Magnus Olsen)
  • Remove a Windows 95/98/Me behaviour in NtGdiDdQueryDirectDrawObject, also tested under Windows 2000 to see if this behaviour really existed or not.
    puvmList and puNumHeaps should be ignored by Windows NT when they are passed down. After I fix the last part, this API is 99.9% compatible with Windows 2000 and higher. (Magnus Olsen)
  • Implement NtUserDrawCaptionTemp (Christoph von Wittich)

Control panel applets

desk.cpl

intl.cpl

  • Add working Numbers, Currency, Time, Date tabs. Fix some bugs. (Alexey Zavyalov, issue #1988).

odbccp32.cpl

sysdm.cpl

  • Make the Device Manager open both devmgmt.exe in ROS and devmgmt.msc in Windows (Ged Murphy)

timedate.cpl

Win32™ Applications

Cmd

Device Manager

  • make entry points unicode compliant and fix linkage (Ged Murphy)

Downloader

  • Slightly modified the XML file to fix grammar and spelling problems and update the FreeBASIC link to Version 0.17b (Nathan Davidson, bug #2358)

Explorer

  • check for application existance on some apps before adding them to the start menu (Ged Murphy)
  • remove old apps like winefile and add new ones like devmgmt and servman (Ged Murphy)

Fontview

HTML Help

  • wrote a basic exe to call into hhctrl.ocx (Ged Murphy)

Regedit

Service Manager

  • make entry points unicode compliant and fix linkage (Ged Murphy)

Shutdown

  • Rewrote the shutdown utility to make it work, and more compatible with the syntax of Windows' shutdown utility (Frode Lillerud, bug #2379)
  • Added localization support and a version resource to the Shutdown utility (Colin Finck)

Tracert

  • partially rewrote tracert to make it more modular (Ged Murphy)

Userinit

  • Load system metrics, fonts and colors from registry (Timo Kreuzer)

Winhelp

Win32™ Libraries

ADVAPI32

  • Export LsaEnumerateTrustedDomains to get dameware loading (Ged Murphy)
  • Ensure SetLastError is called when EnumServicesStatusEx is returning required buffer sizes (Ged Murphy)

CLUSAPI

COMCAT

COMCTL32

  • Fix setting focus in Property sheet (Timo Kreuzer)
  • Remove a call to TREEVIEW_Update() which causes an infinite loop on ReactOS (Aleksey Bragin)

CRYPTNET

DDRAW

  • SetCooperativeLevel
    • Implemented: Adapt Wine's implementation to ReactOS DDraw and fix a crash, so SetCooperativeLevel passes one test. Many more tests need to be done, I also took DDRAWI_DIRECTDRAW_LCL->dwObsolete1 as device windows. Memory leaks might exist (Magnus Olsen)
    • Implemented: Rewrite SetCooperativeLevel, it starts working similar to Windows' DDraw. (Magnus Olsen)
    • Bug Fix: Fixing right behaviour for SetCooperativeLevel with normal flag set in window mode. Fixing gpl.dwflag being set right. (Magnus Olsen)
  • CreateSurface
    • Implemented: Start reimplementing CreateSurface and start implementing Main_DirectDraw_CreateSurface. We now need to finish internal_CreateSurface and CopyDDSurfDescToDDSurfDesc2 (Magnus Olsen)
    • Implemented: Finish Main_DirectDraw_CreateSurface4 and Main_DirectDraw_CreateSurface (Magnus Olsen)
    • Bug Fix: CreateSurface can only create one surface at the moment (Magnus Olsen)
    • Warning: Crashes can occur if wrong parameters are sent to CreateSurface as no error checks are done (Magnus Olsen)
    • Warning: CreateSurface is still under heavy development (Magnus Olsen)
  • GetFourCCCodes
    • Bug Fix: Make GetFourCCCodes thread-safe (Magnus Olsen)
    • Bug Fix: Fix a memory crash bug in GetFourCCCodes (Magnus Olsen)
  • GetAvailableVidMem
    • Renamed Main_DirectDraw_GetAvailableVidMem to Main_DirectDraw_GetAvailableVidMem4 (Magnus Olsen)
    • Implemented: GetAvailableVidMem for DirectDraw2 and DirectDraw3 (Magnus Olsen)
    • Bug Fix: GetAvailableVidMem4, works completely similar now to MS version of this API (Magnus Olsen)
  • GetDeviceIdentifier
    • Implemented: GetDeviceIdentifier (Magnus Olsen)
    • Implemented: GetDeviceIdentifier7 (Magnus Olsen)
    • Warning: Currently there is no check if the driver is signed or unsigned by MS WHQL (Magnus Olsen)
  • Compact
    • Implemented: Main_DirectDraw_Compact with the same behaviour as MS DirectDraw_Compact.
      According to MSDN, it is unimplemented and always returns DD_OK, but in fact it can return DDERR_NOEXCLUSIVEMODE in some cases. (Magnus Olsen)
  • GetMonitorFrequency
  • DirectDraw_QueryInterface
    • Found out a bit more how DirectDraw_QueryInterface works and commented the new investigations (Magnus Olsen)
    • Added the new table to QueryInterface, it is partly supported now, the new IIDs are IID_IDirectDraw4, IID_IDirectDraw2 and IID_IDirectDraw. (Magnus Olsen)
    • Fixed a couple of bugs in Main_DirectDraw_QueryInterface (Magnus Olsen)
    • Forgot using AddRef in DirectDraw_QueryInterface, fixes some bugs (Magnus Olsen)
    • Simplified Main_DirectDraw_QueryInterface code (Magnus Olsen)
  • startup.c
    • This file contains the startup code for DirectX/ReactX HAL and HEL layer
      • Bug Fix: The linking interface was used, when we did not require a linking interface and the other way round. (Magnus Olsen)
      • Bug Fix: Cleaned up the linking interface code, so it gets simplier (like reusing the same DX handler and other stuff) (Magnus Olsen)
      • Bug Fix: Maarten Bosma noticed that I did take the wrong structure at the allocation, I also commented up the code a bit. Fixed by (Magnus Olsen)
      • Bug Fix: Added a hack, so we only create one DirectDraw interface (Magnus Olsen)
      • Bug Fix: Wrong size of memory was allocated in startup.c (Magnus Olsen)
      • Bug Fix: Fixed some bugs in startup.c, check for DDHALINFO_GETDRIVERINFOSET before using DdGetDriverInfo (Magnus Olsen)
      • Bug Fix: Fixed some bugs in startup.c, add a FIXME for fixing CreateSurfaceEx, GetDriverState and DestroyDDLocal callbacks for HAL.(Magnus Olsen)
      • Bug Fix: Fixed smaller bugs in startup.c, it does not set a window handler or use the window handler's hdc, it creates an own hdc (Magnus Olsen)
      • Bug Fix: Reactivate linking, create a link when you require a new DirectDraw interface from an old one. This way we do not create a new lcl pointer, but use the current one we got (Magnus Olsen)
      • Bug Fix: Rewrite a little part of Create_DirectDraw and add a "reenable" option. (Magnus Olsen)
  • Miscellaneous stuff
    • Bug Fix: CreateDirectDraw did crash (Magnus Olsen)
    • Bug Fix: Added SEH around many DDraw functions, this prevents some crashes (Magnus Olsen)
    • Bug Fix: Changed HeapAlloc to malloc and some weird problems are gone (Magnus Olsen)
    • Bug Fix: Smaller bugs in the cleanup code, so it frees memory we allocated (Magnus Olsen)
    • Bug Fix: When malloc fails, gcc generated code will crash. This fix will prevent DDraw Alloc crash. (Magnus Olsen)
    • Bug Fix: Cleaned up debug messages (Magnus Olsen)
    • Bug Fix: Cleaned up Create_DirectDraw, thanks to Thomas Weidenmueller for some debugging help (Magnus Olsen)
    • Bug Fix: If we have two or more DirectDraw objects, we always choose the latest hDD not the object's own hDD
      Use This->lpLcl->lpGbl->hDD = This->lpLcl->hDD; to set the object's own hDD before calling any dxhal API (Magnus Olsen)
    • Commented which API are under development and hard tested. Marked which ones have been completed and act like the ones from MS DDraw. (Magnus Olsen)
    • Made ddraw.dll a little more msvs frendly (Magnus Olsen)
    • Added table lockups for DirectDraw 1-6, but they are not yet completed (Magnus Olsen)
    • Do not cause a crash in DD->DdLock, some how DD->DdLock and DD->DdUnLock do not work as they should (Magnus Olsen)
    • Fixed many weird bugs and cleaned up debug messages we do not need any longer (Magnus Olsen)
    • Fixed DirectDrawCreate, this function works now (Magnus Olsen)
    • Fixed some compiler warnings for DDraw (Magnus Olsen)
    • Do not typecast DirectDraw COM to LPDDRAWI_DIRECTDRAW_INT, use LPDDRAWI_DIRECTDRAW_INT as prototype in all DirectDraw functions. (Magnus Olsen)
  • We got BitBlt HAL working again, which means that our ddraw.dll can run the Demo applications under Windows, but not yet under ReactOS

GDI32

  • Partly implement GetFontResourceInfoW, remove GetFontResourceInfo stub (Timo Kreuzer)
  • GetObject: add missing object types, fix SetLastError usage (Timo Kreuzer)
  • add support for ETO_GLYPH_INDEX in ExtTextOut (Sebastian Gasiorek, bug #975)
  • GetNonFontObject: fix SetLastError usage (Timo Kreuzer)
  • Bugfix for DdQueryDirectDrawObject, it did not fill in some information (Magnus Olsen)
  • Bugfix for DdQueryDirectDrawObject aka gdientry2, it did not clear some values, wrong behaviours as well (Magnus Olsen)
  • Bugfix for DdCreateSurface, it can now create one surface. The code is tested under Windows, in my syscall demo for win32k. We do not support the creation of more than one surface at the moment. Multi surface creation will be added later (Magnus Olsen)

HHCTRL.OCX

  • added dll from Wine, small changes to get it building on ROS (Ged Murphy)

KBDFR

  • Partially rewrote french keyboard layout (kbdfr.dll) in order to have correct accents display (currently broken due of a regression, bug #2230) (Pierre Schweitzer, bug #1919)

KBDPL1

KERNEL32

SYSSETUP

  • Don't create the GetFirefox shortcut anymore as GetFirefox has been removed (Colin Finck)
  • Fix some calls to CreateShortcut which was preventing some apps from appearing in the start menu (Ged Murphy)
  • Added checks for admin password during 2nd stage setup (Pierre Schweitzer, bug #2247)
  • 2nd stage setup is now in the closest local language to keyboard layout (Sylvain Petreolle, Pierre Schweitzer)

USER32

  • Implement support for SPI_SETNONCLIENTMETRICS, SPI_GET/SETMINIMIZEDMETRICS in SystemParametersInfoA (Timo Kreuzer, bug #1668)
  • Add undocumented behavior of LoadStringW: return pointer to string if buffer size == 0 (Timo Kreuzer)
  • Don't remove keyboard focus from any other window than the one that was disabled (Timo Kreuzer)
  • EnumChildWindows: call EnumWindows if hWndParent == NULL, else process children (Timo Kreuzer)
  • CreateIconFromResource: pass LR_DEFAULTSIZE|LR_SHARED flags to CreateIconFromResourceEx (Timo Kreuzer)

VERSION

WLDAP32

WTSAPI32

SETUP

  • Fix a question about formatting appearing 2 times (Colin Finck, issue #1964).

Template:Changelog