From ReactOS Wiki
Jump to: navigation, search

This is the changelog for ReactOS™ version 0.3.3 (released 12 September, 2007), 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).


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 to MS DXSDK 2004 December (Magnus Olsen)
  • Various compilation fixes for MSVC for different modules (Magnus Olsen)
  • Adapted strtoul to strtoull and add the missing error code (Pierre Schweitzer, bug #2314)
  • Lots of cleanup for cross-compilation (Hervé Poussineau)
  • Add a variable to change the name of the ReactOS directory on bootcd (Hervé Poussineau)
  • Add a "typedefs64.h" header file, when we need 32-bit types on 64-bit x86-64 hosts (Colin Finck)
  • Compilation fixes for FreeBSD and probably other Unix derivates (Colin Finck)
  • Compilation fixes on 64-bit hosts using the "typedefs64.h" header, in particular for Cabman, Mkhive, Wmc and Wrc (Colin Finck)
  • Compilation fixes for Mac OS X hosts (Alex Ionescu, Colin Finck)


  • 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 explorer-new, intl-new, mmc, charmap, console, msgina, serialui, win32csr and Matrix Screensaver and fixed many others (Daniel Reimer)
  • Commited Translations from Bugzilla (#2349, #2350, #2351, #2352, #2353, #2355, 2442, 2462, 2467, 2478) (Daniel Reimer) thx to (Mario Kacmar), (Smiley), (Marcelo Zamperetti), (Pierre Schweitzer), (Carlo Bramini) and (Giannis Adamopoulos)
  • 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)
  • Added/updated Italian translations of Cmd, Downloader, Syssetup (Paolo Devoti, bug #1983, #2027, #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, #2462, #2604)
  • Improved translations support for Calc, Solitaire, Syssetup (Pierre Schweitzer, bugs #2054, #2247, #2275, #2400)
  • Added/updated Ukrainian translations for Cacls, Comdlg32, Console, Charmap, Devmgr, Downloader, Explorer, Explorer-new, Fontview, Imagesoft, Magnify, Matrix, Mmc, Msconfig, Powercfg.cpl, Regedit, Serialui, Solitaire, Shutdown, Syssetup, Taskmgr, Timedate.cpl, Userenv, Win32csr (Artem Reznikov, bugs #2411, #2477, #2524)
  • Added/updated Slovak translations for Calc, Charmap, Devmgr, Explorer, Explorer-new, Matrix, Mmc, Netid, Notepad, Shutdown, Taskmgr, User32, WineMine, Winhelp (Mario Kacmar, bugs #2405, #2395, #2434, #2435, #2465, #2472, #2543, #2551, #2552)
  • Added/updated Polish translations for base applications that were present in 0.3.1, Setup subsystem, Cmd, some system utilities like format, Control Panel Applets, Win32 dll's (Polish translation team: Artek Wisniewski, Olaf Siejka, Lech Groblewicz, Konrad Chmielecki, bugs #2181, #2194, #2433, #2438)
  • New and updated Czech translations for Desk.cpl, Explorer, Intl.cpl, Syssetup and Timedate.cpl (Kamil Hornicek, bug #1958)
  • Added Greek translations for Cacls, Clb, Devmgmt, Intl.cpl, "reactos.exe" (Setup tool under Windows), Regedit, Solitaire, Syssetup, Taskmgr (Apostolos Alexiadis, bugs #1908, #2459, #2464)
  • Updated Italian translation for Imagesoft (Carlo Bramini, bug #2227)
  • Added Norwegian translation for Newdev (Frode Lillerud, bug #2474)
  • Added Lithuanian translations for Expand, Format, Regsvr32, Rundll32, Userinit and Winlogon (Vytis Girdzijauskas, bug #2461)
  • Updated Norwegian translation for Explorer (Lars Martin Hambro, bug #1741)
  • Fix the German Run dialog in Explorer and Shell32 (Colin Finck)
  • Brazilian Portuguese translations for Devmgr and Regedit (Marcelo Zamperetti, bugs #2439, #2440)
  • Fix some interface issues in the Msconfig translations (Colin Finck, Nathan Davidson, bug #2343)
  • Added/updated Bulgarian translations for Charmap, Desk.cpl, Explorer, Msconfig, Newdev, Ntvdm, "reactos.exe" (Setup tool under Windows), Shell32, Sndvol32, Solitaire, WineMine, WordPad (Станев, bug #2412)

Build Tools


  • Fixes for using cabman under 64-bit systems (Colin Finck, bug #2236)


  • Set a valid (but unknown) last write time to registry keys, instead of a random one (Hervé Poussineau)
  • Use memcmp instead of wcsncmp for comparing a wide-string. Fixes unbootable Live-CDs created by Unix hosts (Colin Finck)


  • 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)
  • Fix a crash in msvc backend when some enviroments vars are NULL (Christoph von Wittich)
  • Process .idl files before source files (Hervé Poussineau)
  • Metadata enhancement for rbuild and version report (Marc Piulachs, bug #2547)


Kernel and Executive(NTOSKRNL)

  • HUGE placeholder for changes made by Alex Ionescu
  • "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, Gé van Geldorp, bug #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).
  • Fix a call to readcr3 in KeFlushCurrentTb() (Christoph von Wittich).
  • Fix a call to ExGetPreviousMode() in CmpCreateHandle (Christoph von Wittich).
  • Implement SystemUnloadGdiDriverInformation (Saveliy Tretiakov)
  • Bugfix in KiUserExceptionDispatcher described by Myria in bug #2279 (Magnus Olsen)
  • Rewrite Plug-and-Play root bus enumerator (Hervé Poussineau)
  • Remove IopCreateDriverObject, which was buggy and duplicating IoCreateDriver functionality (Hervé Poussineau)
  • Add support for GUID_DEVICE_SYS_BUTTON interface (Hervé Poussineau)
  • ReactOS now supports ACLs... (fix SeAccessCheck to sometimes deny access) (Hervé Poussineau)
  • Fix usage of KdComPortInUse (Hervé Poussineau)
  • Send IRP_MN_FILTER_RESOURCE_REQUIREMENTS to devices before IRP_MN_START_DEVICE (Hervé Poussineau)

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

Audio Stack


  • 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)
  • Add a first network adapter at index 0000, as real ones start at index 0001 (Hervé Poussineau, bug #2034)


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

Storage Stack


  • Check if the same Monitor ID (= 10 bytes from the EDID, which can be used to uniquely identify a monitor) appears two times and stop the child enumeration in this case. (Colin Finck, bug #2239)

NT System Library (NTDLL)

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



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


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

  • New clipboard implementation by Pablo Borobia (merged to trunk by Saveliy Tretiakov)
  • Make ntuser locks use eresource instead of mutex. Fix corresponding FIXME in class.c (Saveliy Tretiakov)
  • Add multiple keyboard layout support. Implemented NtUserLoadKeyboardLayoutEx, NtUserActivateKeyboardLayout, NtUserGetKeyboardLayoutList, NtUserGetKeyboardLayoutName. (Saveliy Tretiakov)
  • Send WM_INPUTLANGCHANGE to thread's focus windows when keyboard layout is changed. (Saveliy Tretiakov)
  • NtUserLoadKeyboardLayoutEx: Support KLF_REORDER and KLF_ACTIVATE. (Saveliy Tretiakov)
  • NtUserActivateKeyboardLayout: Support HKL_NEXT, HKL_PREV, KLF_REORDER. (Saveliy Tretiakov)
  • Add KLF_SHIFTLOCK and KLF_RESET (Saveliy Tretiakov)
  • Implement EngUnloadImage() (Saveliy Tretiakov)
  • Implement NtUserUnloadKeyboardLayout() (Saveliy Tretiakov)
  • 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)
  • Handle DIB_PAL_COLORS in NtGdiStretchDIBits (Christoph von Wittich)
  • Add SEH to fix the crash in win32k after user-mode callback (Dmitry Gorbachev, bug #2212)
  • Add almost all SPI messages that can be sent to win32k. Some are stubs and will not work yet, but win32k will accept them (Yaroslav Ponomarenko)
  • Partly support swapping the mouse buttons with SPI (Yaroslav Ponomarenko)
  • Implement pointers MouseSpeed, CursorAccelerationInfo.FirstThreshold, CursorAccelerationInfo.SecondThreshold, CursorAccelerationInfo.Acceleration, MouseHoverTime, MouseHoverWidth, MouseHoverHeight for SPI_SETMOUSEHOVERTIME, SPI_SETMOUSEHOVERWIDTH, SPI_SETMOUSEHOVERHEIGHT, SPI_SETMOUSE, SPI_SETMOUSESPEED. (Yaroslav Ponomarenko)
  • Rewrite NtUserScrollDC, fixing a scrolling bug and optimizing for speed (bug #2237) (Timo Kreuzer)
  • Fix gdi object reuse counter storage (Timo Kreuzer)
  • Several compatibility changes for win32k syscall api (Timo Kreuzer)
  • NtGdiGetRandomRgn: small compatibility fixes (Timo Kreuzer)
  • NtGdiGetSetBitmapBits: add SEH protection (Timo Kreuzer)
  • Simplify VIS_ComputeVisibleRegion (Timo Kreuzer)


Control panel applets


  • redesigned to look more like the XP version (Ged Murphy)
  • Add a screensaver preview on the dialog (Ged Murphy)
  • Implement saving of screensaver settings (Ged Murphy)
  • fix preview and config buttons (Ged Murphy)
  • Implement appearance page (Timo Kreuzer, bug #1732)


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



  • Send a LBN_SELCHANGE notification after selecting the first network component entry, so the description text gets updated. (Gregor Brunmar, bug #2577)
  • Show whether the IP address was assigned by DHCP or manually configured. (Frode Lillerud, bug #2570)



  • Make the Device Manager open both devmgmt.exe in ROS and devmgmt.msc in Windows (Ged Murphy)
  • Bugfix: The first part of the Processor Name String was not null-terminated, so the wrapping could have been wrong or it could have contained rubbish (Colin Finck)
  • Bugfix: The license text will now be correctly unselected, when you click on the "License" button (Colin Finck)
  • Removed some non-displayable characters from the license text file, which were displayed as blocks in the edit box (Colin Finck)


Win32™ Applications


  • Fix a memory leak (Timo Kreuzer)
  • Fixed a bug in mkdir command (Hervé Poussineau, Pierre Schweitzer, bug #2216)
  • Added the missing "help <command>" functionality (Pierre Schweitzer, bug #2406)
  • Bugfix: The fix does a WriteFile per line insted of one per char. (Paolo Devoti, bug #2015)
  • Removed variables formerly in use to handle pagination. Pagination belongs to ConOutPrintfPaging. Removed already commented out code of old pagination (Paolo Devoti, bug #2016)
  • Fix the Cmd build, when compilation units are turned off (Colin Finck)
  • Various fixes (Carlo Bramini, bug #2232)

Device Manager

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


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




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

Logon Screensaver


Matrix Screensaver


Service Manager

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


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


  • Remove the superfluos main() procedure as we already have a WinMain() procedure, this fixes the icon bug (Colin Finck)

Starfield Screensaver


  • Make text in German resources show completely (Timo Kreuzer)


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


  • Load system metrics, fonts and colors from registry (Timo Kreuzer)
  • Expand environment variables in the szWallpaper variable (Marc Piulachs, bug #2536)



Win32™ Libraries


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


  • Add 8 new Backgrounds to cards.dll. thx to Mario Kacmar and resize the wrong sized ones. (Daniel Reimer)
  • Add the one from Bug 2535 (thx to Rhy Thornton) and replace the ugly Bird in Background 9. Right now only a resized one, but it still looks nice. (Daniel Reimer)
  • Freecard is now a monochrome Bitmap. This results in a Semi Transparent Card (= Dark Green) instead of a grey square. Try in XP Solitaire. Looks way better and its the way MS does it too. (Daniel Reimer)
  • Decrease cards.dll size by 700 kB by cuttung down all files to 8-Bit Colors. (Daniel Reimer)




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



  • 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


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


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


  • Partially rewrote french keyboard layout (kbdfr.dll) in order to have correct accents display (Pierre Schweitzer, bug #1919)






  • Support SetupDiSetClassInstallParams(DIF_ADDPROPERTYPAGE_ADVANCED) (Hervé Poussineau)


  • 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)
  • 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)
  • Fixed harcoded string (Pierre Schweitzer, bug #2247)
  • Show the correct title for the last page of 2nd stage setup (Cameron Gutman, bug #2206)
  • Remove the unneeded IDS_CMT_IBROWSER and IDS_CMT_WINEFILE strings (Apostolos Alexiadis)
  • Create a System Tools Start Menu group and add the Character Map shortcut to it (Dmitry Chapyshev)


  • 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)
  • Bugfix: Make TrackMouseEvent thread-safe, so Toolbar works (Yaroslav Ponomarenko)




Changelogs / Versions
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