From ReactOS Wiki
Revision as of 09:00, 21 June 2009 by Fireball (talk | contribs) (Win32™ Personality)
Jump to: navigation, search

This is the changelog for ReactOS™ version 0.3.10 (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.9 (released 26 April, 2009).



Generic 0.3.10 Changes






Host Tools






Bootloader (FreeLoader)

  • Revert part of r40686 See issue #4471 for more details. (HervГc Poussineau)
  • Remove MachGetMemoryMap() and replace it by ArcGetMemoryDescriptor(). Rework memory initialization to use it. As a bonus, we're not limited anymore to 32 memory descriptors, and having more than 4GB of RAM doesn't lead to out of bounds accesses (HervГc Poussineau)
  • WINLDR: Repair LiveCD boot (HervГc Poussineau)
  • WINLDR: Fix SystemRoot path when booting in non-setup mode. WINLDR: Change path buffers to be MAX_PATH sized instead of an arbitrary 512 bytes value. (Aleksey Bragin)
  • Reenable partition table exploration, but switch off disk error reporting before doing it. (Aleksey Bragin)
  • WINLDR: Pass boot options to the kernel when booting in setup mode (it was disabled for debugging reasons). (Aleksey Bragin)
  • WINLDR: Use SystemRoot path as it is because after recent Herve's changes there is no need to do additional operations with it. (Aleksey Bragin)
  • Fix CDROM device registration: don't hardcode it to 0xE0, but register whatever device FreeLdr starts and which is not reported by BIOS as a hardisk. Fixes setupldr2. (Aleksey Bragin)
  • Remove empty debug print. (Aleksey Bragin)
  • Fix warning (HervГc Poussineau)
  • Disable partition table exploration, as long as it displays an error message if disk is not partitioned (HervГc Poussineau)
  • Implement agnostic architecture for file system access, according to Advanced RISC Computing Specification Version 1.2 Some shortcuts still exist, and will need to be addressed later Use this new API in the NTLDR-style loader (HervГc Poussineau)

Kernel and Executive (NTOSKRNL)

  • Fix accidentally committed change in a function prototype. Spotted by Stefan Ginsberg. (Aleksey Bragin)
  • Make use of the implemented transfer counter. (Aleksey Bragin)
  • Implement a helper for updating IO transfer counters. Based on a patch by Dmitry Chapyshev. (Aleksey Bragin)
  • IopCreateObjectTypes: Add a DeleteProcedure for Device Objects. IopUnloadDevice: After calling the drivers Unload routine, make the DriverObject temporary and dereference it. IopUnloadDriver: Check that the driver is not already unloading before trying to call unload routine. If any failure, dereference the DriverObject before returning STATUS code. On an attempt to unload the driver, loop through each DeviceObject and set DOE_UNLOAD_PENDING in device extensions flags. Before calling the driver's unload routine set DRVO_UNLOAD_INVOKED in DriverObject's flags. Fixes Bugchecks when attempting to load driver a second time and when unloading a driver that has upper level device attached. (Michael Martin)
  • Disable debugging traces for dbgk/io/lpc/ob/ps by default, removing mostly unused debug code from frequently used routines and decreasing image size by about 32 KB. Also fix the way some macros are defined so we don't end up with double semicolons after the preprocessor. (Stefan Ginsberg)
  • Implement ProcessIoCounters case in NtQueryInformationProcess. Patch by Dmitry Chapyshev. Turn on I/O operations counter. (Aleksey Bragin)
  • Debug pool allocator: Add support for paged pool debugging. (Aleksey Bragin)
  • Implement a special "debug pool" allocator which catches pool overruns. It evolved from an initial patch by Art Yerkes, and is fully independent from underlying pool implementation. It supports only non-paged pool and detects only overruns now. To enable, uncomment DEBUG_NPOOL define in mm/pool.c. (Aleksey Bragin)
  • Change storage of ReactOS-specific virtual address space from VadRoot to Vm EPROCESS structure member. Change containing "structure" from MM_AVL_TABLE to MMSUPPORT respectively . (Aleksey Bragin)





  • Fix formatting. (Michael Martin)
  • IopUnloadDriver: Only add the DOE_UNLOAD_PENDING to the Device's DeviceExtensions Flags and check for attached devices and reference counts if the DriverObject->DriverUnload is valid. Verified on XP. IopLoadUnloadDriver: Add a check to verify that ImagePath.Buffer is non null before freeing it. (Michael Martin)
  • IopDeleteDevice: Fix a typo. (Michael Martin)
  • IoGetLowerDeviceObject: Return lower device object if pending flags are not set. Noticed by Johannes Anderwald. (Michael Martin)
  • IopCreateDriver: Change MajorFunction routines back to internal function IopInvalidDeviceRequest for ones that were set to NULL in the Drivers DriverEntry. Windows does it and so shall we. (Michael Martin)
  • Fix a potential crash in IoGetLowerDeviceObject if nothing is attached to us (Cameron Gutman)
  • Add missing pool allocation failure branch in NtSetInformationFile, and a missing PAGED_CODE check. Spotted by Dmitry Chapyshev. (Aleksey Bragin)
  • Initialize IoCountOperations variable to FALSE by default. Spotted by Dmitry Chapyshev & winetests. (Aleksey Bragin)
  • IRP_MN_FILTER_RESOURCE_REQUIREMENTS passes the list also in Irp->IoStatus.Information Fixes a crash in CMI8738 driver (Johannes Anderwald)
  • Patch by JГcrГ_me Gardou (jgardou-at-yahoo-dot-fr) from bug #4388, should fix the "VirtualBox Guest Additions 2.2.2 mouse filter driver is crashing during boot" (bug #4454). (Dmitry Gorbachev)
  • Fix improper resource translation because of AddressSpace confusion (Cameron Gutman)
  • Fix writing of BootConfig to the registry (previously, it wrote contents of DEVICE_NODE structure and caused nonpaged pool overrea). Similar error a few lines below was fixed by hpoussin in r15691. (Aleksey Bragin)
  • Fix driver object type DeleteProcedure so that it actually unloads driver's image. Make IopUnloadDriver work accordingly (it shouldn't try to unload an image when its object has already been deleted). Drivers can now be unloaded in ReactOS, this probably fixes a number of hardware-related applications and applications using hardware protection. (Aleksey Bragin)



  • Lowercase STATIC and CONST. Fixes build with DBG but without KDBG. (Dmitry Gorbachev)
  • Clear up debugger prompt from "mouse excrements". Tested in QEMU, Bochs, VirtualBox. (Dmitry Gorbachev)



  • Add SectionHandle probing (Dmitry Chapyshev)
  • Add probing of the result buffer Add missing target process reference/dereference in MemorySectionName case of NtQueryVirtualMemory. Fixes 2 "psapi_winetest" failures. (Dmitry Chapyshev)
  • MmUnmapViewOfSection: Unlock address space before notifying debugger. Fixes a case where OllyDbg deadlocks in a GateWait while trying to read virtual memory. (Michael Martin)
  • MiFindExportedRoutineByNam: Correct an typo in assert that caused MmGetSystemRoutineAddress to assert after finding a valid non forwarder function. (Michael Martin)
  • Properly disable tag validation if using debugging pool (fixes a wrong part of r41255). (Aleksey Bragin)
  • Add a note about increasing max pool sizes when using pool debugging. (Aleksey Bragin)
  • Add missing parameters probing. (Aleksey Bragin)
  • Add missing AVL tree initialization. (Aleksey Bragin)
  • MmGrowKernelStack: go back to the ASSERT and add a fixed check (Timo Kreuzer)
  • Add check of params for NtGetWriteWatch/NtResetWriteWatch (from Wine) Set Granularity to PAGE_SIZE Fixes crash in kernel32 virtual test (Dmitry Chapyshev)
  • MmGrowKernelStack: Don't assert, but fail, when the kernel stack can't grow any more. Fixes a crash with recursive user calls. See issue #4060 for more details. (Timo Kreuzer)
  • MmCreateSection: SectionPageProtection of PAGE_NOACCESS is valid in <=Win98, but not valid in the NT family. More kernel32_winetest fixes for virtual memory. (Michael Martin)
  • NtAllocateVirtualMemory, NtProtectVirtualMemory: Page Protection cannot be any combination of Memory Protection Constants, see MSDN. Add checks to handle non compatible combinations are fail. Fixes 6 more kernel32_winetest for virtual memory. (Michael Martin)
  • MmProtectAnonMem: Search all Regions in Memory Area up to Length for MEM_COMMIT prior to altering memory protection. Fixes 6 kernel32_winetest for virtual memory. (Michael Martin)
  • MmMapViewOfSection: Segment size must be a multiple of page size, so round ViewSize up to next page size. OllyDbg now shows loaded dll's in memory and can step into dlls. (Michael Martin)
  • NtFreeVirtualMemory: Pass RegionListHead from SectionData vice VirtualMemoryData to MmAlterRegion for MemoryArea->Type of Section view. Fixes MapViewOfFile tests for kernel32_winetests. More investigation is needed on whether this function should even succeed on FileMapping Objects. (Michael Martin)
  • Silence pool debugging debugprints. (Aleksey Bragin)
  • Make debug pool return 8-bytes aligned pointers. The padding area (up to 7 bytes) is not being checked for overruns now. ReactOS fully boots and works with this change and a debug pool. (Aleksey Bragin)


  • Make ObReferenceObjectEx return the new ref count instead of old ref count. Fix same bug ObDereferenceObjectEx. Fix a typo in ObDereferenceObjectEx which resulted in ObpDeferObjectDeletion not being called when needed. Fixes missing object deletions in ObDereferenceObjectEx-using code (e.g. executive timers in reactos kernel). Original problem found by, fixes inspired by the discussion too. (Aleksey Bragin)


  • Add target process reference/dereference in ProcessWow64Information case of NtQueryInformationProcess. Check buffer length (Dmitry Chapyshev)
  • Check buffer length for ProcessQuotaLimits/ProcessBasePriority/ProcessRaisePriority/ProcessWx86Information/ProcessDebugPort cases (Dmitry Chapyshev)
  • Add probing of the result buffers (Dmitry Chapyshev)
  • Implement ProcessQuotaLimits case for NtQueryInformationProcess. Based on Dmitry Chapyshev's patch. (Aleksey Bragin)
  • Add target process reference/dereference in ProcessLdtInformation/ProcessWorkingSetWatch/ProcessWx86Information cases of NtQueryInformationProcess. (Dmitry Chapyshev)
  • Add debug messages for unimplemented cases in NtQueryInformationProcess (Dmitry Chapyshev)
  • Add missed checks of the buffer length (Dmitry Chapyshev)
  • Add debug messages for unimplemented cases (Dmitry Chapyshev)
  • Implement ProcessPriorityClass case for NtSetInformationProcess(). Based on Dmitry Chapyshev's work and testing. (Aleksey Bragin)
  • Fix ProcessPriorityClass case in NtQueryInformationProcess. Structure PROCESS_PRIORITY_CLASS should be returned. Tested in win vista (Dmitry Chapyshev)


NT System Library (NTDLL)

  • Patch by Alexander Potashev <> LDRP_PROCESS_CREATION_TIME was a _flag_ which is now removed, the new 'LDRP_PROCESS_CREATION_TIME' is not a flag, it's just a constant to identify a special value of LoadCount. (Art Yerkes)
  • Fix handle / memory leak in failure branch, spotted by Dmitry Chapyshev. (Aleksey Bragin)
  • Fix obvious bugs in the code (e.g. freeing a stack-allocated pointer). Rewrite the code to be more readable. Enlarge static buffer for SearchPathBuffer to be at least 5*MAX_PATH to prevent possible overflowing for now. In the meanwhile, Dmitry is rewriting this part of code to dynamically allocate the memory without the need for a temporary static storage. (Aleksey Bragin)
  • Add support of additional paths of loading dlls (fixes loading dlls in X-Chat) See issue #4201 for more details. (Dmitry Chapyshev)

Run Time Library (RTL)

Kernel Mode Drivers

  • Improve user mode buffer probing (Johannes Anderwald)
  • Fix 2 typos (Cameron Gutman)
  • Report that we are NDIS 5.1 (Cameron Gutman)
  • Big debugging update Also fix some little bugs and reduce code duplication (Cameron Gutman)
  • Make CancelId a LONG (Cameron Gutman)
  • modified drivers/filesystems/fastfat/blockdev.c modified drivers/filesystems/fastfat/dirwr.c modified drivers/filesystems/fastfat/ea.c modified drivers/filesystems/fastfat/finfo.c Silence "argument unused" warnings Corrected several accesses to potentially uninitialized variables modified drivers/filesystems/fastfat/vfat.h Visual C++ is no longer a guarantee of compilation with the DDK Patch by Samuel SerapiГ_n <> (KJK::Hyperion)
  • modified drivers/input/i8042prt/createclose.c modified drivers/input/i8042prt/i8042prt.c modified drivers/input/i8042prt/keyboard.c modified drivers/input/i8042prt/misc.c modified drivers/input/i8042prt/mouse.c modified drivers/input/i8042prt/readwrite.c Silence "argument unused" and "unused variable" warnings Corrected several accesses to potentially uninitialized variables Patch by Samuel SerapiГ_n <> (KJK::Hyperion)
  • modified drivers/bus/pci/fdo.c modified drivers/bus/pci/pci.c modified drivers/bus/pci/pdo.c Silence "argument unused" warnings Corrected a potentially uninitialized variable access Patch by Samuel SerapiГ_n <> (KJK::Hyperion)
  • Make NdisGeneratePartialCancelId safe by using Interlocked functions (Cameron Gutman)
  • Don't reinitialize in case of error. Fixes a "DPC > 1 sec" problem related to an infinite loop in usbdriver. (Aleksey Bragin)
  • Fix NULL pointer access in an error branch inside hub_clear_port_feature_completion(). Thanks to Christoph for testing. (Aleksey Bragin)
  • Implement NdisIMGetBindingContext and NdisIMGetDeviceContext (Cameron Gutman)
  • Header cleanup (Cameron Gutman)
  • Implement NdisIMCopySendPerPacketInfo and NdisIMCopySendCompletePerPacketInfo (Cameron Gutman)
  • Implement NdisGeneratePartialCancelId (Cameron Gutman)
  • Patch by Olaf Siejka (caemyr gmail com): add stubs for unimplmented cases in ScsiPortNotification (Timo Kreuzer)
  • Implement NdisCancelSendPackets (Cameron Gutman)
  • MINIPORT_CONFIGURATION_CONTEXT must be allocated from nonpaged pool as it contains a spinlock (Stefan Ginsberg)
  • Check in wdmaud if a pin with the specified filter id and pin id has been opened Partly rewrite SysAudio as it is no longer required to store client specific information per connection since wdmaud just opens one connection Verify all audio handles at incoming irp (Johannes Anderwald)
  • Topology nodes can have a nullable name Disable releasing resources when IPortFilterWaveCyclic is closed (Johannes Anderwald)
  • don't include private.h twice fix include path (Sylvain Petreolle)
  • Add a few sanity assert to KsCreate Pass a create item and use an object class when creating an object header Return zero mixer count when wdmaud fails to enumerate virtual device count Should fix high cpu usage after installing audio drivers (Johannes Anderwald)
  • Store servicegroup obtained from IMiniportDMus / IMiniportMidi Init function when IPortDMus / IPortMidi RegisterServiceGroup is not called (Johannes Anderwald)
  • Fix a bug in KsTopologyPropertyHandler Create a KSTOPOLOGY struct when creating the subdevice descriptor and pass the struct to KsTopologyPropertyHandler Implement enumerating mixer devices Change handle array to contain the target device type. Mixer handles are not real handles, they are just pseudo handles Forward KSPROPSETID_Topology request to portcls (sysaudio) (Johannes Anderwald)
  • Add cases for IOCTL_SCSI_MINIPORT and IOCTL_SCSI_PASS_THROUGH (Dmitry Chapyshev)
  • Check to see that the packet status isn't NDIS_STATUS_RESOURCES before forwarding the packet descriptor to the ReceivePacketHandler (Cameron Gutman)
  • Rewrite MiniQueryInformation so it creates a NDIS_REQUEST and passes it to MiniDoRequest for processing to reduce code duplication Call MiniportCoRequest in connection-oriented miniports Now our NDIS loads all the way to the ASSERT for unsupported media on XP (Cameron Gutman)
  • Fix our handler checks Now XP's intermediate miniport drivers can load on ROS's NDIS More work still needs to be done to get them working though (Cameron Gutman)
  • Register the adapter shutdown handler if it is specified in the miniport characteristics (Cameron Gutman)
  • Disable debugging flood (Johannes Anderwald)
  • Also Store audio filter object header in FsContext member Create the pin on the correct filter by using the filters object class Remove filter object class before performing actual create request Remove object header from audio filter when closing Retrieve internal object class name with internal IOCTL_KS_OBJECT_CLASS Avoid using interface name as ReactOS doesn't support it Store object class name when creating the object header for the audio sub device Implement IPortFilterTopology interface Activate pin property handle for port topology driver There is no need to create a handle to sysaudio for each application opening wdmaud, use only one connection per driver basis Pass object create class to pin creation method by duplicating KsCreatePin Audio devices should now be accessible again (Johannes Anderwald)
  • Revert r41287 (Cameron Gutman)
  • Fix the map register count check (Cameron Gutman)
  • Revert 40694 as FIELD_OFFSET is perfectly working code and the new one might not work on some compilers Add informal debug traces for bug 4354 (Johannes Anderwald)
  • Remove a few bad (PLIST_ENTRY) casts (Johannes Anderwald)
  • Export NdisFreeToBlockPool (Cameron Gutman)
  • Remove an incorrect comment (I wasn't thinking when I wrote it ;)) Add an ASSERT for an unhandled case (Cameron Gutman)
  • Enable the code in NdisSetTimerEx Add a debug print (Cameron Gutman)
  • Forgot to free DmaContext (Cameron Gutman)
  • Finish our NDIS S/G DMA implementation Totally untested due to lack of HAL S/G support (Cameron Gutman)
  • Add missing exports to videoprt (Timo Kreuzer)
  • Handle IRP_MN_QUERY_PNP_DEVICE_STATE (Cameron Gutman)
  • Register a device interface for each miniport (Cameron Gutman)
  • Implement and export NdisCompareAnsiString, NdisCompareUnicodeString, and NdisInterlockedAddLargeInteger (Cameron Gutman)
  • Export the stubs for NdisRegisterTdiCallBack, NdisSetProtocolFilter, and NdisClGetProtocolVcContextFromTapiCallId Remove some extra stuff Move implemented stuff to misc.c Add some debug prints (Cameron Gutman)
  • Patch from Olaf Siejka <olaf_siejka AT o2 DOT pl> Stub out more IRP type cases instead of printing "Unknown IOCTL" (Stefan Ginsberg)
  • Return NDIS 5.1 in NdisGetVersion (its XP+) (Sylvain Petreolle)
  • Implement and export NdisOverrideBusNumber (Cameron Gutman)
  • Implement NdisGetSharedDataAlignment and NdisGetVersion (Dmitry Chapyshev)
  • Fix build (Cameron Gutman)
  • Export and stub NdisAllocateFromBlockPool, NdisCancelSendPackets, NdisCoAssignInstanceName, NdisCoGetTapiCallId, NdisCreateBlockPool, NdisDestroyBlockPool, NdisGeneratePartialCancelId, NdisGetRoutineAddress, NdisGetSharedDataAlignment, NdisGetVersion, NdisIMGetCurrentPacketStack, NdisIMNotifyPnPEvent, NdisQueryPendingIOCount, and NdisSetPacketStatus (Cameron Gutman)
  • Export and hackplement NdisSetTimerEx Implementation is #ifed out currently but I may enable it later Hopefully somebody can think of a better way to do it than the current code (Cameron Gutman)
  • Export stubs for NdisQueryBindInstanceName and NdisSetPacketPoolProtocolId (Cameron Gutman)
  • Export NdisGetFirstBufferFromPacketSafe, NdisGetPacketCancelId, NdisGetPoolFromPacket, NdisPacketSize, and NdisSetPacketCancelId (Cameron Gutman)
  • Export NdisCopyFromPacketToPacketSafe (Sylvain Petreolle)
  • Fix handling of nonpaged contiguous memory in NdisAllocateMemory and NdisFreeMemory (Cameron Gutman)
  • Implement IOCTL_KEYBOARD_QUERY_ATTRIBUTES (not used yet, see FIXME comment) Add KeyboardAttributes to I8042_KEYBOARD_EXTENSION (Dmitry Chapyshev)
  • Implement IOCTL_MOUSE_QUERY_ATTRIBUTES (untested) (Dmitry Chapyshev)
  • Use a reference name when registering audio subdevices (bug 4566) Release subdevice interface when it is no longer needed Fix a memory leak Audio support is on hold untill bug 4566 is resolved (Johannes Anderwald)
  • Report 5.2 as a version in UniATA rather than 4.1. It doesn't seem to introduce incompatibility, but is more realistic for the rest of the driver. (Aleksey Bragin)
  • Increase waiting time for DRQ removal inside AtapiInterrupt twice. Don't disable/enable IDE controller interrupts in AtapiSendCommand. This confuses Virtual Box's controller (it consumes one interrupt without ever emitting it) and thus sending any ATAPI command fails. Turn off ATAPI DMA raw read support by default. It seems to be incompatible with (at least) Virtual Box IDE controller. See issue #3645 for more details. (Aleksey Bragin)
  • i8042MouInternalDeviceControl: Forgotten from last commit. Partially implement internal IOCTLs IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER, IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION and IOCTL_MOUSE_QUERY_ATTRIBUTES. (Michael Martin)
  • Only register a shutdown handler if adapter initialization has succeeded (Cameron Gutman)
  • Register shutdown notification Close file objects / handles on shutdown (Johannes Anderwald)
  • Use a constant of the right type. (Dmitry Gorbachev)
  • return error code when there is a timeout improve error check in PcNewInterruptSync write an error log entry when a device fails to start (Johannes Anderwald)
  • Fix build, part 2. (Dmitry Gorbachev)
  • Trying to fix build. (Dmitry Gorbachev)
  • Don't release resource list May fix 4551 (Johannes Anderwald)
  • i8042MouInternalDeviceControl: Implement IoControlCode of IOCTL_INTERNAL_I8042_HOOK_MOUSE. ForwardIrpAndWait: Don't use IoForwardIrpSynchronously to Forward IRPs as it fails if no next stack location is available, which prevents the mouse from initializing. Changed it to match implementation of our other input drivers. Mouse pointer now works with VBoxMouse driver loaded. (Michael Martin)
  • Fix a bug that could result in Dma32BitAddresses being set if the caller specifies NDIS_DMA_24BITS (Cameron Gutman)
  • MajorFunction has IRP_MJ_MAXIMUM_FUNCTION positions Sorry for so many commits on the same function (Cameron Gutman)
  • We also shouldn't use our Shutdown handler (Cameron Gutman)
  • Don't use NDIS's ioctl handler for devices registered from NdisMRegisterDevice (Cameron Gutman)
  • Irp->AssociatedIrp.SystemBuffer is a PNDIS_OID (Cameron Gutman)
  • CreateClassDeviceObject: Add flag DO_BUFFERED_IO to match windows behavior. Revealed by mouse spying utility that expected that IO method. These mouse spying drivers should now work. (Michael Martin)
  • Do not overwrite *max_bcount. (Dmitry Gorbachev)
  • CreateClassDeviceObject/ClassAddDevice: Again do not create device with exclusive access. (Michael Martin)
  • CreateClassDeviceObject/ClassAddDevice: Do not create KeyboardClass device with exclusive access as it will prevent key loggers from working. (Michael Martin)
  • Fix our DMA implementation to use documented structs (Cameron Gutman)
  • Implement NdisReadPcmciaAttributeMemory and NdisWritePcmciaAttributeMemory Add some debug prints to NdisReadEisaSlotInformation (Cameron Gutman)
  • Implement NdisReadEisaSlotInformation (Cameron Gutman)
  • The slot number passed directly to NdisImmediateReadPciSlotInformation/NdisImmediateWritePciSlotInformation is ignored according to MSDN so store a valid slot number in the wrapper context to use instead (Cameron Gutman)
  • Implement NdisGetFirstBufferFromPacketSafe and NdisCopyFromPacketToPacketSafe (Cameron Gutman)
  • Implement NdisGetPoolFromPacket, NdisPacketSize, NdisGetPacketCancelId, and NdisSetPacketCancelId (Cameron Gutman)
  • Store the MTU in the packet extension for use during segmentation by miniport drivers (Cameron Gutman)
  • Remove some obsolete defines I apologize for any unnecessary rebuilds this may cause ;) (Cameron Gutman)
  • Enable several failure debug prints Add a debug print (Cameron Gutman)
  • Remove unused WdmAudWriteCompleted check for a valid object header in KsSynchronousIoControlDevice Apply alignment restrictions to all allocated buffers Fix handling IRP_MN_QUERY_INTERFACE, IRP_MN_QUERY_DEVICE_RELATIONS, IRP_MN_FILTER_RESOURCE_REQUIREMENTS IMiniportWaveCyclic::NewStream && IMiniportWavePci::NewStream take first the pin id and THEN the parameter capture. Fixes playback for ES1371 (VmWare) driver and many others Store IPortFilterWavePci, IPortFilterWaveRT, IPortFilterWaveCyclic in their corresponding port (Johannes Anderwald)
  • Remove some extra junk (Cameron Gutman)
  • Add CLSID_PortWaveRT Plugin IPortWaveRT port driver (Johannes Anderwald)
  • Fix WaitOnBusy, WaitOnBaseBusy and Wait[Short]ForDrq to wait and loop exactly the same as our existing atapi driver. This greatly enhances uniata's compatibility, especially on modern highspeed hardware where a controller usually didn't have enough time to change its state and was considered invalid. (Aleksey Bragin)
  • Use ExInterlockedList * functions for speed and stability Increment reference count on the correct miniport adapter from IPortDMus (Johannes Anderwald)
  • Don't cast NDIS_SPIN_LOCK directly to KSPIN_LOCK (Cameron Gutman)
  • Allocate space for the packet extension located at NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA) Fixes more packet corruption (Cameron Gutman)
  • Partly implement IMasterClock Implement IAllocatorMXF for IPortPinDMus Implement rendering midi streams using IMXF object WIP, not tested yet (Johannes Anderwald)
  • Implement IPortMidi, IPortFilterDMus, IPortPinDMus Implement reading / writing midi stream data using IMiniportMidiStream interface Delete old IPortMidi implementation (Johannes Anderwald)
  • When acquiring a mapping check if the mapping hasn't already been used Set tag value to zero when releasing a mapping (Johannes Anderwald)
  • Fix build (sorry) (Johannes Anderwald)
  • Use a spinlock with list functions over interlocked list functions Use a bitmap for storing reference count of the mappings as mapping are complete async and not very likely in determined order (Johannes Anderwald)
  • Fix debug statement Modify reference handling for irp mappings (Johannes Anderwald)
  • Declare IID_IDmaChannelSlave as it is not visible when using NTDDI >= Vista (Johannes Anderwald)
  • Implement support for IOCTL_NDIS_QUERY_GLOBAL_STATS (Cameron Gutman)
  • Register the unload handler so it gets called by NDIS (Cameron Gutman)
  • Return status code if releasing the mapping has succeeded Fix calculation of number of tags to be allocate per irp Fix multiple bugs when acquiring the mapping and releasing the mapping Vortex AU8810 WDM is now starting to play (Johannes Anderwald)
  • Implement and register a ProtocolUnbindAdapter handler (Cameron Gutman)
  • Add and register a ProtocolPnPEvent handler with some stubs in it (Cameron Gutman)
  • Fix build (Johannes Anderwald)
  • Implement IPortWaveRT, IPortFilterWaveRT, IPortPinWaveRT interface for audio drivers >= Vista (Johannes Anderwald)
  • Implement handing for IRP_MN_SET_POWER and IRP_MN_QUERY_POWER (not plugged in yet) Allocate a buffer and copy data into it instead of using the buffer passed to us directly Use a helper function to perform common operations which save lots of lines of duplicated code (Cameron Gutman)
  • Handle IRP_MN_QUERY_REMOVE_DEVICE and IRP_MN_CANCEL_REMOVE_DEVICE Implement NdisCompletePnPEvent Handle pending cases (Cameron Gutman)
  • Implement handling for IRP_MN_CANCEL_STOP_DEVICE (Cameron Gutman)
  • Implement handling for IRP_MN_QUERY_STOP_DEVICE (Cameron Gutman)
  • Ditto as r40781, but for ohci. Spotted by Cameron Gutman. (Aleksey Bragin)
  • Handle failure case correctly in *_submit_urb: remove URB from an endpoint's linked list, instead of corrupting this URB's memory. Thanks to Gregor Schneider for spotting the suspicious place. See issue #4279 for more details. (Aleksey Bragin)
  • Implement NdisCopyBuffer and NdisGetCurrentProcessorCpuUsage Patch by Dmitry Chapyshev (Cameron Gutman)
  • Translate the raw address before attempting to map it (Cameron Gutman)
  • Add debug prints to NdisMMapIoSpace (Cameron Gutman)
  • Fix memory corruption when reading binary data (Cameron Gutman)
  • Check for invalid ConfigurationContext Patch by Daniel Zimmermann with a slight modification by me (Cameron Gutman)
  • Pass IRP_MN_QUERY_DEVICE_RELATIONS down the stack (Cameron Gutman)
  • Fix build (try 2) (Cameron Gutman)
  • Wait for NdisMFreeSharedMemoryPassive to complete before returning See issue #4428 for more details. (Cameron Gutman)
  • Only call NdisMEthIndicateReceiveComplete once per batch of packets Slight performance increase (Cameron Gutman)
  • Silence a few debug prints The IrpQueue functions are called at DISPATCH_LEVEL, therefore use KeAcquireSpinLockAtDpcLevel instead Fix multiple bugs when using IrpQueue tag functions (Johannes Anderwald)
  • Remove test code which should never have come into trunk (Johannes Anderwald)
  • Fix IPortWavePci_Notify routine Add debug traces (Johannes Anderwald)
  • Experimental IPortPinWavePci implementation Refactor IPortWavePciStream initilization Add test code for IDrmAudioStream (Johannes Anderwald)
  • Implement KSPROPERTY_PIN_DATARANGES handler- Always return TRUE in FastDeviceHandler (faciliates testing with Vortex AU8820 WDM Driver) (Johannes Anderwald)
  • Free NdisMiniportBlock.Resources when we receive a stop irp (Cameron Gutman)
  • Also copy AllocatedResources from the stack to NdisMiniportBlock.Resources (Cameron Gutman)
  • Pass KSPROPERTY_SET to subdevice constructor Add debug traces on error case (Johannes Anderwald)
  • Fix support for asynchronously completed requests (Cameron Gutman)
  • Use Int32x32To64 to calculate timeout (Cameron Gutman)
  • Fix allocation of CM_RESOURCE_LIST Might fix bug 4354 See issue #4354 for more details. (Johannes Anderwald)
  • We don't need these debug prints anymore (Cameron Gutman)
  • Implement VideoPortPutDmaAdapter, VideoPortStartDma, VideoPortCompleteDma, VideoPortLockBuffer, VideoPortUnlockBuffer, (Johannes Anderwald)
  • Remove unused file Fix Es1370mp / Es1371mp driver installation. However, no sound yet. Needs more investigation (Johannes Anderwald)
  • Allocate memory for the OOB area also Set the NdisPacketOobOffset in each packet Fixes the mysterious packet corruption Fixes Realtek 8139 and Intel PRO/1000 (Cameron Gutman)
  • Add tons of ASSERT_IRQL / ASSERT_IRQL_EQUAL Queue a dpc when IServiceGroup::RequestService is called above dispatch level As a result writing to common buffer and completing irps can be done at the same time Start the stream at PASSIVE_LEVEL Check if key has been deleted in IRegistryKey object function Implement IRegistryKey::QueryRegistryValues (Johannes Anderwald)
  • Fix the size passed to RtlZeroMemory so it also zeros the protocol reserved memory (Cameron Gutman)
  • fix build (Timo Kreuzer)
  • Re-dispatch irp to the default handler (Johannes Anderwald)
  • Zero the whole packet in other packet allocation routines Set ValidCount TRUE because we don't have any buffers chained yet Set the fPACKET_ALLOCATED_BY_NDIS flag (fixes storing media-specific data) (Cameron Gutman)
  • Once a create handler indicates success, leave creation handler (Johannes Anderwald)
  • Increase importance of the audio dpc which finishes irps Once one second of audio data has been buffered, always queue audio irps and dont complete them imediately. Greatly improves the playback of SMPlayer and probably many other audio players which act strictly on the timing of completed irps Add debug traces when KsCreatePin fails (Johannes Anderwald)
  • Allocate work item for each filter / pin being opened Use ExInterlockedInsertTailList to insert a new audio device to prevent race conditions when more than one audio device is present Free work item in their target worker routine (Johannes Anderwald)
  • Allocate a work item for each specific request (start / stop / close) and free allocated work items (Johannes Anderwald)
  • Don't attempt to store packets and buffers in the same place (Cameron Gutman)
  • Add error debug traces (Johannes Anderwald)
  • Implement KSPROPERTY_PIN_CTYPE, KSPROPERTY_PIN_DATAFLOW, KSPROPERTY_PIN_COMMUNICATION for fast property handler (Johannes Anderwald)
  • Implement FastDeviceIoControl for IPortFilterWavePci Partly implement fast property handler (Johannes Anderwald)
  • Some work on freetype font driver (Timo Kreuzer)
  • Implement handling a FastDeviceIoControl path (not yet used in portcls) (Johannes Anderwald)
  • Fix return type of FastDeviceIo / FastRead / FastWrite (Johannes Anderwald)
  • Add an ASSERT (Cameron Gutman)
  • Implement NdisQueryAdapterInstanceName (Cameron Gutman)
  • Implement NdisMRegisterUnloadHandler, NdisMRegisterDevice, and NdisMDeregisterDevice (Cameron Gutman)
  • Implement NdisMGetDeviceProperty (Cameron Gutman)
  • Rename function to fix linking errors on x64 (Johannes Anderwald)
  • Forward & wait IRP_MN_START_DEVICE to lower device objects before starting the device Fix several irp leaks and return correct status in PcForwardIrpSynchronous (Johannes Anderwald)
  • Handle IRP_MN_QUERY_RESOURCE_REQUIREMENTS (Johannes Anderwald)
  • Silence a few debug prints Fix memory leaks on failure (Johannes Anderwald)
  • Drivers might use this unused area (Johannes Anderwald)
  • Activate IPortFilterWavePci (Johannes Anderwald)
  • Implement IPortFilterWavePci (based on IPortFilterWaveCyclic) (Johannes Anderwald)
  • Print the current and maximum lookahead to aid in debugging certain miniport drivers (Cameron Gutman)
  • Stub MiniSetComplete and MiniQueryComplete Register more handlers (Cameron Gutman)














Static Libraries





  • Japanese translation of USetup. Patch by Tomoya Kitagawa, fixes bug #4523. (Dmitry Gorbachev)
  • Don't display unformatted partitions twice. See issue #4399 for more details. (Aleksey Bragin)

Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)

  • Fix Firefox 1.0/1.5 minimisation to taskbar Patch by Mikhail Denisenko ( See issue #2451 for more details. (Dmitry Chapyshev)
  • [FORMATTING] dibobj.c: fix indentation, no code change (Timo Kreuzer)
  • NtGdiEngCreateDeviceBitmap: Test size larger than 32 bits in width. (James Tabor)
  • Update stubs, NtGdiEngCreateDevice/Bitmap. (James Tabor)
  • More research is required to fix NtGdiSetPixelFormat, so removing disputed information. (James Tabor)
  • fixes the problem of unsetting the HWND_TOPMOST property (e.g. taskmgr) review recommended, but i think it's sufficient to limit topmost property to desktop windows only (otherwise we can remove this part of condition) (Matthias Kupfer)
  • Hax-implement NtGdiSetPixelFormat and add a support function UserGethWnd with some code cleanup. (James Tabor)
  • Implement NtGdiDescribePixelFormat, needs testing. (James Tabor)
  • Add note for WNDOBJ. (James Tabor)
  • Implement CDS_TEST flag for IntChangeDisplaySettings. Set ERROR_CALL_NOT_IMPLEMENTED where needed. (Sylvain Petreolle)
  • ProcessMouseInputData: Mouse pointer shown on window was slightly off. Fix calculation in conversion to screen position. (Michael Martin)
  • MouseThreadMain: Send IOCTL_MOUSE_QUERY_ATTRIBUTES to mouse driver. MSDN reads that this IOCTL is sent from the subsystem. Filter drivers can depend on this behavior. (VirtualBox guest addition drivers) Does the subsystem need the returned mouse attributes for anything? ProcessMouseInputData: Handle flag MOUSE_MOVE_ABSOLUTE and change absolute mouse position to screen coordinates. Fixes VirtualBox mouse integration. (Michael Martin)
  • IntEmptyClipboardData: Check before freeing a potential null pointer (Stefan Ginsberg)
  • Add support for SPI_GETCARETWIDTH/SPI_SETCARETWIDTH (Dmitry Chapyshev)
  • Fix two potential crashes (Dmitry Chapyshev)
  • don't return without UserLeave, should fix user32:input winetest crash (Kamil Hornicek)
  • Check the pointer for client thread information for null not thread information. (James Tabor)
  • Remove the rest... (James Tabor)
  • Formatting fix. No code change (Dmitry Chapyshev)
  • Time to kill this one. We setup with ParentWindowHandle already set. (James Tabor)
  • UserPostMessage: when dealing with WM_QUIT, allow broadcasting like windows does and post it to the window's message queue instead of the current thread's message queue. Fixes a hang in user32_winetest msg. Patch by Giannis Adamopoulos. See issue #4058 for more details. (Timo Kreuzer)
  • Move update thread information hooks. (James Tabor)
  • This helps gimp 2.4.6 start-up. But there is another bug in msvcrt.dll that throws an exception. I must apologize for not doing this sooner. (James Tabor)
  • Order rectangle points to avoid CreateCompatibleBitmap failure because of negative size values (Gregor Schneider)




Control panel applets

  • Sound events should be stored in REG_EXPAND_SZ keys (Johannes Anderwald)
  • Update icons for desk.cpl and sysdm.cpl (Dmitry Chapyshev)
  • Add Romanian translations for Joy, Main, and PowerCfg CPLs. Petru Dimitriu. Bug #4482. (Dmitry Gorbachev)
  • Merge from amd64-branch: (Samuel SerapiГ_n) 36464: access.cpl: use IntToPtr instead of casting 36454: console.cpl: use LPARAM instead of LONG 36458: main.cpl: use IntToPtr instead of casting 36460: mmsys.cpl: use IntToPtr instead of casting, use INT_PTR instead of INT 36908: ncpa.cpl: use INT_PTR instead of INT 36466: sysdm.cpl: use INT_PTR instead of INT (Timo Kreuzer)


  • Simplified Chinese translations by Jingjing Fu (jingjingf AT Bug #4417 (Dmitry Gorbachev)


  • Remove BOM, recode Romanian file from UTF-8 to CP-1250, remove #pragma strings from there, and #include it to the master resource file. (Dmitry Gorbachev)
  • Fix build (Dmitry Chapyshev)
  • German translation of effects (dialog + button) (Matthias Kupfer)



  • Don't cast pStartInfo->dwCrashDumpEnabled to LPBYTE and use it as pointer in RegSetValueExW, Instead pass &pStartInfo->dwCrashDumpEnabled. (Timo Kreuzer)


Win32™ Applications

  • fix msvc build (Christoph von Wittich)
  • some code cleanup (Christoph von Wittich)
  • attempt to convert most of this mess into something which at least look like C code (Christoph von Wittich)
  • fix warnings (untested) (Christoph von Wittich)
  • Paint: Added cropping via attributes dialog and setting desktop wallpaper (both not yet working) (Benedikt Freisen)
  • Change Paint to use Unicode (Dmitry Gorbachev)
  • Fix some bugs in Paint. (Dmitry Gorbachev)
  • Added Dutch translation (Benedikt Freisen)
  • use system background color instead of fixed one TODO: apply to buttons (still bitmaps) (Matthias Kupfer)
  • polish translation by Caemyr (Olaf Siejka) (Johannes Anderwald)
  • Add Russian translation Small cleanup (Dmitry Chapyshev)
  • SVN maintenance (Pierre Schweitzer)
  • Added paint/paint.rbuild to applications.rbuild (Benedikt Freisen)
  • Added Paint for ReactOS source folder (Benedikt Freisen)
  • Bulgarian translation of Mplay32 by CCTAHEB. Bug #4427. (Dmitry Gorbachev)
  • Sync wordpad and winhlp32 with Wine 1.1.21 (Dmitry Chapyshev)
  • sync winhlp32 and wordpad with Wine 1.1.20 (Daniel Reimer)
  • Rewrite, the last method of getting service dependants and dependent services was flawed/buggy. (Ged Murphy)
  • Add most of the code for the dependencies tab in the property sheet. It's not quite complete but I'm getting bored with it now. May finish it tomorrow. (Ged Murphy)
  • Merge 40124, 40126 from amd64-branch: Fix 64bit build. It works too. (Samuel SerapiГ_n) (Timo Kreuzer)
  • Add a temporary manifest to servman which contains support for comctl32 v6 and more importantly, support for UAC elevation in NT6+ This will be required for any app which needs to run with elevated privs. As we've previously stated, rbuild needs to generate the manifest hence this is only temporary. We therefore need a UAC tag adding to rbuild so the generated manifest can contain support for UAC elevation for any apps which require it. If anyone wishes to add this support to rbuild, feel free to do so. (Ged Murphy)
  • Fix the build and a fix mem leak. We should consider setting msvc to /W4. (Ged Murphy)
  • Add the list of dependencies to the listbox so we know what else will be stopping Restructure the stop code (Ged Murphy)
  • Rewrite start and stop routines to make them much more robust Add the ability to check for and stop dependent services Untested at the moment, but unfinished anyway. (Ged Murphy)


  • Romanian translation of ReactOS Calc by Petru Dimitriu (petrimetri *at* gmail *dot* com). Bug #4413. (Dmitry Gorbachev)

Command Prompt



  • Fix SeaMonkey link (Colin Finck)
  • Remove Firefox 1.5 from the list, we don't need three versions of it (Colin Finck)
  • Update SeaMonkey to 1.1.16 Add Firefox 3.0.9 Remove Mozilla ActiveX Control, that version isn't compatible anymore with our mshtml. Only take the version automatically downloaded from mshtml now. See issue #4411 for more details. (Colin Finck)
  • Add SMPlayer 0.6.7 (Johannes Anderwald)


  • Mikhail Denisenko <> Split the PIDL into current and parent folder, and call GetFolderAttributes only for current folder PIDL. This fixes tons of "ERR: HCR_GetFolderAttributes should be called for simple PIDL's only!" debug log spam messages. See issue #4494 for more details. (Aleksey Bragin)
  • Mikhail Denisenko <> Destroy proper windows, fixes one more memory leak. See issue #2012 for more details. (Aleksey Bragin)
  • Mikhail Denisenko <> RegisterDragDrop should be coupled with a RevokeDragDrop, so add that. Remove _pDropTarget from class members, it's a var local to DesktopShellView::InitDragDrop() method. See issue #2012 for more details. (Aleksey Bragin)
  • Mikhail Denisenko <> Free subentries in Entry destructor. Fixes QuickLaunch entries leak. See issue #2012 for more details. (Aleksey Bragin)
  • SetClassLong -> SetClassLongPtr, GetClassLong -> GetClassLongPtr (for 64-bit compatible, see note in MSDN) Part 1/x (Dmitry Chapyshev)



  • unify look of basic apps use icon for info box and remove text (Matthias Kupfer)




  • There's no such thing as ntsys.lib in Windows, dynamically link to ntdll to fix building with msvc. (Ged Murphy)
  • Keep the horizontal grid axis consistent (Ged Murphy)
  • Add more missing styles Patch by Gabriel Ilardi (gabrielilardi at hotmail dot it) (Ged Murphy)
  • Make the horizontal and vertical axis in the history graphs solid lines instead of the dotted 80's style we had. (Ged Murphy)
  • bug3954 missed some styles. Updated English resource, can Gabriel or anyone else do the rest. (Ged Murphy)
  • Gabriel Ilardi <gabrielilardi AT hotmail DOT it> Fixes the TAB_STOP problem for taskmanager. See issue #3954 for details. (Matthias Kupfer)
  • set menu checkmark always on top always (Matthias Kupfer)
  • fixes clipping problem for taskmgr process list (Matthias Kupfer)
  • Fix build (Dmitry Gorbachev)
  • unify look of basic apps use ShellAbout instead of own AboutBox (Matthias Kupfer)

Win32™ Libraries

  • Sync comdlg32, avifil32 with Wine 1.1.23 (Dmitry Chapyshev)
  • sync cryptui and crypt32 with wine 1.1.23 (Christoph von Wittich)
  • sync cabinet, jscript, msi and msxml3 with wine 1.1.23 (Christoph von Wittich)
  • Hack around the system start up Dll Initialization, this time we moved it to User32. (James Tabor)
  • Sync gdiplus, fusion, cryptui with Wine 1.1.22 (Dmitry Chapyshev)
  • Sync msctf, mlang, inetmib1, inetcomm with Wine 1.1.22 (Dmitry Chapyshev)
  • Sync ole32, oleaut32 with Wine 1.1.22 (Dmitry Chapyshev)
  • Sync riched20, qmgr, pdh with Wine 1.1.22 (Dmitry Chapyshev)
  • shell32: Add IShellItem implementation from Wine Implement SHCreateShellItem setupapi: Stubimplement SetupUninstallOEMInfA/W Stubimplement Get_Device_Interface_List_Size_ExA/W (Dmitry Chapyshev)
  • Sync shlwapi, traffic, urlmon with Wine 1.1.22 (Dmitry Chapyshev)
  • SetClassLong -> SetClassLongPtr, GetClassLong -> GetClassLongPtr (for 64-bit compatible, see note in MSDN) Part 2/x (Dmitry Chapyshev)
  • Sync msctf, mscoree, mciqtz32, localspl, inetmib1 with Wine 1.1.21 (Dmitry Chapyshev)
  • Sync ole32, oleacc, oleaut32 with Wine 1.1.21 (Dmitry Chapyshev)
  • Sync xinput1_3, pdh with Wine 1.1.21 (Dmitry Chapyshev)
  • Sync comctl32 (without listview.c), comdlg32 with Wine 1.1.21 (Dmitry Chapyshev)
  • Sync clusapi, credui, crypt32, cryptui with Wine 1.1.21 (Dmitry Chapyshev)
  • Sync spoolss, sxs, urlmon with Wine 1.1.20 (Dmitry Chapyshev)
  • Sync itss and msctf with Wine 1.1.20 (Dmitry Chapyshev)
  • Sync mciavi32 and mciqtz32 with Wine 1.1.20 (Dmitry Chapyshev)
  • Sync credui and crypt32 with Wine 1.1.20 (Dmitry Chapyshev)
  • Sync comctl32 with Wine 1.1.20 (without listview.c) Sync comdlg32 with Wine 1.1.20 (Dmitry Chapyshev)
  • Danish translation of shell32 and userenv DLLs by Thomas Larsen (sikker2004 "at" yahoo "dot" com). Bug #571. (Dmitry Gorbachev)
  • Add the ws2_32 library from Alex's old network branch which is a _huge_ improvement over our current, incorrect lib. I've made various changes and tweaks to get it building with gcc, however it doesn't yet build with out build environment as out headers are severely lacking. It's also reliant on other winsock libs which will come in future commits along with the header rewrite. (Ged Murphy)


  • better stub for LsaEnumerateAccountRights (Christoph von Wittich)
  • Add a lazy-initializing hack until user32 is able to delay-load the advapi32 as it should. It fixes a problem of trying to enter a non-initialized critical section object and possibly hanging on every boot. (Aleksey Bragin)
  • eventlog.c: When manually creating RPC_UNICODE_STRING/RPC_STRING the Length member does not include the terminating null, but MaximumLength does. Fixes returning handle for Security and System event logs. (Michael Martin)
  • Sync GetNamedSecurityInfoA with Wine. RtlCreateUnicodeStringFromAsciiz is unwanted since the call to GetNamedSecurityInfoW checks for NULL and in this case sets ERROR_INVALID_PARAMETER. (Sylvain Petreolle)
  • ElfrOpenBELW/ElfrOpenELW/ElfrRegisterEventSourceW: MajorVersion and MinorVersion must be 1 as documented on MSDN. ReportEventW: Use RtlInitUnicodeString for ComputerName. (Michael Martin)
  • some small reg fixes (Christoph von Wittich)
  • revert a part of r41093 - A functions should call the W functions instead of the Nt functions (Christoph von Wittich)
  • sync RegQueryValueExA, RegQueryValueA, RegQueryValueW and RegSetValueExA to wine patch by Giannis Adamopoulos <johnyadams at hotmail dot com> See issue #4528 for more details. (Christoph von Wittich)
  • fix tabs/spaces, thanks to Christoph (Sylvain Petreolle)
  • Fix 2 advapi32:reg winetests registry.c:1229: Test failed: Expected ERROR_INVALID_HANDLE or ERROR_BADKEY, got 161 registry.c:956: Test failed: expected ERROR_INVALID_PARAMETER, got 998 by Victor Martinez( bug 4527 (Sylvain Petreolle)
  • ReportEventW: Set UNICODE_STRING ComputerName to empty string vice NULL to make rpcrt4 happy. (Michael Martin)
  • ReadEventLogA/ReadEventLogW: Check for lpBuffer for NULL and if so set nNumberOfBytesToRead to zero so that rpcrt4 does not access a NULL buffer. Set pnBytesRead and pnMinNumberOfBytesNeeded variables prior to checking for failure and returning FALSE. In preparation for implementation of EventLog. (Michael Martin)
  • sync advapi32/cred.c to wine 1.1.19 (Christoph von Wittich)







  • Hack around the system start up Dll Initialization Bug for GdiHandleTable. (James Tabor)
  • restore missing functions, fix build. (James Tabor)
  • Move more printer functions. (James Tabor)
  • Move and add to print driver file for printing functions. (James Tabor)
  • AbortDoc, Clear the correct flags. (James Tabor)
  • Fix typo: AbortProc returns TRUE to continue the print job or FALSE to cancel the print job. (James Tabor)
  • Fix crash in gdi32 bitmap winetest (Dmitry Chapyshev)
  • Add some checks of parametres (Dmitry Chapyshev)
  • Update DrawEscape, thanks Tommy. (James Tabor)
  • Update CancelDC and DrawEscape. (James Tabor)
  • Partially implement CancelDC, DrawEscape Add check of params for EnumObjects, SetMetaFileBitsEx (Dmitry Chapyshev)



  • Stub-implement NhGetInterfaceNameFromDeviceGuid and SetIpForwardEntryToStack. Fixes taskmgr (from windows) crash on network page (Dmitry Chapyshev)
  • Cleanup GetAdaptersAddresses. Add GetIfTable2 and GetIfEntry2 stubs based on janderwald patch (Sylvain Petreolle)
  • add a parameter check to GetAdaptersAddresses stub (fixes a winetest) (Christoph von Wittich)
  • export GetAdaptersAddresses stub (Sylvain Petreolle)
  • Samuel Serapion Fix iphlpapi.dll exports to match Windows XP/2003 one. (Aleksey Bragin)



  • TerminateProcess requires a valid handle Should fix 2 kernel32' winetests (Johannes Anderwald)
  • Fix one "kernel32_winetest mailslot" test (Dmitry Chapyshev)
  • Fix one "kernel32_winetest thread" (Dmitry Chapyshev)
  • Fix 2 kernel32:environ tests. The GetComputerNameEx ComputerNameDnsDomain tests can't succeed if we have no domain, as the function succeeds querying a zero length domain into a zero length buffer. (Sylvain Petreolle)
  • Fix 5 winetests for CreateProcessA/W (Dmitry Chapyshev)
  • Set priority only if PriorityClass != PROCESS_PRIORITY_CLASS_INVALID (Dmitry Chapyshev)
  • SearchPathA() Fix calculation of buffer size (fixes Skype crash) Patch by Mikhail Denisenko ( See issue #4526 for more details. (Dmitry Chapyshev)
  • Disable Wow64* functions for x86 build (Dmitry Chapyshev)
  • .spec -> .pspec (Dmitry Chapyshev)
  • a little bit of wine syncing - no real code changes - just to make syncing a bit easier next time (Christoph von Wittich)
  • GlobalReAlloc: SetUserValueHeap and SetUserFlagsHeap after RtlReAllocateHeap. LocalReAlloc: Add missing SetUserFlagsHeap after RtlAllocateHeap. SetUserValueHeap and SetUserFlagsHeap after RtlReAllocateHeap. (Michael Martin)
  • Revert part of r40893. MapViewOfFile, UnmapViewOfFile and FlushViewOfFile do not SetLastError on Success. Kernel32_winetest for codepage back to 0 failures. (Michael Martin)
  • GlobalReAlloc: Pass Flags vice HandleEntry->Flags to RtlSetUserFlagsHeap. Fixes 1 kernel32_winetest alloc test. (Michael Martin)
  • CreateFileMapping: SetLastError to ERROR_ALREADY_EXISTS for sections that already exists. SetLastError to ERROR_SUCCESS on success for all API's. More kernel32_winetest fixes for virtual. (Michael Martin)
  • Set error code if directory does not exist NtCreateFile -> NtOpenFile (Dmitry Chapyshev)
  • Sync profile functions with Wine 1.1.20 (Dmitry Chapyshev)
  • Remove RemoveVectoredExceptionHandler() stub from stubs.c, since it is a forward to ntll.RtlRemoveVectoredExceptionHandler. (Aleksey Bragin)
  • fix TzSpecificLocalTimeToSystemTime signature according to Wine & MSDN (Sylvain Petreolle)
  • Fix a problem with loading dlls in Iron See issue #4201 for more details. (Dmitry Chapyshev)
  • Re-simplify CreateProcessW (like r40484) (Dmitry Chapyshev)


  • WSPSelect() Fix checking of params Fix allocation size Tested on Firefox, Downloader, Skype Patch by Mikhail Denisenko ( with small changes See issue #4526 for more details. (Dmitry Chapyshev)
  • Fix a bad typo (Cameron Gutman)
  • Return a better status for STATUS_CANCELLED, STATUS_FILE_CLOSED, and STATUS_REMOTE_NOT_LISTENING (Cameron Gutman)
  • Handle STATUS_NETWORK_UNREACHABLE (Cameron Gutman)




  • Dutch translation of NetID DLL by Oscar van Egmond. Bug #4606. (Dmitry Gorbachev)


  • fix dll/win32/netshell/lang/nl-NL.rc:128:4: error: no newline at end of file (Sylvain Petreolle)
  • Netshell: update Dutch translation. Oscar van Egmond (oscar_04*AT*live*DOT*nl), bug #4582. (Dmitry Gorbachev)
  • Sync French translation with English original. (Dmitry Gorbachev)
  • Sync Dutch translation with English original. (Dmitry Gorbachev)



  • driverName can be null, display info.DriverName instead (Kamil Hornicek)
  • don't discard valid pixel formats and use flags only for ranking patch by Robert Millan (rmh dot reactos at aybabtu dot com) See issue #4384 for more details. (Kamil Hornicek)





  • SetupDiOpenClassRegKeyExW should ERROR_INVALID_CLASS when it fails TODO: NtOpenKey should fail when acessMask == 0 and a registry path is passed (Johannes Anderwald)
  • Fix line breaks Patch by Olaf Siejka (Cameron Gutman)
  • Fix 2 setupapi:devclass tests (Sylvain Petreolle)
  • LayoutFile directive for additional system-supplied INF files is optional, don't fail if it is not found. Fixes 2 tests in setupapi:devclass (Sylvain Petreolle)
  • We know that the function works, so no need to print a FIXME (HervГc Poussineau)
  • Stub CMP_UnregisterNotification Move SETUP_CreateDevicesList declaration to setupapi_private.h (Sylvain Petreolle)
  • fix 7 setupapi misc winetests (Christoph von Wittich)
  • sync SetupGetTargetPathW with wine fixes all setupapi query winetests (Christoph von Wittich)
  • fix 4 setupapi parser winetests (Christoph von Wittich)
  • import SetupEnumInfSectionsA/W from wine fixes setupapi parser winetest crash (Christoph von Wittich)


  • partial sync of shell32 shfldr_netplaces (Christoph von Wittich)
  • sync shell32 shelllink to wine 1.1.23 (Christoph von Wittich)
  • partial sync of shlfileop to wine 1.1.23 (Christoph von Wittich)
  • Show CDROM as CDROM in "Properties for Local Disk" dialog. Marcus Boillat, bug #4552. (Dmitry Gorbachev)
  • Fix bug #4552, introduced in r40826 by me. Patch by Marcus Boillat (ka6602-280*at*online*dot*de). (Dmitry Gorbachev)
  • Update some shell32 icons (Dmitry Chapyshev)
  • Fix build (HervГc Poussineau)
  • No need to create a DC to get the display depth Incidentally, this partly unregresses the /CONSOLE switch if blue.sys is installed (HervГc Poussineau)
  • Fix build (Johannes Anderwald)
  • Implement loading IShellIconOverlayIdentifier Implement retrieving overlay icon (Johannes Anderwald)
  • Convert some stuff to unicode (Dmitry Chapyshev)
  • Fix bug #4483, introduced in r40826 by me. (Dmitry Gorbachev)
  • Load property sheet handlers also from * key Fixes displaying custom file property handlers like for TortoiseSVN (Johannes Anderwald)
  • Pass IDataObject to the folder shell extension init function Fixes displaying property sheet handler extension for directories such as TortoiseSVN (Johannes Anderwald)
  • PropertySheetHandlers for directories are registered under Directory key (Johannes Anderwald)
  • Only call ReleaseStgMedium when IDataObject_GetData has succeeded Fixes explorer crashing on context menu click (Johannes Anderwald)
  • Revert my SHOpenWithDialog changes (Johannes Anderwald)
  • Call OpenWith dialog when no file association is found Partial wine syncAlexandre Julliard <> shell32: Add implementation of WOWShellExecute. The callback is probably not fully compatible, but apps are not supposed to use that function anyway. Vincent Povirk <> shell32: Add a message for opening files with no association. Marcus Meissner <> shell32: Fixed potential buffer overwrite in execute_from_key (Coverity). Vincent Povirk <> shell32: Use the NO_UI flag in ShellExecute. In my testing on Windows, I wasn't able to make ShellExecute display any error dialogs. Paul Chitescu <> shell32.dll: Return SE_ERR_FNF if file not found before checking for associations. (Johannes Anderwald)
  • sync SHELL_FindExecutable and SHELL_FindExecutableByOperation with wine 1.1.19 (Christoph von Wittich)
  • Revert as it hides bug 2769 See issue #2769 for more details. (Johannes Anderwald)
  • unbreak build (Johannes Anderwald)
  • Fix copyright message Rob Shearman <> shell32: Fix incorrect character count passed into RegEnumKeyExW in CreateDesktopEnumList. (Johannes Anderwald)
  • Fix window styles for IDD_SHELL_ABOUT_AUTHORS Fixes displaying shell about dialog (Johannes Anderwald)




  • Fix build (Dmitry Chapyshev)
  • ChangeDisplaySettingsExA: don't leak the memory for the converted DEVMODEW (Timo Kreuzer)
  • Verify user32 export list with Win 2k3 R2 (Dmitry Chapyshev)
  • partial wine sync (Christoph von Wittich)
  • add missing newline at eof (Christoph von Wittich)
  • don't close a dialog with <Return> when the OK button is disabled (Christoph von Wittich)
  • export DisplayExitWindowsWarnings and DisableProcessWindowsGhosting (Christoph von Wittich)
  • dmDriverExtra is zeroed before the call to ChangeDisplaySettingsEx. (James Tabor)
  • ChangeDisplaySettingsA and ChangeDisplaySettingsW should reset dmDriverExtra to 0. (Sylvain Petreolle)
  • Remove an unused variable that survived the Marletting. (Dmitry Gorbachev)
  • sync LISTBOX_DeleteItem and LISTBOX_RemoveItem with wine 1.1.22 (Christoph von Wittich)
  • better question icon in tango look (as long as tango icon set doesn't provide this icon) source in reactos/media/graphics (Matthias Kupfer)
  • Change some icons to Tango Update oic_sample.ico (Dmitry Chapyshev)
  • continue "marletting" use marlett font for scrollbar control TODO: scrollbar size grip with marlett (Matthias Kupfer)
  • Improved fix for edit control context menu. Send appropriate message based on return value of TrackPopupMenu and remove handling of WM_MENUSELECT as its no longer needed. Patch sent to (Michael Martin)
  • edit.c: Add TPM_RETURNCMD flag to TrackPopupMenu so that WM_COMMAND messages are not sent to the edit control. Use WM_MENUSELECT vice WM_COMMAND to determine which clipboard message to send. Fixes vb apps edit context menu and maybe others. Bug #4404 (Michael Martin)
  • Revert 40628 as it breaks others applications menus. (Michael Martin)
  • menu.c: Only send WM_COMMAND messages to the top parent window. edit.c: Use WM_MENUSELECT vice WM_COMMAND to determine which clipboard message to send. Fixes vb apps edit context menu and maybe others. Bug #4404 (Michael Martin)
  • Don't crash copying from a null pointer in a non client size calculation Several thousand more user32 win winetests should be executed now (Gregor Schneider)




  • Sync wininet with Wine 1.1.22. Tested on Firefox 2.0 and Downloader (Dmitry Chapyshev)


Regression tests


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