Difference between revisions of "ChangeLog-0.3.11"

From ReactOS Wiki
Jump to: navigation, search
m (KE: fix formatting)
Line 111: Line 111:
switching from the attached process. ([[Stefan Ginsberg]])
switching from the attached process. ([[Stefan Ginsberg]])
* Removed a hack from KiGetMachineBootPointers and set the TSS selector properly in KiRosPrepareForSystemStartup instead for FreeLdr boot style. ([[Stefan Ginsberg]])
* Removed a hack from KiGetMachineBootPointers and set the TSS selector properly in KiRosPrepareForSystemStartup instead for FreeLdr boot style. ([[Stefan Ginsberg]])
* Fixed a critical bug in KeFindConfigurationEntry; it passed NULL to KeFindConfigurationNextEntry
* Fixed a critical bug in KeFindConfigurationEntry; it passed NULL to KeFindConfigurationNextEntry which expected a pointer to a value containing NULL. This was hidden by the FreeLdr boot style as that boot style maps NULL, but got exposed by WinLdr boot style as NULL is not mapped there. ([[Stefan Ginsberg]])
  which expected a pointer to a value containing NULL. This was hidden by the FreeLdr boot style as that boot style maps NULL, but got exposed by WinLdr boot style as NULL is not mapped there. ([[Stefan Ginsberg]])
=== MM ===
=== MM ===

Revision as of 10:16, 16 November 2009

This is the changelog for ReactOS™ version 0.3.11 (released *pending*), 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.10 (released 5th July, 2009).



Generic 0.3.11 Changes










  • Italian translations for spider, explorer_new, ks.inf, usetup (Gabriel Ilardi)








  • Generic: Updated resources for explorer_new, added english ks.inf (Gabriel Ilardi)





Host Tools






Bootloader (FreeLoader)

Kernel and Executive (NTOSKRNL)

  • Make use of the _SEH2_YIELD macro when returning from an exception instead of pre-initializing status codes and checking them after leaving the SEH block. (Stefan Ginsberg)
  • Don't use ExSystemExceptionFilter in SEH filters if we know the caller is user mode. (Stefan Ginsberg)
  • Fixed the remaining issues for running the MP kernel (only on UP so far). Implemented stubbed code in the scheduler, DPC handling and context switch code and fixed various bugs in the spinlock implementation. (Stefan Ginsberg)


  • Fixed support for sending second chance exceptions to user mode debuggers. (Stefan Ginsberg)



  • Calling NtLoadDriver on an already loaded driver should fail with STATUS_IMAGE_ALREADY_LOADED. Fixes one test for kmtest driver tests and a bugcheck when loading drivers a second time. (Michael Martin)
  • Don't call ExFreePool for null pointers (Johannes Anderwald)
  • Don't touch the freed buffer in case of an error (Amine Khaldi)
  • Fix IoRegisterDeviceInterface, IoSetDeviceInterfaceState to handle reference strings (Johannes Anderwald)


  • Continued the implementation of kernel support for debugging with WinDbg/KD. Implemented missing handling of various functionality in the KD support APIs and fixed missing or broken support in other areas. Debugging ReactOS kernel mode with WinDbg now works quite well. (Stefan Ginsberg)



  • Fixed a bug in KeDetachProcess and KeUnstackDetachProcess that caused a switch from the original process to itself instead of

switching from the attached process. (Stefan Ginsberg)

  • Removed a hack from KiGetMachineBootPointers and set the TSS selector properly in KiRosPrepareForSystemStartup instead for FreeLdr boot style. (Stefan Ginsberg)
  • Fixed a critical bug in KeFindConfigurationEntry; it passed NULL to KeFindConfigurationNextEntry which expected a pointer to a value containing NULL. This was hidden by the FreeLdr boot style as that boot style maps NULL, but got exposed by WinLdr boot style as NULL is not mapped there. (Stefan Ginsberg)


  • NtAllocateVirtualMemory: Add check to make sure that BaseAddress + RegionSize is inside MemoryArea. For AllocationType of MEM_RESET add FIXME's and return STATUS_SUCCESS, without modifying attributes of region. Fixes 2 kernel32 virtual tests. (Michael Martin)
  • NtMapViewOfSection: When referencing the section object by handle, don't assume access mask of SECTION_MAP_READ. Access mask must be determined from page protection attributes passed in Protect parameter. Fixes 5 winetests for kernel32 virtual. (Michael Martin)
  • MiReserveAlignedSystemPtes: Add missing lock release (Johannes Anderwald)
  • Fixed recursive spinlock acquisition in the Memory Manager introduced by the rewrite: the old Mm calls certain routines for performing operations on PFNs, and those routines acquire the PFN lock, while the new Mm holds the PFN lock while working with PFNs, including calling those routines. Moved out spinlock acquire/release to the callers of those functions instead. (Stefan Ginsberg)
  • Added missing spinlock release to MiReserveAlignedSystemPtes. (Stefan Ginsberg)
  • Added missing synchronization for PsLoadedModuleList in certain cases. (Stefan Ginsberg)


  • Fixed assumptions that memory allocated by ObCreateObject is zero-initialized (it shouldn't be) and removed the object zeroing hack. (Stefan Ginsberg)


Hardware Abstraction Layer (HAL)

  • Reimplemented HalpCalibrateStallExecution with a more accurate implementation to determine the stall count factor for KeStallExecutionProcessor. (Stefan Ginsberg)


NT System Library (NTDLL)

Run Time Library (RTL)

  • Map STATUS_NOT_FOUND to ERROR_NOT_FOUND (Johannes Anderwald)
  • Reimplemented RtlRaiseException and RtlRaiseStatus in assembly for x86 so they do not corrupt non-volatile registers when saving the callers context. (Stefan Ginsberg)

Kernel Mode Drivers

Audio Stack


  • Implement DllInitialize, BdaPropertyGetPinControl, BdaPropertyNodeTypes, BdaPropertyPinTypes, BdaInitFilter, BdaCreateTopology, BdaCheckChanges, BdaCommitChanges, BdaCreateFilterFactory, BdaCreateFilterFactoryEx, BdaCreatePin, BdaMethodCreatePin, BdaFilterFactoryUpdateCacheData, BdaGetChangeState, BdaMethodCreateTopology, BdaMethodDeletePin, BdaPropertyTemplateConnections, BdaStartChanges, BdaUninitFilter, BdaValidateNodeProperty (Johannes Anderwald)
  • Define automation tables for Filter & Pin (Johannes Anderwald)
  • Plug in automation tables when creating a new filter factory / pin (Johannes Anderwald)
  • Add BDA filter context to object bag, so that it gets freed automatically later (Johannes Anderwald)





  • Fix a bug in KsCancelIo which accessed already freed memory (Johannes Anderwald)
  • Activate handling of requests of type KSPROPERTY_TYPE_BASICSUPPORT (Johannes Anderwald)
  • Return correct status code in the GUID_NULL handler (Johannes Anderwald)
  • Store KSPROPERTY_SET in Irp when using KsPropertyHandler (Johannes Anderwald)
  • Fix a bug in KsPinDataIntersection (Johannes Anderwald)
  • Fix a bug when canceling irps (Johannes Anderwald)
  • Fix a critical bug in the counted worker implementation (Johannes Anderwald)
  • Check if NodeId is out of bounds (Johannes Anderwald)
  • Return correct status code (Johannes Anderwald)
  • Retrieve the correct pin name (Johannes Anderwald)
  • Implement KSPROPERTY_PIN_NAME properly (Johannes Anderwald)
  • KsPinPropertyHandler does *NOT* set Status in the IRP (Johannes Anderwald)
  • The Category member is LPGUID not GUID (Johannes Anderwald)
  • Check if there is a category member (Johannes Anderwald)
  • Fix 'Assertion 'WorkItem->List.Flink == NULL' failed at ntoskrnl\ex\work.c' (Johannes Anderwald)
  • Fix a bug spotted by Timo (Johannes Anderwald)
  • Store Object Header in FsContext2 (Johannes Anderwald)
  • Fix allocation of create item entry in KsAllocateObjectCreateItem (Johannes Anderwald)
  • Fix de-referencing in Ks[De]ReferenceSoftwareBusObject & Ks[De]ReferenceBusObject (Johannes Anderwald)
  • Fake success in KsEnableEvent (Johannes Anderwald)
  • Check if the list empty in KspFreeEventList (Johannes Anderwald)
  • Handle GUID_NULL in KspPropertyHandler (Johannes Anderwald)
  • Return STATUS_MORE_ENTRIES if outputbuffer is too small (Johannes Anderwald)
  • Zero struct in KsRegisterWorker (Johannes Anderwald)
  • Fix calling property handler in IKsFilter_DispatchDeviceIoControl Found by (Amine Khaldi)
  • Implement handling of KSPROPERTY_TYPE_BASICSUPPORT (Johannes Anderwald)
  • Fix a few bugs in KsPinPropertyHandler & KsTopologyPropertyHandler (Johannes Anderwald)
  • Implement CBaseUnknown class functions in C! (KJK::Hyperion)
  • Store input buffer in Irp->AssociatedIrp.SystemBuffer (Johannes Anderwald)
  • Implement KsCopyObjectBagItems, KsCreateBusEnumObject, KsProbeStreamIrp, KsGetFirstChild, KsGetNextSibling, IKsFilter_fnAddProcessPin, IKsFilter_fnRemoveProcessPin, KsDispatchSpecificProperty, KsPropertyHandler, KsMergeAutomationTables, KsStreamPointerDelete, KsStreamPointerScheduleTimeout, KsStreamPointerCancelTimeout, KsPinGetFirstCloneStreamPointer, KsStreamPointerGetNextCloneKsPropertyHandlerWithAllocator, KsFastPropertyHandler, KsValidateConnectRequest, IKsPin_DispatchDeviceIoControl, IKsPin_Close, KsQueryInformationFile, KsStreamIo, KsMoveIrpsOnCancelableQueue, KsRegisterFilterWithNoKSPins, _KsEdit, KsCacheMedium, KsHandleSizedListQuery, KsAcquireResetValue, KsCompletePendingRequest, KsAllocateExtraData, KsFreeEventList, KsDisableEvent, KsAddEvent, KsDefaultAddEventHandler, KsPinAttachAndGate, KsPinAttachOrGate, KsPinGetAndGate, KsDeviceSetBusData, KsDeviceGetBusData, KsGetPinFromIrp, KsPinAcquireProcessingMutex, KsPinGetConnectedPinDeviceObject, KsPinGetConnectedFileObject, KsPinGetConnectedPinInterface, KsPinGetNextSiblingPin, KsPinGetParentFilter, KsPinRegisterFrameReturnCallback, KsPinRegisterHandshakeCallback, KsPinRegisterIrpCompletionCallback, KsPinRegisterPowerCallbacks, KsPinReleaseProcessingMutex, KsAcquireControl, KsReleaseControl, KsFilterAddTopologyConnections, KsFilterCreatePinFactory, KsFilterAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsFilterGetChildPinCount, KsFilterRegisterPowerCallbacks, KsGetFilterFromIrp, KsGetObjectFromFileObject, KsGetObjectFromFileObject, KsGetObjectTypeFromIrp, KsGetParent, KsGetObjectFromFileObject, KsGetObjectFromFileObject, KsGetObjectTypeFromIrp, KsGetParent, KoDriverInitialize, KoDeviceInitialize, KsReferenceBusObject, KsReferenceSoftwareBusObject, KsDereferenceSoftwareBusObject, KsDereferenceBusObject, KsGetFirstChild, KsGetImageNameAndResourceId, KsMapModuleName, KsAcquireDevice, KsReleaseDevice, KsTerminateDevice, KsQueryObjectAccessMask, KsQueryObjectCreateItem, KsQueueWorkItem, KsIncrementCountedWorker, KsDecrementCountedWorker, KsRegisterCountedWorker, KsUnregisterWorker, KsRegisterWorker, KsCancelIo, KsReleaseIrpOnCancelableQueue, KsRemoveIrpFromCancelableQueue, KsRemoveSpecificIrpFromCancelableQueue, KsAddIrpToCancelableQueue, KsCancelRoutine, KsValidateAllocatorCreateRequest, KsValidateClockCreateRequest, KsValidateTopologyNodeCreateRequest, KsAddObjectCreateItemToObjectHeader, KsGetDevice, KsDefaultDispatchPnp, KsDefaultDispatchPower, KsDefaultForwardIrp, KsReadFile, KsSetInformationFile, KsQueryInformationFile, KsCreateAllocator, KsCreateDefaultAllocatorEx, KsValidateAllocatorFramingEx, KsSetDevicePnpAndBaseObject, KsQueryDevicePnpObject, KsSetTargetState, KsSetTargetDeviceObject, KsSetPowerDispatch, KsFreeDeviceHeader, KsFreeObjectHeader, KsAllocateObjectCreateItem, KsFreeObjectCreateItem, KsFreeObjectCreateItemsByContext, KsCreateDefaultSecurity, KsCreateClock, KsCreateDefaultClock, partly implement KsAllocateDefaultClockEx, KsFreeDefaultClock, KsGetDefaultClockState, KsSetDefaultClockState, KsGetDefaultClockTime, KsSetDefaultClockTime, KsInitializeDevice, KsGetDeviceForDeviceObject, KsCreateFilterFactory, KsFilterFactorySetDeviceClassesState, KsFilterFactoryGetSymbolicLink, KsFilterFactoryAddCreateItem, KsLoadResource, KsDispatchQuerySecurity, KsDispatchSetSecurity, KsWriteFile, KsDefaultIoCompletion, KsEnableEvent, KsEnableEventWithAllocator, KsDiscardEvent (Johannes Anderwald)
  • Implement attach of filter factories to the device header (Johannes Anderwald)
  • Filter dispatch is optional, handle it when creating new filters (Johannes Anderwald)
  • Fix allocation check by (Amine Khaldi)
  • Fix uninitialized return value when the list is empty (Johannes Anderwald)
  • Fix a horrible bug where the end of the list wasnt checked by the source list but the destination list by (Amine Khaldi)
  • Acquire Spinlock at dpc level (Johannes Anderwald)
  • Release cancel spinlock at correct level (Johannes Anderwald)
  • Fix a desastreous bug in KsRemoveIrpFromCancelableQueue (Johannes Anderwald)
  • Remove KsGetChildCreateParameter, it is not exported in NT 5.1 KS (Johannes Anderwald)
  • Start Implementing IKsPin interface (Johannes Anderwald)
  • Increment PinInstanceCount when a pin has succcessfully been created (Johannes Anderwald)
  • Initialize pin dispatch table (Johannes Anderwald)
  • Add create items for allocator, clock, node create requests (Johannes Anderwald)
  • Add create item for creation of pins and topology nodes (Johannes Anderwald)
  • Implement pin creation handler (Johannes Anderwald)
  • Copy Filter descriptor for each instantiated filter (Johannes Anderwald)
  • Create object bag for IKsFilter, IKsFilterFactory and IKsDevice (Johannes Anderwald)
  • Fix storing of device descriptor in KsInitializeDriver, KsAddDevice (Johannes Anderwald)
  • Remove DriverEntry as ks is kernel mode dll (Johannes Anderwald)
  • Fix unimplemented tags (Johannes Anderwald)
  • Use double in spec for functions taking longlong arguments (Colin Finck)
  • Use KSQUEUE_SPINLOCK_IRP_STORAGE macro for access the stored spin lock (Johannes Anderwald)
  • Remove old irp queue implementation (Johannes Anderwald)
  • Use KSSTRING instead of hardcoding object class (Johannes Anderwald)
  • Rewrite KSCREATE_ITEM handling to support clocks, nodes, allocators. (Johannes Anderwald)
  • Store create items in list instead of an array. Consequently, the code can be re-used for KSDEVICE_HEADER / KSOBJECT_HEADER functions. (Johannes Anderwald)
  • Implement by using KSBASIC_HEADER struct which must be positioned before its object specific (PKSFILTER, PKSFILTERFACTOR, PKSPIN) (Johannes Anderwald)
  • Remove a hack from KspCreateObjectType (Johannes Anderwald)
  • Return the correct device object in KsQueryDevicePnpObject (Johannes Anderwald)
  • Remove KspClose, KspRead, KspWrite, KspFlushBuffers, KspQuerySecurity, KspSetSecurity and all these IOCTL in KspDispatchIrp (Johannes Anderwald)
  • Rewrite KsDispatchIrp to handle IRP_MJ_CREATE & IRP_MJ_POWER, IRP_MJ_PNP for AV Stream minidrivers and forward IRP_MJ_SYSTEM_CONTROL requests to the registered pnp base object (Johannes Anderwald)
  • Unsupported IOCTLs are now completed with KsDispatchInvalidDeviceRequest (previously leaked) (Johannes Anderwald)
  • Implement registering of device interface for AVStream drivers (Johannes Anderwald)
  • Add KsFilterFactoryUpdateCacheData (Johannes Anderwald)
  • Fix a bug which was responsible for most audio-related crashes (Gregor Schneider)









  • Synched the UniATA Inf to the internal support list. Now ROS can detect all supported SATA Controllers even after 1st stage and properly shows them in the HW Wizard. (Daniel Reimer)


  • Initialize DPC before connecting interrupt with IoConnectInterrupt in ehci_alloc, ohci_alloc and uhci_alloc. Probably fixes crashes on real hardware. (Michael Martin)



Static Libraries


  • CmpPrepareKey: Call CmpPrepareKey vice CmpPrepareIndexOfKeys for cell signature of CM_KEY_NODE_SIGNATURE. Fixes ASSERT in cminit.c that occurs on reboot after installing some applications. (Michael Martin)



Win32™ Personality

User mode subsystem server (CSRSS)

Kernel-mode subsystem server (Win32K)



RPC Server



Control panel applets






Win32™ Applications










Win32™ Libraries



  • Added 11 new Backs for my bavarian cards dll. Way better than using 12 times the same (Daniel Reimer)



  • Implement IDirectSoundCaptureBuffer8::Stop, IDirectSoundCaptureBuffer8::Lock, IDirectSoundCaptureBuffer8::Unlock, IDirectSound8::GetCaps, IDirectSound8::Compact, IDirectSoundCaptureBuffer::GetCaps, IDirectSoundCaptureBuffer::GetCurrentPosition, IDirectSoundCaptureBuffer::GetFormat, IDirectSoundCaptureBuffer::GetStatus, IDirectSoundCaptureBuffer::Start, DirectSoundEnumerateA, DirectSoundEnumerateW, DirectSoundCaptureEnumerateA, DirectSoundCaptureEnumerateW, GetDeviceID
  • Implement changing the stream format for secondary buffers
  • Fix checking of flags found Ged Murphy
  • Register IDirectSound8, IDirectSoundCapture8 with COM
  • Verify if wrong guid is passed in IDirectSound8::Initialize
  • Check for invalid guids passed to IDirectSoundCapture::Initialize
  • Close pin handle when the capture buffer is released
  • Compute a compatible pin format when the format is not supported natively by the driver
  • Fix shadowing of global variable (Usurp)
  • Verify that directsound global info has already initialized in IDirectSound8::Initialize
  • DllRegisterServer / DllUnregisterServer are taken from Wine DSound implementation (John K. Hohm)
  • Implement stereo to mono channel conversion (Johannes Anderwald)
  • Create a thread which performs the mixing (Johannes Anderwald)
  • Add more checks IDirectSoundCapture::CreateCaptureBuffer (Johannes Anderwald)
  • Implement IDirectSoundNotify interface (Johannes Anderwald)








  • Schedule a rename operation also for ERROR_USER_MAPPED_FILE. Prevents msi from aborting an install when attempting to overwrite font files. Open Office should now install successfully. (Michael Martin)










  • DIALOG_CreateIndirect: Save the current focused window after sending WM_INITDIALOG as the current window with focus could have been set in the dialog's procedure. Fixes setting focus on Open and Close dialogs to the FileName edit control in OpenOffice. (Michael Martin)
  • GetDlgItem: Change to WINE's implementation as ours was incorrect. Remove function GetDlgItemEnumProc and struct GETDLGITEMINFO as they are no longer needed. Fixes drawing issues in Open and Save dialogs for OpenOffice. (Michael Martin)
  • Fix 2 user32 winstation test failures (Giannis Adamopoulos)
  • Restructure and simplify CreateCursorFromData, allow to create colored icons (Gregor Schneider)
  • Handle WM_SETREDRAW messages differently in the DefWndProc, riched20 regression (Gregor Schneider, #4098)
  • Only set text resource in DefWndProcA on WM_NCCREATE if passed and exists (Gregor Schneider, #4766)


- Set ProgramFiles, CommonProgramFiles environment variable (Johannes Anderwald)





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