Difference between revisions of "ChangeLog-0.3.5"

From ReactOS Wiki
Jump to: navigation, search
(GDI32)
(Kernel-mode subsystem server (Win32K))
Line 345: Line 345:
 
* Call ExDeleteResourceLite() before freeing an ERESOURCE, otherwise it will remain in the system resource list. ([[Samuel Serapion]])
 
* Call ExDeleteResourceLite() before freeing an ERESOURCE, otherwise it will remain in the system resource list. ([[Samuel Serapion]])
 
* Check if the menu object has really been found to avoid memory corruptions ([[Johannes Anderwald]])
 
* Check if the menu object has really been found to avoid memory corruptions ([[Johannes Anderwald]])
 +
* Implemented : DxEngLockHdev, DxEngUnlockHdev  Thanks jimtabor for the help with these two. ([[Magnus Olsen]])
  
 
== Services ==
 
== Services ==

Revision as of 21:35, 18 May 2008

This is a work in progress!!!

Please consider the following when adding a change:

  • Write a REAL NAME of the person, no E-Mail addresses, no IRC nicks, etc. This is an official paper!
  • Reference bug numbers at the end of the change, in braces, like (your name, bug #2373)
  • Preserve an alphabetical order for applications and libraries :-)


This is the changelog for ReactOS™ version 0.3.5 (released *classified*), 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.4 (released 22 January, 2008).

General

Generic 0.3.5 Changes

Translations

  • Begin German translation of Kernel32 errorcodes (Timo Kreuzer)
  • Update German translation of Kernel32 errorcodes (Michael Fritscher)
  • Convert some Usetup translations to OEM charset, so that they're displayed correctly (Colin Finck)
  • Greek translation Update for Cmd, Format, Fdebug, Input.cpl, Joy.cpl, Sysdm.cpl (Apostolos Alexiadis, bugs #3152, #3161)
  • Added/updated Italian translation for Magnify, Mstsc (Carlo Bramini, bugs #3098, #3210, #3245)
  • Added/updated Italian translations for Appwiz-new.cpl, Desk.cpl, Downloader, Input.cpl, Joy.cpl, Main.cpl, Mmsys.cpl, Shell32, Shellext, Syssetup, User32, Usetup, Vgafontedit, Winhelp (Paolo Devoti, bugs #3005, #3051, #3883, #3105, #3119, #3136, #3231)
  • Added/updated Ukrainian translations for Appwiz-new.cpl, Cmd, Desk.cpl, Devmgr, Downloader, Mmsys.cpl, Reactos (Setup tool under Windows), RosBE Config, Shell32, Usetup, Vgafontedit (Artem Reznikov, bugs #3020, #3038, #3039, #3044, #3049, #3070, #3089, #3106)
  • Added/updated Bulgarian translations for Access.cpl, Appwiz-new.cpl, Control, Desk.cpl, Downloader, Fontview, Format, Imagesoft, Kbswitch, Magnify, Mazescr, Mmsys.cpl, Mstsc, Ncpa.cpl, Netid, , calc, kbswitch, Notepad, Rasapi, Serialui, Shdocvw, Shell32, Sol, Syssetup, Usetup, Vgafontedit, Vmwinst, WineMine, Winhelp, Write, Xcopy (Станев, bugs #3041, #3042, #3092, #3093, #3173, #3174, #3192, #3204)
  • Added/updated Slovak translations for Appwiz.cpl, Butterflies, Desk.cpl, Downloader, Explorer, Fdebug, Input.cpl, Joy.cpl, Mazescr, Mmsys.cpl, Msgina, Mstsc, Ncpa.cpl, Netid, Newdev, Ntvdm, Packmgr, Powercfg.cpl, Reactos (Setup tool under Windows), Roscalc, Setupapi, Shdocvw, Shell32, Sysdm.cpl, Syssetup, , magnify, access, intl, mmsys, kbswitch, Usetup, Winhelp, Winlogon, Write, Usetup (Mário Kačmár, bugs #2988, #2992, #2993, #3021, #3033, #3053, #3110, #3198, #3215)
  • Added/updated Polish translations for Appwiz-new.cpl, Blankscr, Butterflies, Cylfrac, Desk.cpl, Downloader, Dxdiag, Fontview, Imagesoft, Input.cpl, Magnify, Matrix, Mazescr, Mmsys.cpl, Packmgr, Roscalc, Shellext, Starfield, Systeminfo, Usetup, Vgafontedit, Write (Olaf Siejka, bugs #3014, #3037, #3043, #3047, #3066, #3088)
  • Added/updated Spanish translations for Circles, Desk.cpl, Devmgr, Downloader, Dxdiag, Input.cpl, Intl.cpl, Main.cpl, Modemui, More, Mstsc, Newdev, Notepad, Regedit, Shell32, Shellext, Sysdm.cpl, Syssetup, Taskmgr, Timedate.cpl, Usetup, Vgafontedit, Vmwinst, Winhelp, Wordpad (Javier Remacha, bugs #2984, #2986, #2994, #3142, #3172, #3184, #3196, #3229)
  • Added/updated Lithuanian translations for Control, Downloader, Mmc, Mstsc, Usetup, Winhelp (Vytis Girdžijauskas, bugs #2991, #3188)
  • Added/updated Czech translations for Cacls, Charmap, Expand, Find, Format, Hdwwiz, Kbswitch, Logoff, More, Notepad, Regsvr32, Rundll32, Solitaire, Userinit, Usetup (Radek Liška, bugs #3078, #3090, #3113, #3175, #3194)
  • Updated German translations for Csrss, Ntvdm (Andreas Dieringer)
  • Added/updated German translations for Appwiz-new.cpl, Desk.cpl, Input.cpl, Mmsys.cpl (Daniel Reimer)
  • Added/updated Korean translations (Seungju Kim, bugs #3144, #3145, #3149, #3151, #3153, #3154, #3155, #3156, #3157, #3165, #3180, #3182)
  • Added/updated French translations for Kbswitch, Desk.cpl, Dxdiag, Main.cpl, Mmsys.cpl, Regedit, Shell32, Syssetup, Vgafontedit, Usetup (Pierre Schweitzer)
  • Added all missing Strings in Usetup for translation, added the English Strings to all USETUP resources and activated them. This makes translating easier. (Daniel Reimer)
  • Resort Rosapps, Setupapi and User32 RC Files. Now all Resource files except the ones synched with Wine are sorted the same way. (Daniel Reimer)
  • Remove all Manifests. They will be autogenerated in the future. This is one step to MSVC Support, too. (Daniel Reimer)
  • Checked for the right Font for Asian Languages and set a unified Font size for them. (Daniel Reimer)
  • Massive Changes in almost all RC Files. Now all non Wine Synched RC Files use these rules:
 1. Use a DIALOGEX template instead of a DIALOG template.
 2. Set the DS_SHELLFONT flag in your dialog styles.
 3. Set the dialog font to "MS Shell Dlg".
 4. Remove DS_FIXEDSYS
 5. Remove DS_SETFONT
 6. Remove DS_3DLOOK
 -> Windows 2000+ Look

Build Tools

CabMan

  • Add an -M option to specify, which compression codec shall be used (either "raw" or "mszip") (Colin Finck)
  • Enable the RAW codec in the SelectCodec() function (Colin Finck)
  • Fix parsing the -L and -P parameters, when there's no whitespace between the parameter and the value (Colin Finck)
  • Remove the version number as it was never updated (Colin Finck)
  • Fix setting the file attributes when extracting files (Colin Finck)
  • Add support for multiple search criterias, which are actually checked.
    This makes it possible to pass parameters like "*.rbuild *.txt" to the cabman command line for adding, displaying and extracting files in a cabinet. (Colin Finck)
  • Overhaul CreateSimpleCabinet, make it able to add multiple files to the cabinet using the new search criteria functions. (Colin Finck)
  • Fix setting the file offsets.
    This fixes the extraction of any file, which is not the first file in the cabinet. (Colin Finck)
  • Fix the extraction of files with more than 32 characters in the file name (Colin Finck)

RBuild

  • Pass the correct path to _strip_gcc_deffile (Johannes Anderwald)
  • Automatically create directories for converted def files (Johannes Anderwald)
  • Fix auto-def file generation (Johannes Anderwald)
  • If BASEDIR env var is set to point to your WDK installation, make msvcX will take it into account, and add additional include directories for WDK headers and libraries for all kernelmode modules (Aleksey Bragin)
  • Only add a command for deleting a proxy makefile, when one was really generated.
    This should fix some "Error 1 (ignored)" warnings (Colin Finck)
  • Change default intermediate directory to obj directory (Hervé Poussineau)
  • Add Rule class, for easier extending to new file types. Use it to simplify mingw backend, and fix lots of depencies issues. (Hervé Poussineau)
  • Fix memory leaks (Samuel Serapión)
  • Add basic support for targeting ARM in RBUILD (ReactOS Portable Systems Group)
  • Add the correct Visual Studio version to the .sln file header, so that the Visual Studio Version Selector does not get confused. (Robin Geuze)

Core

Bootloader (FreeLoader)

  • Develop and switch to the new, a lot more advanced memory manager, which is compatible both with ReactOS and NT-style boot types. Added: memory types for each allocation request, ability to alloc and free memory from the heap, ability to use 1 megabyte of low memory too (which was just wasted previously), removed: a bunch of hacky stuff. (Aleksey Bragin)
  • Added a real heap manager (based on bget) into the memory manager, and switched all small memory allocations inside FreeLdr to this heap manager.(Aleksey Bragin)
  • New way of storing hardware configuration tree (compatible).(Aleksey Bragin)
  • Developed an NT kernel boot support module (codename "winldr") and integrated it into FreeLdr.(Aleksey Bragin)
  • Allow runtime enabling of caching support in FreeLdr's filesystem layer.(Aleksey Bragin)
  • Change in FreeLdr's build process: Build FreeLdr the same way other modules are built, by using gcc -Wl. This allows us to get rid of the /math directory and use -lgcc instead. - Get rid of -ffreestanding, -fno-builtin and -O2. The former are not needed anymore since we're properly building a "freestanding" image anyway, just like the kernel. The latter is removed since optimization flags come from the project settings. Update code to fix warnings caused since we've removed -ffreestanding. GCC now warns about printf, sprintf and other C calls (including a change from %wZ to %S in winldr.c's sprintf calls). Don't use printf anymore -- rename freeldr's implementation to TuiPrintf. Just like in the kernel, you can't use printf in freeldr (since it's not running in a standard/full CRT environment). 124kb saved!(Aleksey Bragin)
  • The bootloader must zero user shared data page before passing control to the kernel. This fixes the "invalid timer state", "assert(SharedUserData->NumberOfPages == 0" family of bugs after warm reboot. (Aleksey Bragin, bug #3085).
  • Make identifiers in configuration trees ASCII-strings, as they are in real NT.(Aleksey Bragin)
  • Map APIC pages, if they are present. Set the size of the memory new MM uses to 24Mb. Set heap size to 4Mb.(Aleksey Bragin)
  • Allocate memory for groups list dynamically, and make it enough (4096 bytes) for a really long list of groups. This makes Windows 2003 booting up to explorer without crashing.(Aleksey Bragin)
  • Heavily bugfix MmInitializeMemoryManager in freeldr, add slightly better bios memory map projection to the loader memory types, but this is still being investigated.(Aleksey Bragin)
  • Mark APIC's memory as WriteThrough / CacheDisabled.(Aleksey Bragin)
  • Fix a bug in MmAllocateMemoryWithType, where result of MmFindAvailablePages was checked against -1 in error case, when in reality it's 0 (spotted by Alex).(Aleksey Bragin)
  • WINLDR: Load drivers database (AppPatch/drvmain.sdb), so Windows could use it if needed.(Aleksey Bragin)
  • WINLDR: Don't store memory allocation descriptors inside the bootloader, since this memory is unmapped in kernelmode. Fixes a pagefault after switching to paged mode. Store the configuration data in the LPB.(Aleksey Bragin)
  • WINLDR: Different behavior for NT4 or NT5+ boot: NT4 requires text mode to be set up, and further version of Windows OS require a different preparation.(Aleksey Bragin)
  • WINLDR: Properly fill ACPI BIOS configuration entry (a couple of ACPI specification structures were added). This makes Windows 2003 initialize HAL (ACPI version) properly and be able to connect to the debugger.(Aleksey Bragin)
  • WINLDR: Fix an incorrect type of memory behind PDE, HAL mapping and kernel segment pagetables. They should be MemoryData (and change allocation algorithm slightly). With this change Windows 2003 boots up to the BSOD showing ACPI_BIOS_ERROR.(Aleksey Bragin)
  • WINLDR: Fix a typo in the if branch, which resulted in marking almost all memory above the bootloader as "FirmwareTemporary", even reserved ACPI pages. This should fix the ACPI BSOD Windows 2003 and XP show up. If a memory is marked as "free", leave it so, without transferring to FirmwareTemporary.(Aleksey Bragin)
  • Implement ramdisk support for FreeLoader (ReactOS Portable Systems Group)
  • Move architecture independent code out of arch/ folder (ReactOS Portable Systems Group)
  • Remove AcpiPresent flag from non-x86 builds, as it is x86 specific. Have ACPI detection set the appropriate flag for each architecture if detected (ReactOS Portable Systems Group)
  • Implement MachPrepareForReactOS as a generic pre-boot preparation routine, replacing the architecture specific functions (ReactOS Portable Systems Group)
  • Implement a proper ARM startup routine (ReactOS Portable Systems Group)
  • Fix bug in RamDiskInit that allowed reading from null pointers (ReactOS Portable Systems Group)
  • Build Freeloader with a static libgcc (ReactOS Portable Systems Group)
  • Implement returning a memory map on ARM (ReactOS Portable Systems Group)
  • Ramdisk support in ArmDiskGetBootVolume, with fixes for hex parameters and proper return values (ReactOS Portable Systems Group)
  • Fix command line parsing in Freeloader (ReactOS Portable Systems Group)
  • Enable ramdisk support so disk read/writes are handled by ramdisk routines (ReactOS Portable Systems Group)
  • Fix ramdisk start sector reporting (ReactOS Portable Systems Group)
  • Arm routines now use various i386 disk routines that were highly generic and work across platforms (ReactOS Portable Systems Group)
  • Remove redundant code for reading and writing to various ports and registers, making use of intrinsics instead (ReactOS Portable Systems Group)
  • Implement basic console support through the serial port, providing output when FreeLoader initializes (ReactOS Portable Systems Group)
  • Add support for ARM Versatile/PB platform, allowing qemu to emulate the ARM build of ReactOS (ReactOS Portable Systems Group)
  • Add support for PL011 UART, allowing for console output on the Versatile platform (ReactOS Portable Systems Group)
  • Define ARM_LOADER_BLOCK for use when FreeLoader passes control to the kernel (ReactOS Portable Systems Group)
  • Define region for storing TTB, aligned to 16KB (ReactOS Portable Systems Group)
  • Allocate the kernel, interrupt and abort stacks, idle thread and process, boot PRCB, ad PCR and PDR pages (ReactOS Portable Systems Group)
  • Map Versatile serial port into virtual memory (ReactOS Portable Systems Group)
  • Remove 1MB page hacks (ReactOS Portable Systems Group)

Kernel and Executive (NTOSKRNL)

Cache

  • Switch to using the cache bitmap (the cache manager uses one large memory region within the kernel address space and allocate/deallocate space from this block over a bitmap). It makes file copying process (not only in the 1st stage) a bit more stable. Cacheseg mapping region size enlarged to 256Mb. (bug #2872, Aleksey Bragin)

CM

  • cmlib: Take into account non-fast/non-hash indices in CmPrepareHive, apply similar changes to freeldr's registry importing function (Filip Navara)
  • Fix out-of-bounds access in configuration manager, spotted by Christoph & GCC 4.3.0 (Aleksey Bragin)

Debugging

EX

  • Fix ExReleaseResourceLock(), spotted by Alex (Aleksey Bragin)
  • Use C define for the bit in the wait block flags that we set to specify waiting, instead of a hardcoded "1" (Aleksey Bragin)
  • Fix broken code when trying to find the last wait block in several parts of the pushlock code (Aleksey Bragin)
  • Fix broken algorithm in the optimization of the pushlock waiter list (Aleksey Bragin)
  • The wake event for the pushlock should be a synchronization event, not a notification event (Aleksey Bragin)
  • Fix broken algorithm during the release of a pushlock (in shared cases) (Aleksey Bragin)
  • Fix broken code during "try to wake pushlock" (Aleksey Bragin)
  • Remove DbgPrints from inlined pushlock code during contention (Aleksey Bragin)
  • All of ex-changes are made thanks to Alex for noticing these bugs and providing advice on the fixes. This fixes lots of race issues in the handle table implementation
  • Replace KfRaise/LowerIrql with Ke instead (ReactOS Portable Systems Group)
  • Support ARM in SharedUserData->ImageNumberLow/High during ExpInitializeExecutive (ReactOS Portable Systems Group)

FSRTL

  • Implemented FsRtlDissectName based on MSDN description (Aleksey Bragin, Pierre Schweitzer)
  • Update FSRTL_ADVANCED_FCB_HEADER to support newer version headers, split Reserved into two bitfields: Reserved and Version (Aleksey Bragin)
  • Implemented FsRtlNotifyChangeDirectory: it just redirects to FsRtlNotifyFullChangeDirectory (which is *NOT* implemented) (Pierre Schweitzer)

IO

KD

KE

LPC

MM

OB

  • Fix leaking an entry in some cases during ObpFreeCapturedAttributes call. For more details: http://www.reactos.org/forum/viewtopic.php?t=5311 (Aleksey Bragin)
  • Fix initialiization of the object manager lookaside lists, don't leak object locks when destroying an object type, make directory objects and symbolic links case-insensitive, Create \KernelObjects directory during startup. (Aleksey Bragin)
  • Lock only the object header for an object instead of the entire object type, for better contention. Implement exclusive/shared lock and release routines around the existing lock slots in the object type (Aleksey Bragin)
  • Rewrite the SD Cache functions to use the Windows 2003 structures (thanks to Alex for providing them) (Aleksey Bragin)
  • Use pushlocks instead of the fast mutex that was previously used (Aleksey Bragin)
  • Implement the exported Ob APIs which were added in Windows XP to access the Sd cache ObReference/DereferenceSecurityDescriptor and ObLogSecurityDescriptor). These are used by file systems (such as NPFS) on Windows XP and higher (Aleksey Bragin)
  • Thanks to Alex for reporting all the CM issues.

PNP

PS

SE

Hardware Abstraction Layer (HAL)

Run Time Library (RTL)

Kernel Mode Drivers

All filesystem drivers

  • Pass cache manager callbacks structure at every CcInitializeCacheMap() call, it's mandatory (Aleksey Bragin)
  • There is no reason for CDFS to use CcRos-specific functions, it ends up with the same CcRosInit/Uninit with the same CacheSegmentSize = PAGE_SIZE (Aleksey Bragin)
  • Remove ros-specific Cc functions usage (Aleksey Bragin)

BLUE

  • Read the VGA fonts from a "vgafonts.cab" file instead of "vgafont.bin" (ZIP format)
    This file is automatically created on every build by using the new CabMan simple cabinet functions (Colin Finck)

EXT2

FASTFAT

  • Rename vfatfs.sys to fastfat.sys for compatibility reasons (Aleksey Bragin)
  • Experimentally switch fastfat driver to non-Ros Cc functions, and thus no FSD in ReactOS are using CcRos-specific functions anymore (Aleksey Bragin)

I8042PRT

  • Don't return if no keyboard or mouse is present. Instead continue detecting the devices.
    This fixes the bug that you could not use the keyboard, when no mouse was plugged in. (Colin Finck)
  • Simplified the code for connecting the interrupts. (Colin Finck)
  • Only get the first two bytes in a loop and issue just one i8042ReadDataWait command for the last byte when resetting the mouse.
    This reduces the "blank screen time" in Usetup from 45 seconds to 3 seconds on my ECS K7S5A Pro and some other boards, when no mouse is plugged in. (Colin Finck)
  • Remove much code for the mouse initialization, which had been imported from the ancient "psaux.sys" driver.
    Don't use the "Get ID" command anymore, which is not available on all systems. This way, some more mice should be detected now. (Colin Finck)
  • First detect the mouse and then the keyboard. If we do it the other way round, some systems throw away settings like the keyboard translation, when detecting the mouse.
    This solves the popular keyboard detection bug on real hardware in 0.3.4. (Colin Finck)

KDCOM

NTFS

SERIAL

  • Always set DO_BUFFERED_IO or DO_DIRECT_IO, so that IRP_MJ_READ/IRP_MJ_WRITE work (Hervé Poussineau)
  • Fix FileStandardInformation and FilePositionInformation classes (Hervé Poussineau)

SERENUM

VIDEOPRT

  • Only increment VideoPortDeviceNumber, when IntVideoPortCreateAdapterDeviceObject and IntVideoPortFindAdapter succeeded.
    This fixes loading the CL54xx miniport driver. Anyway, its DDI driver is still a problem. (Filip Navara)

NT System Library (NTDLL)

Static Libraries

NTFSLIB

SCRNSAVE

  • Remove much Win9x-specific stuff from the library and make it more compatible to the MS version of the library. (Colin Finck)

Keyboard Layouts

  • Add the following keyboards: Albanian (AL), Russian Typewriter (RU1), US IBM Arabic 238_L layout (USA), Icelandic (IC), Canadian French Legacy (FC), Canadian Multilingual Standard (CAN), Dutch (NE), Estonian (EST), Georgian (GEO), Latvian (LV), Macedonian (MAC), Romanian (RO), Tatar (TAT), US Dvorak for left hand (USL), US Dvorak for right hand (USR), US International (USX), Serbian Cyrillic (YCC), Serbian Latin (YCL), Turkish Q (TUQ), Turkish F (TUF), Ukrainian Student (URS), Uzbek Cyrillic (UZB), Vietnamese (VNTC), Azeri Cyrillic (AZE), Azeri Latin (AZEL), Belarusian (BLR), Portuguese Brazilian ABNT2 (BR), Kazakh (KAZ) (Dmitry Chapyshev)
  • Add the following keyboards: Armenian Eastern [ARME], Armenian Western [ARMW], Arabic (101) [A1], Arabic (102) [A2], Arabic (102) AZERTY [A3] (Alexey Komarov)

USETUP

Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Implement NtGdiSelectBitmap, NtGdiSelectBrush, NtGdiSelectFont and NtGdiSelectPen based on NtGdiSelectObject and tests, move those functions to dc.c, remove NtGdiSelectObject (Timo Kreuzer)
  • Fix some bugs in NtGdiSelectBitmap (Timo Kreuzer)
  • Add GdiBCSelObj to GdiFlushUserBatch (James Tabor)
  • Fix type field calculation in GDIOBJ_CovertToStockObject (Timo Kreuzer)
  • Change gdi object deleting mechanism to a windows compatible one (Timo Kreuzer)
  • Fix a DC handle leak in UserDrawIconEx (Timo Kreuzer)
  • remove GDIOB_XxxDbg functions (Timo Kreuzer)
  • Enhance backtracing and debug output for GDI_DEBUG (Timo Kreuzer)
  • Implement GDIOBJ_ValidateHandle() (Timo Kreuzer)
  • Simplify a check in UserGetDcEx (Timo Kreuzer)
  • Fix a check in UserGetDcEx (Timo Kreuzer)
  • Remove DCX_KEEPCLIPRGN flag when creating a clip region in UserGetDcEx, fixes a region leak (Timo Kreuzer)
  • Don't abuse GDIOBJ_LockObj to validate a handle, use GDIOBJ_ValidateHandle instead (Timo Kreuzer)
  • Add some additional debug output to GDIOBJ_LockObj (Timo Kreuzer)
  • Recurse into IntGdiDeleteDC directly, instead of going back to NtGdiDeleteObjectApp and pass Force parameter on (Timo Kreuzer)
  • Don't create a background brush for a new menu, fixes a brush leak (Timo Kreuzer)
  • Use intrinsic interlocked functions for gdi object locking (Timo Kreuzer)
  • Add a function to get a full stackbacktrace (Timo Kreuzer)
  • Remove obsolete syscalls NtUserGetDesktopWindow and NtUserGetParent (Stefan Ginsberg)
  • Fix a mem leak in bitmap code (Timo Kreuzer)
  • BITMAPOBJ_CopyBitmap: release lock and delete created bitmap on failure, copy flags, fixes a memory leak (Timo Kreuzer)
  • Rename ObmXxx functions to UserXxx functions (Timo Kreuzer)
  • Remove some macros (Timo Kreuzer)
  • Move function prototypes to object.h (Timo Kreuzer)
  • Implement UserReferenceObjectByHandle creating a reference to the object, used for cursoricon stuff so far (Timo Kreuzer)
  • Rewrite object manager functions to reasonably handle references (Timo Kreuzer)
  • Dereference cursoricons correctly, so they will really get deleted, fixes a cursoricon leak (Timo Kreuzer)
  • Destroy submenus in NtUserDestroyMenu, fixes a menu leak (Timo Kreuzer)
  • Free the buffer of the menu text, fixes a mem leak (Timo Kreuzer)
  • Delete old bitmaps in NtUserSetCursorContent, fixes a bitmap leak (Timo Kreuzer)
  • Delete monitor object on failure (Timo Kreuzer)
  • Move NtGdiFlushUserBatch prototype to ntgdi.h (Timo Kreuzer)
  • Move pool tags from ntgdihdl.h to win32k/tags.h (Timo Kreuzer)
  • Move DC struct from ntgdihdl.h to win32k/dc.h (Timo Kreuzer)
  • Replace GDIEMPTYHDR with BASEOBJECT (Timo Kreuzer)
  • Use BASEOBJECT in DC and GDIDEVICE structures (Timo Kreuzer)
  • Rename some NtGdiXxx functions that don't deserve that name and remove some that were defined by a macro, but don't exist on windows (#if 0'ed atm) (Timo Kreuzer)
  • Remove RetrieveDisplayHDC() prototype, function doesn't exist (Timo Kreuzer)
  • Remove typecasts PBITMAPOBJ <-> PSURFOBJ (Timo Kreuzer)
  • Use GDIOBJ_ShareLockObj / _UnlockObjByPtr instead of Eng(Un)LockSurface as BITMAPOBJ_Un/LockObj (Timo Kreuzer)
  • Add BASEOBJECT to bitmap, brush, palette, font and region structures (Timo Kreuzer)
  • Move bad ntuser syscalls in ntuser.h to the bottom (Stefan Ginsberg)
  • Sort win32k export list alphabetically (Stefan Ginsberg)
  • Remove obsolete Win32kInitialize and NtGdiGetAspectRatioFilterEx (Stefan Ginsberg)
  • Add missing exports to win32k.def (all from xp) (Timo Kreuzer)
  • Don't free the memory for the palette entries in IntSetPalette (Timo Kreuzer, bug #3072)
  • Reference CursorIcon before deleting it (Timo Kreuzer)
  • IntGetPaintMessage: Set MessageQueue->PaintCount to 0, if no dirty Window is found. Stops spamming the debuglog (Timo Kreuzer)
  • UserGetDCEx: Check if a dce's hDC is valid, if not warn and create a new one (Timo Kreuzer)
  • Don't dump the stack backtrace twice in GDIOBJ_Xxx functions (Timo Kreuzer)
  • Replace GDIOBJHDR with BASEOBJECT structure (Timo Kreuzer)
  • Remove HandleTable parameter from GDIOBJ_Xxx functions (Timo Kreuzer)
  • Fix a wrong typecast in PALETTE_SetMapping (Timo Kreuzer)
  • Call PsGetCurrentThreadWin32Thread() and PsGetCurrentProcess() only once in IntGetWinstaObj (Timo Kreuzer)
  • Fix a leakage during DC deletion (introduced in revision 773) (Samuel Serapion)
  • Remove dereferencing a monitor object during successive attach branch in IntAttachMonitor (Aleksey Bragin)
  • Rename and add two application compatibility flags to W32THREADINFO structure (one for ancient compat flags, and one for a bit more modern flags), implement GetAppCompatFlags() and GetAppCompatFlags2() (Aleksey Bragin)
  • Unlink window when WM_CREATE message fails, fixes a crash (Johannes Anderwald)
  • Call ExDeleteResourceLite() before freeing an ERESOURCE, otherwise it will remain in the system resource list. (Samuel Serapion)
  • Check if the menu object has really been found to avoid memory corruptions (Johannes Anderwald)
  • Implemented : DxEngLockHdev, DxEngUnlockHdev Thanks jimtabor for the help with these two. (Magnus Olsen)

Services

services

tcpsvcs

  • Rewrite service to support multiple connections from multiple clients across all services (Ged Murphy)

umpnpmgr

Control panel applets

Appwiz-New

Desk

  • Rename german dialog to match Windows XP SP2+ name (Johannes Anderwald)
  • Fix compilation with MSVC (Johannes Anderwald)
  • Allow environment variables to be used in the "Wallpaper" registry value. (Vytis Girdžijauskas)
  • Do not display the file suffix after adding a wallpaper through the "Browse" dialog. (Vytis Girdžijauskas)
  • After using the "Browse" dialog, select the newly added item and scroll to the bottom to show it. (Colin Finck)
  • Add the LVS_SHOWSELALWAYS style to the ListViews, so items are also highlighted, when the ListView does not have the focus (Colin Finck)

Input

Intl

Ncpa

Sysdm

  • Replace IsUserAdmin (Wine API) with IsUserAnAdmin (Shell32 API) (Colin Finck)

Timedate

Win32™ Applications

3dtext

  • Reduce the amount of code significantly by using the scrnsave library (Colin Finck)

Autochk

  • Added the support of untfs.dll to autochk.exe (and a bit reviewed code when loading provider) (Pierre Schweitzer)

Blankscr

  • Reduce the amount of code to a minimum by using the scrnsave library (Colin Finck)

Cmd

  • Implement GrowIfNecessary_dbg() using file and line from the caller to cmd_alloc_dbg memory. (Timo Kreuzer)
  • Fix memory allocation size, respecting the terminating 0 (Timo Kreuzer, bug #2845)
  • Fix compilation with msvc8 (Johannes Anderwald)
  • Avoid buffer overflow in copy command argument handling (Johannes Anderwald, bug #3108)
  • Don't strip trailing spaces from the command line. (Colin Finck, bug #1818)

Control

  • Improve control a bit so it that can execute cpl specified on the command line (Johannes Anderwald)
  • Completely revamped "control.exe": (Colin Finck)
    • Now uses shell32 functions for loading the control panel applets, so that the mutex is used as well (see bug #781)
    • Supports all built-in command-line parameters, which are supported by the WinXP version.
      This also added support for opening shell folders.
    • Loads other possible parameters from the registry.
    • Opens the Explorer Shell Folder instead of providing a standalone Control Panel.

Downloader

Explorer

Fontview

  • Add fontview to bootcd and add ttf file association (Timo Kreuzer, bug #1411)

Magnify

  • Simplify blitting the screen bitmap and fix a graphical glitch under ROS (Carlo Bramini, bug #3241)
  • Fix the position of the mouse cursor (Carlo Bramini, bug #3245)

Msconfig

Regedt32

  • Implemented Regedt32, which just calls Regedit (Carlo Bramini, bug #3248)

Taskmgr

Vgafontedit

  • Wrote a graphical editor application for our VGA fonts (Colin Finck)

Win32™ Libraries

D3D9

  • Implemented Direct3DCreate9() (Gregor Brunmar)
  • Implemented IDirect3D methods: (Gregor Brunmar)
    • GetAdapterCount
    • GetAdapterIdentifier
    • GetAdapterModeCount
    • EnumAdapterModes
    • GetAdapterDisplayMode
    • CheckDeviceType
    • CheckDeviceFormat
    • CheckDepthStencilMatch
    • CheckDeviceFormatConversion
    • GetDeviceCaps
    • GetAdapterMonitor

GDI32

  • Add cGetTTFFromFOT stub to make gdi32 load on win xp (Timo Kreuzer)
  • Beginning of an implementation of SelectObject, using NtGdiSelectBitmap, NtGdiSelectBrush, NtGdiselectFont, NtGdiSelectPen and ExtSelectClipRgn instead of NtGdiSelectObject (Timo Kreuzer)
  • Add some usermode handling to SelectObject, currently if'ed out, as it doesn't properly work yet (James Tabor)
  • Add GDI_OBJECT_TYPE_COLORSPACE to SelectObject using SetColorSpace (James Tabor)
  • Code cleanup for DdDestroySurface (Magnus Olsen)
  • Implement D3dContextCreate (Magnus Olsen)
  • Implement DdCanCreateD3DBuffer(Magnus Olsen)
  • Implement DdDestroyD3DBuffer(Magnus Olsen)
  • Implement DdLockD3D (Magnus Olsen)
  • Implement DdUnlockD3D (Magnus Olsen)
  • BugFix DdFlip add left surface implemeted support for it (Magnus Olsen)
  • BugFix DdCreateDirectDrawObject use DeleteDC for we using the share memory for deleteDC now (Magnus Olsen)
  • Implement callback interface DvpVideoport (Magnus Olsen)
  • Implement DvpCreateVideoPort (Magnus Olsen)
  • Implement DvpDestroyVideoPort (Magnus Olsen)
  • Implement DvpFlipVideoPort (Magnus Olsen)
  • BugFix DdGetDriverInfo for the videoport callback interface set the pUserDvdPort->dwFlags correct (Magnus Olsen)
  • Implement DvpGetVideoPortBandwidth, DvpColorControl (Magnus Olsen)
  • Implement DvpGetVideoSignalStatus, DvpGetVideoPortFlipStatus (Magnus Olsen)
  • Implement DvpCanCreateVideoPort, DvpWaitForVideoPortSync (Magnus Olsen)
  • BugFix DdCreateSurface we pass down all usermode surface data to win32k. left todo is translate back all surface data. (Magnus Olsen)
  • Implement DvpUpdateVideoPort (Magnus Olsen)
  • Implement Callbacks misc, misc2, Color Control, NT callbacks (Magnus Olsen)
  • implemented DdCreateD3DBuffer callbacks and some cleanup (Magnus Olsen)
  • BugFix smaller bug in DdCreateSurface callbacks the surface handle count was setup wrong before it was pass down to win32k (Magnus Olsen)

GDIPLUS

KERNEL32

  • Implement GetConsoleAlias[A/W], AddConsoleAlias for doskey support (Johannes Anderwald)
  • Implement EnumLanguageGroupLocalesA/W, EnumUILanguagesA/W, GetUserGeoID, SetUserGeoID, SetDefaultCommConfigA/W, GetDefaultCommConfigA/W, BeginUpdateResourceA/W, UpdateResourceA/W, EnumResourceLanguagesA/W, EndUpdateResourceA/W, EnumResourceTypesA/W, GetCalendarInfoA/W, EnumDateFormatsW, EnumCalendarInfoA/W, EnumCalendarInfoExA/W, FindFirstVolumeA/W, FindNextVolumeA/W (Dmitry Chapyshev)
  • Fix GetCommState, GetSystemInfo, IsProcessorFeaturePresent, LockResource (Dmitry Chapyshev)
  • Don't reset the last error on an exception for the lstr* functions. Also handle more than just access violation exceptions.
    Behaviour verified under Windows XP. (Colin Finck)

SHELL32

UEXT2

UNTFS

USER32

  • Use PatBlt and SelectObject instead of Nt functions in FillRect (Timo Kreuzer)
  • Sync CharLowerA/W and CharUpperA/W with Wine (after replacing Wine's SEH with PSEH). This makes us passing all user32 wsprintf Wine tests. (Colin Finck)

Template:Changelog