Difference between revisions of "Ntoskrnl.exe"

From ReactOS Wiki
Jump to: navigation, search
m
m
Line 388: Line 388:
 
* Improve many security-related functions ([[Eric Kohl]])
 
* Improve many security-related functions ([[Eric Kohl]])
 
* Implement basic functionality to ingerit an objects security descriptor ([[Eric Kohl]])
 
* Implement basic functionality to ingerit an objects security descriptor ([[Eric Kohl]])
 +
 +
[[ChangeLog-0.2.5]]
 +
 +
* Debug symbols from SYM files loaded and used in DBG builds ( they used to only work in KDBG builds ) - several SYM-related bugs fixed ([[Royce Mitchell III]])
 +
* Floating point and SSE state saving for uni- and multiprocessor systems ([[Gregor Anich]])
 +
* Unmasked floating point and SSE exception support ([[Gregor Anich]])
 +
* Various fixes to registry handling ([[Eric Kohl]], [[Filip Navara]])
 +
* Rewrote APC implementation ([[Alex Ionescu]])
 +
* Rewrote/improved most of the DPC implementation ([[Alex Ionescu]])
 +
* Allowed ReactOS to use 2GB/2GB Kernel/User memory model ([[Alex Ionescu]])
 +
* Implemented KeSetEventBoostPriority, KeFindConfigurationEntry, KeDeregisterBugCheckCallback, KeIsAttachedProcess, KeQueryActiveProcessors, KeSetDmaIoCoherency, KeSetTimeIncrement, KeQueryRuntimeThread, KeUpdateRunTime, KeUpdateSystemTime, KeAreApcsDisabled, KeFlushEntireTb, KeIsExecutingDpc, KeSetKernelStackSwapEnable, KeQueryPriorityThread, KeRevertToUserAffinityThread, KeSetIdealProcessorThread, KeSetSystemAffinityThread, KeTerminateThread, KeStackAttachProcess, KeUnstackDetachProcess, ExVerifySuite, ExInterlockedFlushSList, ExSystemExceptionFilter, ExRaiseException, ExGetCurrentProcessorCpuUsage, ExGetCurrentProcessorCounts, PsRevertThreadToSelf, ExAcquireRundownProtection, ExAcquireRundownProtectionEx, ExInitializeRundownProtection, ExReInitializeRundownProtection, ExReleaseRundownProtection, ExReleaseRundownProtectionEx, ExRundownCompleted, ExWaitForRundownProtectionRelease, ExAllocatePoolWithQuota, ExAllocatePoolWithQuotaTag, PsChargePoolQuota, PsChargeProcessNonPagedPoolQuota, PsChargeProcessPagedPoolQuota, PsChargeProcessPoolQuota, ExAllocatePoolWithTagPriority ([[Alex Ionescu]])
 +
* Fixed a couple of I/O Manager bugs related to IRPs ([[Alex Ionescu]])
 +
* Implemented basic Process Quota support ([[Alex Ionescu]])
 +
* Use 64k granularity for virtual memory ([[Gé van Geldorp]])
 +
* Add shutdown messages ([[Gé van Geldorp]])
 +
* PagedPool modified to keep track of Tags and a couple support functions added to access this information ([[Royce Mitchell III]])
 +
* Added support to KDBG to query the tag of a memory block ([[Art Yerkes]])
 +
* Complete rewrite of PagedPool - better than 800% performance improvement, designed to support multiple pools (SpecialPool?), and designed to help better catch misused memory under it's care. ([[Royce Mitchell III]])
 +
* Improved low level page mapping ([[Hartmut Birr]])
 +
* Implemented PAE (physical address extension) mapping ([[Hartmut Birr]])
 +
* Implemented the no execution feature for AMD 64 cpus ([[Hartmut Birr]])
 +
* Made a tlb entry invalid on all processors if the mapping is deleted or changed. ([[Hartmut Birr]])
 +
* Implemented the driver loading by the sequence of tag entries in the GroupOrderList key ([[Hartmut Birr]])
 +
* Rewrote parts of the Process & Thread time count functions ([[Hartmut Birr]])
 +
* Rewrote (copied from ntdll) parts of the relocation and import fixup code. Don't load no-load sections at the end of the  driver.  Don't relocate the relocation section itself. Set the correct page protection for section which are executable. ([[Hartmut Birr]])
 +
* Fixed the scanning for boot options. ([[Hartmut Birr]])
 +
* Started the implementation of the ipi calls. Implemented KiIpiSendRequest for simple requests. ([[Hartmut Birr]])
 +
* Changed the init sequence in KeInit1 and KePrepareForApplicationProcessorInit. Fixed the pae mode initialisation for application processors. ([[Hartmut Birr]])
 +
* Prevent from terminate a thread for twice. ([[Hartmut Birr]])
 +
* Replaced PiThreadLock with the dispatcher databae lock. Fixed some problems while setting/changing the affinity of a thread. ([[Hartmut Birr]])
 +
* Improved KeBugCheckWithTf for smp machines. ([[Hartmut Birr]])
 +
* Split KdInitSystem in two phases, to enable debug prints (serial line and bochs) in the very early boot stage (before the initialisation from hal). ([[Hartmut Birr]])
 +
* Get rid of the "global" system process handle ([[Thomas Weidenmueller]])
 +
* Better, but as of now - untested - implementation of rundown protections ([[Thomas Weidenmueller]])
 +
* Fixed prototypes of NtSetEvent(), NtResetEvent(), NtQueryEvent(), NtPulseEvent(), NtOpenEvent(), NtCreateEvent(), NtCreateMutant(), NtQueryMutant(), NtQuerySemaphore(), NtQueryTimer(), NtReleaseMutant(), NtReleaseSemaphore(), NtSetTimerResolution(), NtSetTimer(), NtCreateProfile() and NtQueryIntervalProfile() ([[Thomas Weidenmueller]])
 +
* Implemented PsGetProcessJob(), PsGetJobLock(), PsGetJobSessionId() and PsGetJobUIRestrictionsClass() ([[Thomas Weidenmueller]])
 +
* Group Threads into processes instead of a global thread list ([[Thomas Weidenmueller]])
 +
* Got rid of all reactos-specific fields in the E/KTHREAD structure and make them match the win2k layout ([[Thomas Weidenmueller]])
 +
* Added preliminary ClientID management - currently only used for thread IDs ([[Thomas Weidenmueller]])
 +
* Disabled thread event pair functions by default (NT4 only) as they require a field in the ETHREAD structure that is not present in more recent versions ([[Thomas Weidenmueller]])
 +
* Removed some bad window station/desktop hacks ([[Thomas Weidenmueller]])
 +
* Added boot logging ([[Eric Kohl]])
 +
* Support changing the system time and timezone ([[Eric Kohl]])
 +
* Fix registry bugs ([[Eric Kohl]])
 +
* Support the FILE_APPEND_DATA file access right ([[Eric Kohl]])

Revision as of 05:46, 13 March 2012

See Also

Techwiki:Ntoskrnl

http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/?view=log

ChangeLog-0.0.17

  • Added multiboot support to ntoskrnl
  • Kernel can bow be booted with GRUB

ChangeLog-0.0.18

  • Section and general memory manager enhancements
  • Changed irq handler from C to assembler
  • Established forwarded exports
  • Implemented profiling
  • Initial work on exception handling
  • DMA support
  • Kernel debugger
  • Trace facility
  • Added Intel MultiProcessor Specification support
  • Began building PnP manager device tree
  • Registry improvements
  • Work on the filesystem cache
  • Named pipe improvements
  • Implemented atoms in ntoskrnl
  • Enabled FASTCALL calling convention
  • Rewrote stack allocation


ChangeLog-0.0.19

ChangeLog-0.0.20

  • Implemented NtCreateToken and fixed up NtQueryInformationToken() Joseph Galbraith
  • Minimize access to the module object via the object manager. Eric Kohl
  • Use module list for internal module management. Eric Kohl
  • Protect module list with a spinlock. Eric Kohl
  • Registry improvements: Eric Kohl
    • Improved registry initialization
    • Registry-based driver loading for system-start drivers and auto-start drivers
    • Implemented registry links
  • PICE now loaded automatically Eric Kohl
  • Improved thread support David Welch
  • Fixed a long-standing hack to open symbolic link objects Eric Kohl
  • Implemented the ability to create suspended threads Eric Kohl
  • Implemented binary tree, splay tree and hash table routines Casper Hornstroup
  • Moved the hardcoded command line string from ntoskrnl to loadros Eric Kohl
  • Use NT-compatible (VPB-based) mounting mechanism Eric Kohl

ChangeLog-0.0.21

ChangeLog-0.1.0

  • Implemented NtProtectVirtualMemory; msvcrt apps now work (David Welch)
  • Memory management improvements,
  • Fixes for SMP in the memory manager,
  • Enable/Disable the irq in KeConnectInterrupt/KeDisconnectInterrupt,
  • Enabled caching of directories and fat segments,
  • Write back dirty pages from cache manager at shutdown (Hartmut Birr)
  • File locking (Gunnar Dalsnes)
  • Registry hive locking, packing value names,
  • Deferred hive synchronization (Eric Kohl)
  • Profiler (Casper Hornstrup)

ChangeLog-0.1.1

ChangeLog-0.1.3

ChangeLog-0.1.4

  • Implementation of Ke(Save/Restore)FloatingPointState (Gé van Geldorp)
  • Made existing eventpair code more efficient and added support for associating eventpairs with * threads and signaling them that way (Skywing)
  • RtlRaiseException user mode implementation (Vizzini)
  • KiRaiseUserExceptionDispatcher/KeRaiseUserException to raise user exceptions from kernel mode (Vizzini)
  • Implemented the allocation type NonPagedPoolCacheAligned/NonPagedPoolCacheAlignedMustS (Hartmut Birr)
  • Process fixes (Hartmut Birr)
  • Plug and Play manager improvements (Filip Navara)
  • Implemented NtUnloadDriver(), partial IoGetDeviceProperty(), IoGetDmaAdapter(), IoIsWdmVersionAvailable(), ExFreePoolWithTag (Filip Navara)
  • Check for presence of \reactos\ntoskrnl.exe instead of REACTOS disk label to identify the boot cdrom device (Eric Kohl)

ChangeLog-0.1.5

  • Improved implementation of IoMapTransfer, Implemented KeRemoveDeviceEntryQueue (Gunnar Dalsnes)

ChangeLog-0.2.0

  • Implemented driver reinitialization (Eric Kohl)
  • Added "addr" "x" and "tlist" commands to kdbg (Art Yerkes)
  • Added the beginnings of an implementation of NtSetInformationToken (Art Yerkes)
  • Implemented shared segments for images (Hartmut Birr)
  • Work on the error log worker (Eric Kohl)
  • IoReuseIrp, IoQueueThreadIrp, IoEnqueueIrp implementations (Gunnar Dalsnes)
  • APC improvements (Gunnar Dalsnes)
  • Exception handler on broken usermode stack pointer fix (Mike Nordell)

ChangeLog-0.2.1

  • Print userland addresses where possible in bugchecks (Art Yerkes)
  • InsertAscendingList adaption (Gunnar Dalsnes)
  • KiAcquire/ReleaseSpinLock adaption (Gunnar Dalsnes)
  • Added KiAcquire/ReleaseSpinLock (Gunnar Dalsnes)
  • KiAcquire/ReleaseSpinLock adaption (Gunnar Dalsnes)
  • Attempt to fix the display corruption problems when using bootvid.sys on certain hardware (Filip Navara)
  • Do not make NtSecureConnectPort fail: for now direct the call to NtConnectPort (Emanuele Aliberti)
  • NtOpenKey() should return a better status value if the desired key does not exist (Eric Kohl)
  • Implementation of RtlStringFromGUID, IoOpenDeviceInterfaceRegistryKey and IoGetDeviceInterfaceAlias (Matthew Brace)
  • Fixed some problems which occurs if a read only segment is changed to write and back to read only and if such a segment (or a page from such a segment) is paged out and reloaded again (Hartmut Birr)
  • Check for a privat page and change only the page protection for such a page in MmAccessFaultSectionView (Hartmut Birr)
  • Only lock a new page on exit from AccessFaultSectionView (Hartmut Birr)
  • Fixed querying and enumerating the subkeys of HKEY_LOCAL_MACHINE; this fixes bug #78 (Eric Kohl)
  • Start parsing at the root object when an object path needs to be reparsed (Art Yerkes)
  • Use macros for LPC message limits in current LPC implementation (Emanuele Aliberti)
  • Implement RtlFindLeastSignificantBit(), RtlFindMostSignificantBit() and _itow() (Eric Kohl)
  • LPC: initial work on NT/ROS compatibility (Emanuele Aliberti)
  • Add byte swap functions (Eric Kohl)
  • Set the previous pointer from the next block, if some blocks was merged (in add_to_free_list) (Hartmut Birr)
  • Free or recycle the remaining path string after a call to ObFindObject (Hartmut Birr)
  • Work on thread-awareness in gdbstub (Gé van Geldorp)
  • Always lock the pages in MmProbeAndLockPages (Hartmut Birr)
  • Locked the pages in MmCommitPagedPoolAddress, if it is necessary (Hartmut Birr)
  • Try to avoid crashing when dumping out a corrupted stack (David Welch)

ChangeLog-0.2.2

  • Set the previous pointer from the next block, if some blocks was merged (in add_to_free_list) (Hartmut Birr)
  • Free or recycle the remaining path string after a call to ObFindObject (Hartmut Birr)
  • Lock the pages always in MmProbeAndLockPages (Hartmut Birr)
  • Locked the pages in MmCommitPagedPoolAddress, if it is necessary (Hartmut Birr)
  • Marked a cache segment as page out in progress to prevent from recursive calls to MmPageOutPhysicalAddress; fixed bug 220 (Hartmut Birr)
  • Protected the callback stack list with a spinlock (Hartmut Birr)
  • Made it possible to allocate a pageop only if no other pageop for the given address exists (Hartmut Birr)
  • Try to pageout a page only if no other access to the page exist (Hartmut Birr)
  • Gave a free page only to the next waiting request (in MmReleasePageMemoryConsumer), if sufficient free pages are available (Hartmut Birr)
  • Initialized the object tag to prevent the tag 0xcccccccc (Hartmut Birr)
  • Removed dirty loading of symbol files from ExpInitializeExecutive (Hartmut Birr)
  • Fixed the loading of symbol files (Hartmut Birr)
  • Try to avoid crashing when dumping out a corrupted stack (David Welch)
  • Avoid a crashing when trying to process an exception early in the boot process (David Welch)
  • Use an event rather than a semaphore to wake up the thread that writes debug output to disk (David Welch)
  • Added basic tracing, breakpoints and disassembly to the kernel debugger (David Welch)
  • Added disassembler from gdb (David Welch)
  • Record feature information from cpuid (David Welch)
  • Fixed bug with recalling previous input (David Welch)
  • Switch back to text mode when entering the debugger (David Welch)
  • Fixed whole page allocations since the handle table code now relies on allocations being eight byte aligned (David Welch)
  • Fix reading past the end of the pool block (David Welch)
  • Fix key name size calculation bugs (Eric Kohl)
  • Fix NtOpenThreadToken() and NtSetInformationThread() (Eric Kohl)
  • Clean-up NtQueryInformationToken() (Eric Kohl)
  • Fully implement RtlFormatCurrentUserKeyPath() (Eric Kohl)
  • Fixed crashes that were cause by the changes to the service parameter table (Eric Kohl)
  • Work on thread-awareness in gdbstub (Ge van Geldorp)
  • Make IoGetDeviceInterfaces more compatible with the native version (Matthew Brace)
  • Hardcode build number consistent with major/minor version (NVidia driver requires this) (Ge van Geldorp)
  • Tell apps we're NT4 SP6, VB runtime will fail if we report SP0 (Ge van Geldorp)
  • Allow GDB 6 to backtrace over a syscall (Ge van Geldorp)
  • Disable pool validation since it slows down execution too much (Ge van Geldorp)
  • Locale values are specified in hexadecimal numbers (Filip Navara)
  • Corrected EiAllocatePool prototype (Filip Navara)
  • Fixed RtlNtStatusToDosErrorNoTeb (Filip Navara)
  • Removed the incorrect implementations of Device Interface functions (Filip Navara)
  • Don't zero memory allocated by ExAllocatePool (Filip Navara)
  • Fixed RtlFormatCurrentUserKeyPath and it's use (Filip Navara)
  • Fill correctly all members of the returned device object in IoCreateDevice (Filip Navara)
  • Don't bug check in loader when export isn't found, only report it and don't load the module (Filip Navara)
  • If we know a module path while loading, use it for searching for the import modules (Filip Navara)
  • Modified LdrpBuildModuleBaseName to not strip the extension from file name (Filip Navara)
  • Call create process notify routines from NtCreateProcess (Filip Navara)
  • Started PsSetLoadImageNotifyRoutine implementation, it just registers the callback, but doesn't call it (Filip Navara)
  • Fixed querying of thread locale (Filip Navara)
  • Implemented IoGetDriverObjectExtension and IoAllocateDriverObjectExtension (Filip Navara)
  • Don't load PnP drivers if they're disabled (Filip Navara)
  • Save pointer to PnP tree device node in device object's DeviceObjectExtension (Filip Navara)
  • Add function IopGetDeviceNode for getting device node from device object pointer (Filip Navara)
  • Rewritten IoGetDeviceProperty to use values that are in device node instead of sending Irps (Filip Navara)
  • Lower IRQL in error case of IoAllocateDriverObjectExtension (Filip Navara)
  • Support for upper level filter drivers (Filip Navara)
  • Rewritten some driver loading functions to get higher control of the driver loading and initialization process, fixes bug #263 (Filip Navara)
  • Added support for lower level filter drivers (Filip Navara)
  • Minor cleanup and fixed few memory leaks on driver unload (Filip Navara)
  • Fixed a minor bug in IopLoadServiceModule that caused crashes for disabled drivers (Filip Navara)
  • Don't bugcheck if FDO wasn't attached (Filip Navara)
  • Fixed cygwin fork section map problem, this fixes map_dup_inherit (Art Yerkes, David Welch)
  • MmMapLockedPages patch (Anich Gregor)
  • Initialize LPC-related fields in ETHREAD (Emanuele Aliberti)
  • Finish off NtDuplicateToken (Jason Filby)

ChangeLog-0.2.3

  • Added two new Cache Manager files added for the stubs (Alex Ionescu)
  • Fixed memory corruption in IopInitializeBuiltinDriver (Filip Navara)
  • Various bugfixes to IoQueryDeviceDescription and friends. The floppy driver now loads and finds the drive properly (Vizzini)
  • Use raw size for image sections if virtual size isn't specified (Nathan Lineback)
  • The root bus driver should return an empty resource list on IRP_MN_QUERY_RESOURCES (Eric Kohl)
  • Fixed prototypes of NtAddAtom, NtFindAtom, NtProtectVirtualMemory and *KeQueryInterruptTime (Filip Navara)
  • Fixed list traversing in MmAlterRegion to correctly handle Length that is greater than real memory area size (Filip Navara)
  • Added stubs for the Cache Manager by Alex Ionescu (Steven Edwards)
  • Callbacks implementation (Alex Ionescu)
  • Clean up return val checking of some mdl calls (Vizzini)
  • Store page numbers instead of physical address's within mdls (Hartmut Birr)
  • Allocate memory for mdl's for paging io from stack instead of the non paged pool (Hartmut Birr)
  • Exchanged source and target in WRITE_REGISTER_BUFFER_xxx (Hartmut Birr)
  • Retrieve Hardware IDs and Compatible IDs from the bus driver and attach them to the device node (Eric Kohl)
  • Added a check for a waitable objects in NtWaitForSingleObject and *NtWaitForMultipleObjects (Hartmut Birr)
  • Fixed the start offset of a partition within an extended partition (in xHalIoWritePartitionTable) (Hartmut Birr)
  • Fixed some NULL-terminating issues that caused the 'videoprt.sys???????????????' module name problem (Filip Navara)
  • Fixed a wrong address in MmAlterViewAttributes which possible does cause a crash if the region is longer than one page (Hartmut Birr)
  • Implementation of IoQueryDeviceDescription. Patch by Alex Ionescu (Filip Navara)
  • Write the system boot device and start options to registry, also create the MiniNT registry key if needed (Filip Navara)
  • Fixed the searching for boot load drivers. This solves the pci driver loading problem (Hartmut Birr)
  • Set CurrentThread's u1.ExitTime to exit time in PsTerminateCurrentThread. Patch by Alex Ionescu (Filip Navara)
  • Return success for SystemFileCacheInformation requests to NtQuerySystemInformation, so we can see some information in the Task Manager (Filip Navara)
  • ReactOS-specific debugging functions KeRosDumpStackFrames and KeRosPrintAddress (Royce Mitchel III)
  • The last parameter of NtReadVirtualMemory should be optional (Filip Navara)
  • Removed an obsolete call to ExAllocatePool in CHECKPOINT (Hartmut Birr)
  • Do not immediately write the zeroed region to the disk for a cached file (Hartmut Birr)
  • Fixed a problem, which does occur if the cluster size is lower than the segment size (Hartmut Birr)
  • Implement kernel-mode range lists (Eric Kohl)
  • Install target must not rebuild executables (Eric Kohl)
  • Fixed the implementation of MmMapIoSpace (Hartmut Birr)
  • Fixed the implementation of IoBuildPartialMdl (Hartmut Birr)
  • Set Mdl's Process in MmMapLockedPages to current process and back to NULL in MmUnmapLockedPages (Filip Navara)
  • Implement SeQueryAuthenticationIdToken() (Eric Kohl)
  • Add audit function stubs (Eric Kohl)
  • Do not change the mapping count of a page if the physical address falls in the range of valid physical memory (in MmMapIoSpace and MmUnmapIoSpace) (Hartmut Birr)
  • Add some security function stubs (Eric Kohl)
  • Use bugcheck macros where appropriate so users have a better idea of why they crashed (Royce Mitchel III)
  • Implement multi-block bins. This removes all existing size limits within the registry (Eric Kohl)
  • Janitorial work (Eric Kohl)
  • Put the event from file object as user event into the irp in IopCloseFile and IopDeleteFile (Hartmut Birr)
  • Don't assign arc names to removable media drives like zip drives (Hartmut Birr)
  • Don't read the disk informations at boot time from removable medias like zip drives (Hartmut Birr)
  • Added Spinlock in ObpGetHandleCountbyHandleTable (Jim Tabor)
  • Fix recognition of CALL instruction. Spotted by Anich Gregor (Filip Navara)
  • Return reasonably correct result querying a null memory area. Still a TODO left (Mike Nordell)
  • Change bugcheck parameter to easily find out which SESSION5_INITIALIZATION_FAILED bugcheck occurred (Ge van Geldorp)
  • Make MmQuerySectionView tell how many bytes it actually did set. Fixes VirtualQuery (Mike Nordell)
  • MmQuerySectionView now returns correct AllocationBase (Hartmut Birr, Mike Nordell)
  • Proper way for counting process handles (Jim Tabor)
  • Add missing io performance counters (Eric Kohl)
  • SystemPerformanceInformation reads io counters (Eric Kohl)
  • Call the DriverStartIo routine at DISPATCH_LEVEL in IoStartPacket (Hartmut Birr)
  • Set the offset for a physical page in MmGetPhysicalAddress (Hartmut Birr)
  • Dereference the idle process in some of the NtQuerySystemInformation functions (Hartmut Birr)
  • Stop kernel crashing on thread termination (Mike Nordell)
  • Fixed my mistake in SystemProcessorInformation (Jim Tabor)
  • Fixed SystemProcessorInformation (Jim Tabor)
  • Set 386 as default cpu type (Jim Tabor)
  • Implementation of system performance auditing hax (Jim Tabor)
  • Improved Passive Level kernel and user time counters (Jim Tabor)
  • Fix Kernel User Timer and added ProcessTimes to QueryInformatinProcess (Jim Tabor)
  • Fix Kernel User Timer (Jim Tabor)
  • Add BasePriorty to ProcessBasicInformaion (Jim Tabor)
  • NtGetTickCount implementation (Jim Tabor, Filip Navara)
  • Implementation of system performance auditing hax (Jim Tabor)
  • Improved Passive Level kernel and user time counters (Jim Tabor)
  • Fix Kernel User Timer and added ProcessTimes to QueryInformatinProcess (Jim Tabor)
  • Fix Kernel User Timer (Jim Tabor)
  • Add BasePriorty to ProcessBasicInformaion (Jim Tabor)
  • Make mdl impl. more windows compliant (Gunnar Dalsnes)
  • Make mdl usage/impl. more windows compliant (Gunnar Dalsnes)
  • Filip Navara NtGetTickCount implementation (Jim Tabor)
  • Implemented new Ros exclusive function SystemFullMemoryInformation (Jim Tabor)
  • DBG/KD Types and Prototypes Added (Alex Ionescu)
  • Fixed KeRaiseUserException to return old EIP (Alex Ionescu)
  • Added DBG, FSRTL, Kd, Ldr, Lpc, Ex and Io Stubs (Alex Ionescu)

ChangeLog-0.2.4

  • KDB stabs handling changed, should require less memory and load slightly faster ;-) (Gregor Anich)
  • Fixed handling of \r\n in KDB (Gregor Anich)
  • Do not call HalReleaseDisplayOwnership when KDB is entered and screen debugging is not enabled. After an exception the screen will not turn blue but will freeze and be un-frozen when KDB is left (cont) (Gregor Anich)
  • Added OPTIMIZED Flag in config file for building an optimized kernel. (Alex Ionescu)
  • Tagged certain functions that were exported both under NT and ROS, but not marked as un/implemented. (Alex Ionescu)
  • Added all Mm, Rtl, Nt, Se, Zw stubs, and Synched EDF/DEF files, completing stub project. Related work done by Eric Kohl, Mike Nordell, Caroline Liang and Bob Yu. (Alex Ionescu)
  • Implemented PsGetProcessCreateTimeQuadPart, PsGetProcessDebugPort, PsGetProcessExitProcessCalled, PsGetProcessExitStatus, PsGetProcessId, PsGetProcessImageFileName, PsGetProcessInheritedFromUniqueProcessId, PsGetProcessPeb, PsGetProcessPriorityClass, PsGetProcessSectionBaseAddress, PsGetProcessSecurityPort, PsGetProcessWin32Process, PsGetProcessWin32WindowStation, PsIsProcessBeingDebugged, PsGetCurrentProcessSessionId, PsGetProcessSessionId, PsSetProcessPriorityClass, PsSetProcessSecurityPort, PsSetProcessWin32Process, PsSetProcessWin32WindowStation, PsGetThreadFreezeCount, PsGetThreadHardErrorsAreDisabled, PsGetThreadId, PsGetThreadProcess, PsGetThreadProcessId, PsGetThreadSessionId, PsGetThreadTeb, PsGetThreadWin32Thread, PsGetCurrentThreadPreviousMode, PsGetCurrentThreadStackBase, PsGetCurrentThreadStackLimit, PsSetThreadHardErrorsAreDisabled, PsSetThreadWin32Thread, PsRevertThreadToSelf. (Alex Ionescu)
  • Small fixes to I/O Manager and Implemented IoMakeAssociatedIrp. (Parts by Filip Navara, Alex Ionescu)
  • Set the thread of the Allocated IRPs created by Io/Nt Query functions that didn't do this. This can cause problems if the thread is ever read on a completed request. (Alex Ionescu)
  • I/O Manager fixes. (Filip Navara)
  • Initial Support for Quota Pool Allocations: Implemented ExAllocatePoolWithQuota, ExAllocatePoolWithQuotaTag, PsChargePoolQuota, PsChargeProcessNonPagedPoolQuota, PsChargeProcessPagedPoolQuota, PsChargeProcessPoolQuota. (Alex Ionescu)
  • Implemented a basic ExAllocatePoolWithTagPriority, but needs Special Pool support for Driver Verifier functionality. The allocation works however. (Alex Ionescu)
  • Rundown Protection Implementation. Implemented ExAcquireRundownProtection, ExAcquireRundownProtectionEx, ExInitializeRundownProtection, ExReInitializeRundownProtection, ExReleaseRundownProtection, ExReleaseRundownProtectionEx, ExRundownCompleted, ExWaitForRundownProtectionRelease. (Alex Ionescu)
  • Fixed RtlUnwind to correctly remove SEH frames and not to call ZwContinue. (Filip Navara)
  • Fixed NtQueryInformationProcess to return STATUS_NOT_IMPLEMENTED for unimplemented cases. (Filip Navara)
  • Improved implementation of UnhandledExceptionFilter. (Filip Navara)
  • Fixed dispatching of nested exceptions. (Filip Navara)
  • Corrected the obtaining of TLS callbacks address. (Filip Navara)
  • RegQueryValueExW shouldn't touch *lpcbData if lpData == NULL. (Filip Navara)
  • RegEnumValueW should fill in *lpcbData if lpData == NULL. (Filip Navara)
  • Change length checking semantics of NtEnumerateKey for KeyBasicInformation. (Filip Navara)
  • Fix handling of METHOD_IN_DIRECT IRPs. (Filip Navara)
  • Fix heap corruption on converting ANSI -> UNICODE strings. (Filip Navara)
  • Support for deserialized miniports (experimental). (Filip Navara)
  • Set StackPtr->Parameters.Read.Length in IoPageRead. (Filip Navara)
  • Set StackPtr->Parameters.Write.Length in Io[Synchronous]PageWrite. (Filip Navara)
  • Don't increase Irp->AssociatedIrp.IrpCount in IoMakeAssociatedIrp. The caller is responsible for doing it. (Filip Navara)
  • Don't unlock MDLs of associated Irps. (Filip Navara)
  • Fix deleting of section if an early failure during section creation happens and not all structures are initialized yet. (Filip Navara)
  • Fix FsRtlDoesNameContainWildCards loop to take into account the first and lst letter of the expression. (Filip Navara)
  • Dumb implementation of FsRtlIsNameInExpression. (Filip Navara)
  • Copy over device object SectorSize and AlignmentRequirement in IoAttachDeviceToDeviceStack. (Filip Navara)
  • NtQuerySection should check for SECTION_QUERY access right and not SECTION_MAP_READ. (Filip Navara)
  • Implement NtNotifyChangeDirectoryFile. (Filip Navara)
  • Honour ApcRoutine and ApcContext parameters of NtQueryDirectoryFile. (Filip Navara)
  • Fix NtQueryDirectoryObject for empty directories. (Filip Navara)
  • Fix masking out the write flags in IoCheckShareAccess and IoSetShareAccess. (Filip Navara)
  • Implement CcRepinBcb and CcGetFileObjectFromBcb. (Filip Navara)
  • Partially implement CcUnpinRepinnedBcb, CcPinMappedData, CcPinRead, CcPreparePinWrite, CcInitializeCacheMap (Art Yerkes),and CcUninitializeCacheMap. (Filip Navara)
  • Fix ReadCacheSegmentChain to handle correctly big request and check for MDL request memory overflow. (Filip Navara)
  • Allow passing NULL BCB to CcSetFileSizes. (Filip Navara)
  • Ensure that registry files are opened using lowercase file names. (Filip Navara)
  • Mapping zero-sized files is prohibited. (Filip Navara)
  • Close the registry hive file object in CmiInitNonVolatileRegistryHive. (Filip Navara)
  • Revise order of PsInitializeThread to insert the thread to the lists after *all* the fields are initialized and while holding the PiThreadListLock lock. (Filip Navara)
  • Implement IntWideCharToMultiByteUTF8 since it's needed for saving Explorer configuration. (Filip Navara)
  • Use FsRtl routines for wildcard handling. (Filip Navara)
  • Fix setting of GDT and IDT pointers in KPCR. (Filip Navara)
  • Fix section object dereferencing in NtCreateSection. (Filip Navara)
  • Improved removable media support. (Hartmut Birr)
  • Implemented NtQueryVirtualMemory for unallocated regions. (Hartmut Birr)
  • Fixed some minor bugs in NtQueryVirtualMemory and its related query functions. (Hartmut Birr)
  • Update the page counters in MmGetContinuousPages. (Hartmut Birr )
  • Add a flag to PHYSICAL_PAGE, to detect if a free page is on the zeroed or on the unzeroed list. (Hartmut Birr)
  • Changed all internal memory functions to use the page frame number instead of the physical address. (Hartmut Birr)
  • Allowed MmCreateVirtualMapping to create mappings for more than one page. (Hartmut Birr)
  • Used invplg to invalidate a single tlb entry. (Hartmut Birr)
  • Simplified the access to the page tables/directories. (Hartmut Birr)
  • Returned more of the protection bits in MmGetPageProtect. (Hartmut Birr)
  • Ignore the PAGE_SYSTEM attribute and set the user bit according to the given address in MmSetPageProtect and MmCreateVirtualMappingUnsafe. (Hartmut Birr)
  • Don't change the accessed and dirty bit in MmSetPageProtect. (Hartmut Birr)
  • Fixed the calculation of used non paged pool pages in grow_block. (Hartmut Birr)
  • Enabled global pages if it is possible. (Hartmut Birr)
  • Put the kernel map onto a fixed location and establish a page table for the first 4MB in the very early boot process. (Hartmut Birr)
  • Disable the mapping for the page table pages within the bss section at boot time. (Hartmut Birr)
  • Replaced MmUpdateStackPageDir by MmUpdatePageDir which can establish the pde's of a process for any address range within the kernel address range. (Hartmut Birr)
  • Set the pde's for the kernel stack at thread creation time and not at any task switch. (Hartmut Birr)
  • Fixed a crash which occurs on thread switching if the pde's for the new process structure are not established within the address space of the old thread. (Hartmut Birr)
  • Rewrote MmInitializePageList. It isn't necessary to setup the pde's for the largest memory configuration at boot time. (Hartmut Birr)
  • Made the parts of the page directory map inaccessible from user mode which are setup at boot time. (Hartmut Birr)
  • Changed the sequence of some memory initialisation functions. (Hartmut Birr)
  • Check for a valid layout buffer entry in xHalIoAssignDriveLetters. (Hartmut Birr)
  • Check if the given address points into a valid section (in MmUnmapViewOfSection). (Hartmut Birr)
  • Check if the section isn't deleted straight (in MmUnmapViewOfSection). (Hartmut Birr)
  • NtOpenThread should look at the CIDs UniqueThread member only, not at UniqueProcess. Makes OpenThread() work. (Gé van Geldorp)
  • Implement TokenOrigin class for GetTokenInformation (Gé van Geldorp)
  • Copy AuthenticationId from existing token when duplicating a token (Gé van Geldorp)
  • Use MmCopyFrom/ToCaller to transfer data in NtQueryDirectoryObject, also lock list when traversing it (Gé van Geldorp)
  • Don't clobber the exception list in the PCR when handling a trap: it breaks kernel-mode SEH (KJK::Hyperion)
  • cleanup/reformat syscall code, save return value as soon as possible so that eax is freed up, which also simplifies the implementation of KiAfterSystemCallHook(), also removes a couple redundant instructions. (Royce Mitchell III)
  • NtContinue fixed to return failure on invalid params ( not checking for access violations yet ), but not clobber EAX on success. This patch was made possible by the collaborative efforts of (Royce Mitchell III, KJK::Hyperion, Art Yerkes, and Skywing)
  • NtRaiseException fixed to not clobber EAX any more, and both NtContinue and NtRaiseException no longer clobber EDX. kmode SEH works now, but there are likely some lingering bugs. This patch was made possible by the collaborative efforts of (Royce Mitchell III, KJK::Hyperion, Art Yerkes, and Skywing)
  • Implement the security descriptor cache (Eric Kohl)
  • Improve many security-related functions (Eric Kohl)
  • Implement basic functionality to ingerit an objects security descriptor (Eric Kohl)

ChangeLog-0.2.5

  • Debug symbols from SYM files loaded and used in DBG builds ( they used to only work in KDBG builds ) - several SYM-related bugs fixed (Royce Mitchell III)
  • Floating point and SSE state saving for uni- and multiprocessor systems (Gregor Anich)
  • Unmasked floating point and SSE exception support (Gregor Anich)
  • Various fixes to registry handling (Eric Kohl, Filip Navara)
  • Rewrote APC implementation (Alex Ionescu)
  • Rewrote/improved most of the DPC implementation (Alex Ionescu)
  • Allowed ReactOS to use 2GB/2GB Kernel/User memory model (Alex Ionescu)
  • Implemented KeSetEventBoostPriority, KeFindConfigurationEntry, KeDeregisterBugCheckCallback, KeIsAttachedProcess, KeQueryActiveProcessors, KeSetDmaIoCoherency, KeSetTimeIncrement, KeQueryRuntimeThread, KeUpdateRunTime, KeUpdateSystemTime, KeAreApcsDisabled, KeFlushEntireTb, KeIsExecutingDpc, KeSetKernelStackSwapEnable, KeQueryPriorityThread, KeRevertToUserAffinityThread, KeSetIdealProcessorThread, KeSetSystemAffinityThread, KeTerminateThread, KeStackAttachProcess, KeUnstackDetachProcess, ExVerifySuite, ExInterlockedFlushSList, ExSystemExceptionFilter, ExRaiseException, ExGetCurrentProcessorCpuUsage, ExGetCurrentProcessorCounts, PsRevertThreadToSelf, ExAcquireRundownProtection, ExAcquireRundownProtectionEx, ExInitializeRundownProtection, ExReInitializeRundownProtection, ExReleaseRundownProtection, ExReleaseRundownProtectionEx, ExRundownCompleted, ExWaitForRundownProtectionRelease, ExAllocatePoolWithQuota, ExAllocatePoolWithQuotaTag, PsChargePoolQuota, PsChargeProcessNonPagedPoolQuota, PsChargeProcessPagedPoolQuota, PsChargeProcessPoolQuota, ExAllocatePoolWithTagPriority (Alex Ionescu)
  • Fixed a couple of I/O Manager bugs related to IRPs (Alex Ionescu)
  • Implemented basic Process Quota support (Alex Ionescu)
  • Use 64k granularity for virtual memory (Gé van Geldorp)
  • Add shutdown messages (Gé van Geldorp)
  • PagedPool modified to keep track of Tags and a couple support functions added to access this information (Royce Mitchell III)
  • Added support to KDBG to query the tag of a memory block (Art Yerkes)
  • Complete rewrite of PagedPool - better than 800% performance improvement, designed to support multiple pools (SpecialPool?), and designed to help better catch misused memory under it's care. (Royce Mitchell III)
  • Improved low level page mapping (Hartmut Birr)
  • Implemented PAE (physical address extension) mapping (Hartmut Birr)
  • Implemented the no execution feature for AMD 64 cpus (Hartmut Birr)
  • Made a tlb entry invalid on all processors if the mapping is deleted or changed. (Hartmut Birr)
  • Implemented the driver loading by the sequence of tag entries in the GroupOrderList key (Hartmut Birr)
  • Rewrote parts of the Process & Thread time count functions (Hartmut Birr)
  • Rewrote (copied from ntdll) parts of the relocation and import fixup code. Don't load no-load sections at the end of the driver. Don't relocate the relocation section itself. Set the correct page protection for section which are executable. (Hartmut Birr)
  • Fixed the scanning for boot options. (Hartmut Birr)
  • Started the implementation of the ipi calls. Implemented KiIpiSendRequest for simple requests. (Hartmut Birr)
  • Changed the init sequence in KeInit1 and KePrepareForApplicationProcessorInit. Fixed the pae mode initialisation for application processors. (Hartmut Birr)
  • Prevent from terminate a thread for twice. (Hartmut Birr)
  • Replaced PiThreadLock with the dispatcher databae lock. Fixed some problems while setting/changing the affinity of a thread. (Hartmut Birr)
  • Improved KeBugCheckWithTf for smp machines. (Hartmut Birr)
  • Split KdInitSystem in two phases, to enable debug prints (serial line and bochs) in the very early boot stage (before the initialisation from hal). (Hartmut Birr)
  • Get rid of the "global" system process handle (Thomas Weidenmueller)
  • Better, but as of now - untested - implementation of rundown protections (Thomas Weidenmueller)
  • Fixed prototypes of NtSetEvent(), NtResetEvent(), NtQueryEvent(), NtPulseEvent(), NtOpenEvent(), NtCreateEvent(), NtCreateMutant(), NtQueryMutant(), NtQuerySemaphore(), NtQueryTimer(), NtReleaseMutant(), NtReleaseSemaphore(), NtSetTimerResolution(), NtSetTimer(), NtCreateProfile() and NtQueryIntervalProfile() (Thomas Weidenmueller)
  • Implemented PsGetProcessJob(), PsGetJobLock(), PsGetJobSessionId() and PsGetJobUIRestrictionsClass() (Thomas Weidenmueller)
  • Group Threads into processes instead of a global thread list (Thomas Weidenmueller)
  • Got rid of all reactos-specific fields in the E/KTHREAD structure and make them match the win2k layout (Thomas Weidenmueller)
  • Added preliminary ClientID management - currently only used for thread IDs (Thomas Weidenmueller)
  • Disabled thread event pair functions by default (NT4 only) as they require a field in the ETHREAD structure that is not present in more recent versions (Thomas Weidenmueller)
  • Removed some bad window station/desktop hacks (Thomas Weidenmueller)
  • Added boot logging (Eric Kohl)
  • Support changing the system time and timezone (Eric Kohl)
  • Fix registry bugs (Eric Kohl)
  • Support the FILE_APPEND_DATA file access right (Eric Kohl)