2002-06-18 David Welch * tools/helper.mk: Make an import library a proper target depending on the .def file. 2002-06-18 David Welch * subsys/win32k/ntuser/window.c (NtUserGetWindowLong): Began implementation. 2002-06-18 David Welch * subsys/win32k/misc/object.c (ObmCreateHandle): Return the correct handle value. 2002-06-18 David Welch * subsys/win32k/makefile: Make win32k depend on the file containing the service table. 2002-06-18 David Welch * ntoskrnl/ke/i386/stkswitch.S (KeSwitchStackAndRet, KePushAndStackSwitchAndSysRet): Push one value only. * ntoskrnl/ps/w32call.c (NtCallbackReturn, NtW32Call): Moved these functions to a new file. Restore the old trap frame after returning from a callback. 2002-06-18 David Welch * lib/user32/windows/message.c (CallWindowProcA, CallWindowProcW): Convert message to Unicode or ASCII if necessary. 2002-06-18 David Welch * include/user32/callback.h: Added WM_CREATE and WM_NCCALCSIZE callbacks. * lib/user32/windows/window.c (User32SendCREATEMessageForKernel, User32SendNCCREATEMessageForKernel): Implemented. * subsys/win32k/ntuser/callback.c (W32kSendCREATEMessage): Implemented. 2002-06-18 David Welch * include/structs.h: Added Unicode and ASCII versions of CREATESTRUCT. 2002-06-16 David Welch * tools/helper.mk: Make the install target depend on all the files to be installed. 2002-06-16 David Welch * ntoskrnl/ps/thread.c (NtCallbackReturn): Set TSS.Esp0 to the top of the old stack. * ntoskrnl/ps/thread.c (NtW32Call): Set TSS.Esp0 to the top of the new stack. Free the callback stack correctly. Don't copy portion of the trap frame that doesn't exist in non-v86-mode interrupts. * ntoskrnl/ps/thread.c (PsFreeCallbackStack): New function to free a stack allocated with PsAllocateCallbackStack. 2002-06-16 David Welch * drivers/dd/null/makefile: Commented out local LDFLAGS as these cause bad relocations in the stripped image. 2002-06-16 David Welch * config: Corrected spelling error. 2002-06-11 David Welch * subsys/system/winlogon/winlogon.c (WinMain): Check for failure when creating a window system. 2002-06-11 David Welch * ntoskrnl/ob/handle.c (ObDuplicateObject): Added this internal function for duplicating objects. * ntoskrnl/ps/process.c (NtCreateProcess): Duplicate the parent process's window station to the child process. * ntoskrnl/ps/process.c (PsInitProcessManagement): Initialize the first process's window station. 2002-06-11 David Welch * ntoskrnl/mm/marea.c (MmCreateMemoryArea): Initialise page operation structure members. * ntoskrnl/mm/pageop.c (MmReleasePageOp, MmGetPageOp): Increment or decrement the page operation count in the memory area. * ntoskrnl/mm/virtual.c (MmNotPresentFaultVirtualMemory, MmPageOutVirtualMemory): Check for a deleted memory area before handling the fault. * ntoskrnl/mm/virtual.c (MmFreeVirtualMemory): Wait for all page operations to finish before freeing the memory area. 2002-06-11 David Welch * ntoskrnl/ke/i386/syscall.S (interrupt_handler2e): Corrected test for previous mode, upper 16-bit of CS on the stack after an interrupt are arbitary. 2002-06-11 David Welch * lib/user32/misc/winsta.c: Cleaned up indentation. 2002-06-11 David Welch * apps/tests/winhello/winhello.c (WinMain, MainWndProc): Cleaned up formatting, some more error checks. 2002-06-04 David Welch * ntoskrnl/mm/virtual.c (MmSecureVirtualMemory, MmUnsecureVirtualMemory, NtQueryVirtualMemory): Corrected indentation. 2002-06-04 David Welch * ntoskrnl/ke/i386/exp.c (KiDoubleFaultHandler): Print CR3 correctly. 2002-06-04 David Welch * ntoskrnl/include/internal/ps.h: Added KTHREAD_STACK_LIMIT definition. * ntoskrnl/ke/i386/tskswitch.S (Ki386ContextSwitch): Force all the pages of the kernel stack to be accessible from this process. 2002-06-04 David Welch * ntoskrnl/cc/view.c (ReadCacheSegmentChain): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/cc/copy.c (CcRosCreateCacheSegment): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/cc/copy.c (CcFreeCachePage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/include/internal/mm.h: Changed prototypes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/include/internal/ps.h (KPROCESS): Changed type of page directory base to PHYSICAL_ADDRESS. * ntoskrnl/include/internal/i386/mm.h: Changed prototypes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/ke/kthread.c (KeFreeStackPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/ke/kthread.c (KeInitializeThread): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/ke/process.c (KeAttachProcess, KeDetachProcess): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/ke/kernel.c (PcrPages, KeApplicationProcessorInit): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/balance.c (MM_ALLOCATION_REQUEST): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/balance.c (MmReleasePageMemoryConsumer): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/balance.c (MmRequestPageMemoryConsumer): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/cont.c (MmFreeContinuousPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/cont.c (MmAllocateContinuousAlignedMemory): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/freelist.c (MmTransferOwnershipPage, MmGetLRUFirstUserPage, MmGetLRUNextUserPage, MmGetContinuousPages, MmInitializePageList, MmSetFlagsPage, MmSetRmapListHeadPage, MmGetRmapListHeadPage, MmMarkPageMapped, MmMarkPageUnmapped, MmGetFlagsPage, MmSetSavedSwapEntryPage, MmGetSavedSwapEntryPage, MmReferencePage, MmGetReferenceCountPage, MmIsUsablePage, MmDereferencePage, MmGetLockCountPage, MmLockPage, MmUnlockPage, MmAllocPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/iospace.c (MmMapIoSpace): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/kmap.c (ExAllocatePage, MiZeroPage, MiCopyFromUserPage, ExAllocatePageWithPhysPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/marea.c (MmFreeMemoryArea): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/mdl.c (MmUnlockPages, MmMapLockedPages, MmProbeAndLockPages): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/mm.c (MmSharedDataPagePhysicalAddress, MmCommitPagedPoolAddress, MmNotPresentFault): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/mminit.c (MmInitVirtualMemory): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/ncache.c (MmAllocateNonCachedMemory, MmFreeNonCachedPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/npool.c (grow_kernel_pool): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/rmap.c (MmPageOutPhysicalAddress, MmInsertRmap, MmDeleteAllRmaps, MmDeleteRmap): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/section.c (MiReadPage, MmNotPresentFaultSectionView, MmAccessFaultSectionView, MmPageOutDeleteMapping, MmPageOutSectionView, MmFreeSectionPage): Changes to use PHYSICAL_ADDRESS type for physical addresses. * ntoskrnl/mm/slab.c (ExGrowSlabCache): Changes to use PHYSICAL_ADDRESS type for physical address. * ntoskrnl/mm/virtual.c (MmPageOutVirtualMemory, MmNotPresentFaultVirtualMemory, MmFreeVirtualMemoryPage): Changes to use PHYSICAL_ADDRESS type for physical address. * ntoskrnl/mm/wset.c (MmTrimUserMemory): Changes to use PHYSICAL_ADDRESS type for physical address. * ntoskrnl/mm/page.c (Mmi386ReleaseMmInfo, MmCopyMmInfo, MmGetPhysicalAddressForProcess, MmCreateVirtualMapping, MmCreateVirtualMappingUnsafe, MmCreateVirtualMappingForProcess, MmDeleteVirtualMapping): Changes to use PHYSICAL_ADDRESS type for physical address. * ntoskrnl/ps/process (PsInitProcessManagment): Changes to use PHYSICAL_ADDRESS type for physical address. * ntoskrnl/ps/thread.c (PsAllocateCallbackStack): Changes to use PHYSICAL_ADDRESS type for physical address. 2002-06-04 David Welch * Lots of change since the ChangeLog was last updated. 2001-03-18 David Welch * ntoskrnl/ke/apc.c (KiDeliverApc): Bug fix. * ntoskrnl/ke/apc.c (KeInsertQueueApc): More comments. * ntoskrnl/ke/catch.c (KiDispatchException): Bug fix. * ntoskrnl/ke/timer.c (KeDelayExecutionThread): Don't use removed function KeAddTimeoutThread. * ntoskrnl/ke/timer.c (KeAddTimeoutThread): Removed. * ntoskrnl/ke/wait.c (KeWaitForSingleObject, KeWaitForMultipleObjects): Don't use KeAddTimeoutThread. * ntoskrnl/mm/freelist.c (MmAllocateContiguousAlignedMemory): Bug fix * ntoskrnl/mm/freelist.c (MmAllocatePage): Allocate from the top memory. 2001-03-17 David Welch * ntoskrnl/ke/catch.c (KiDispatchException): Implementation of exception handling, user-mode only. 2001-03-16 David Welch * include/ddk/zw.h: Corrected declarations of NtCreateProfile, NtQueryIntervalProfile, NtSetIntervalProfile. * include/ddk/zwtypes.h: Added definitions of KPROFILE_SOURCE. * ntoskrnl/include/internal/ke.h: Added the interrupted EIP as a parameter to KiUpdateSystemTime for profiling purposes. * ntoskrnl/include/internal/nt: Added declaration for profiling support initialization. * ntoskrnl/ke/timer.c (KiUpdateSystemTime, KeExpireTimers): Call the profiling code on a timer interrupt with the interrupt EIP. * ntoskrnl/ke/i386/irq.c (KiDispatchInterrupt): Pass the interrupted EIP to KiUpdateSystemTime. * ntoskrnl/mm/virtual.c (NtReadVirtualMemory, NtWriteVirtualMemory): Release the MDLs used properly. * ntoskrnl/nt/nt.c: Call the profiling support initialization. * ntoskrnl/nt/ntevent.c (NtCreateEvent): Don't try copying the ObjectAttributes parameter if it is NULL. * ntoskrnl/nt/profile.c: Implemented profiling. 2001-03-16 David Welch * ntoskrnl/include/internal/safe.h: Corrected typo. * ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtQueryEvent): Corrected typos. * ntoskrnl/rtl/mem.c: Missing header file. 2001-03-16 David Welch * ntoskrnl/include/internal/safe.h: Add definitions for handling potentially unsafe pointers. 2001-03-16 David Welch * ntoskrnl/include/internal/mm.h: Removed MmSafeCopyToUser and MmSafeCopyFromUser as source files need these but don't want internal mm definitions. * ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtPulseEvent, NtQueryEvent, NtResetEvent, NtSetEvent): Copy data to and from user mode safely. * ntoskrnl/rtl/mem.c (MmCopyToCaller, MmCopyFromCaller): Helper functions for copying data to and from potentially unsafe pointers. 2000-12-23 David Welch * All task switching is done in software. * Beginnings of v86 mode support. 2000-12-22 David Welch * ntoskrnl/ps/kill.c (PiTerminateProcessThreads): Drop PiThreadListLock before calling PsTerminateOtherThread 2000-12-16 David Welch * ntoskrnl/ex/fmutex.c (ExReleaseFastMutexUnsafe): Only set the fast mutex's owner back to NULL if it is being released 2000-12-10 David Welch * ntoskrnl/ke/i386/vm86_sup.S (Ki386RetToV86Mode): Added function to do the raw switch to v86 mode. * ntoskrnl/include/internal/vm86.h: Definitions for the v86 mode support. 2000-12-10 David Welch * ntoskrnl/ke/i386/trap.s (PsBeginThreadWithContextInternal): Moved to ntoskrnl/ke/i386/bswitch.S. * ntoskrnl/ke/i386/trap.s (interrupt_handler2e): Moved to ntoskrnl/ke/i386/syscall.S. * ntoskrnl/ke/i386/trap.s (old_interrupt_handler2e): Removed. 2000-12-04 David Welch * ntoskrnl/ke/i386/irq.c (KiInterruptDispatch): Record the last PC value for a rescheduled thread. * ntoskrnl/ke/i386/irqhand.s: Construct a primitive trap frame in interrupt handlers. 2000-08-30 David Welch * Added calibration of KeStallExecutionProcessor timing (code from linux 2.2.16). * Corrected compilation bugs in user32 library. * Corrected compilation bugs related to anonymous structs in ndis code. * Pass command line to kernel from loadros. * Corrected PIC mask calculation. 2000-05-27 David Welch * Fixed issue with closing non-existent or already closed handle. 2000-01-26 David Welch * ZwCreateProcess now maps ntdll rather than the user-mode code. 1999-09-06 David Welch * Implemented ZwOpenProcess. * Partially implemented killing other threads (possible memory leaks). * Made a start on a proper implemention of APCs (based on article in NT insider). 1998-12-08 David Welch * Corrected bug in shell (Read two keypresses and assumed they where the key going up and down respectively). * Corrected race in dpc handling. * Took out cleanup sections in ZwReadFile (now handled by the APC). * Disabled broken code in kernel32.