2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* subsys/win32k/include/callback.h: Fixed callback argument
	definitions.
	* subsys/win32k/ntuser/winpos.c: Implemented some more of the windows
	sizing/moving code.
	* subsys/win32k/ntuser/painting.c: Implemented some more of the
	window painting code.
	* subsys/win32k/objects/coord.c: Implemented LPtoDP and DPtoLP.
	* subsys/win32k/objects/region.c: Added stubs for some more
	region functions.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* ntoskrnl/ps/process.c (NtCreateProcess): Duplicate the
	process desktop handle as well.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* ntoskrnl/se/token.c: Don't call the ZwXXX variant of
	system calls when in system context.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* ntoskrnl/Makefile: Added file with MDA output code.
	* ntoskrnl/kd/kdebug.c: Recognize MDA as a destination for
	debug output.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* lib/user32/windows/defwnd.c: Implemented some more of the
	default window handler.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* lib/user32/misc/stubs.c: Removed some stubs to seperate files.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* lib/user32/user32.def: Export ScreenToClient otherwise we
	get problems when code in user32 tries to call it.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/win32k/region.h: Added prototypes for some missing
	region functions.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/win32k/ntuser.h: Added prototypes for some missing
	NtUserXXX functions.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/user32/wininternal.h: Added some constants for
	private GetDCEx styles that WINE needs.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/user32/callback.h: Fixed callbacks for messages with
	parameters.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/napi/win32.h (W32THREAD): Added pointer to the
	thread's desktop.
	* include/napi/win32.h (W32PROCESS): Removed handle table,
	added a pointer to the process's window station.
	* subsys/win32k/ntuser/guicheck.c (W32kGuiCheck): Reference
	a process's window station on the first win32k system call. Reference
	a thread's desktop on the first win32k system call.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* include/messages.h: Added some missing WM_XXX constants.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* drivers/dd/ide/makefile: Compiling with debugging messages
	needs libgcc to be linked in.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* iface/addsys/genw32k.c: Generate a variable with the
	number of system calls.
	* iface/native/genntdll.c: Generate a proper stack frame for
	the user system call stubs.
	* ntoskrnl/ke/i386/syscall.S: Generate a proper stack frame for
	the handler for system calls.

2002-07-04  David Welch  <welch@computer2.darkstar.org>

	* Makefile: Build the GUI startup application.
	* subsys/system/gstart/gstart.c: Application to start up
	the GUI.

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* tools/helper.mk: Make an import library a proper target
	depending on the .def file.

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* subsys/win32k/ntuser/window.c (NtUserGetWindowLong): Began
	implementation.

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* subsys/win32k/misc/object.c (ObmCreateHandle): Return the
	correct handle value.

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* subsys/win32k/makefile: Make win32k depend on the file containing
	the service table. 

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* lib/user32/windows/message.c (CallWindowProcA, CallWindowProcW):
	Convert message to Unicode or ASCII if necessary.

2002-06-18  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* include/structs.h: Added Unicode and ASCII versions of
	CREATESTRUCT.

2002-06-16  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* tools/helper.mk: Make the install target depend on all the
	files to be installed.

2002-06-16  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* drivers/dd/null/makefile: Commented out local LDFLAGS as
	these cause bad relocations in the stripped image.

2002-06-16  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* config: Corrected spelling error.

2002-06-11  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* subsys/system/winlogon/winlogon.c (WinMain): Check for
	failure when creating a window system.

2002-06-11  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@whitehall1-5.seh.ox.ac.uk>

	* lib/user32/misc/winsta.c: Cleaned up indentation.

2002-06-11  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>
	
	* apps/tests/winhello/winhello.c (WinMain, MainWndProc):
	Cleaned up formatting, some more error checks.

2002-06-04  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* ntoskrnl/mm/virtual.c (MmSecureVirtualMemory,
	MmUnsecureVirtualMemory, NtQueryVirtualMemory): Corrected indentation.

2002-06-04  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* ntoskrnl/ke/i386/exp.c (KiDoubleFaultHandler): Print CR3
	correctly.

2002-06-04  David Welch  <welch@whitehall1-5.seh.ox.ac.uk>

	* 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  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* Lots of change since the ChangeLog was last updated.

2001-03-18  David Welch  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* ntoskrnl/ke/catch.c (KiDispatchException): Implementation of
	exception handling, user-mode only.

2001-03-16  David Welch  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* ntoskrnl/include/internal/safe.h: Add definitions for handling
	potentially unsafe pointers.

2001-03-16  David Welch  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* All task switching is done in software.
	* Beginnings of v86 mode support.

2000-12-22  David Welch  <welch@cwcom.net>

	* ntoskrnl/ps/kill.c (PiTerminateProcessThreads): Drop 
	PiThreadListLock before calling PsTerminateOtherThread

2000-12-16  David Welch  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* 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  <welch@cwcom.net>

	* 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 <welch@cwcom.net>

        * Fixed issue with closing non-existent or already closed
          handle.

2000-01-26  David Welch <welch@cwcom.net>

        * ZwCreateProcess now maps ntdll rather than the user-mode
          code.

1999-09-06  David Welch <welch@cwcom.net>

        * 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 <welch@cwcom.net>

        * 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.









	
