move object.c and ssec.c into ntuser where they belong
Modified: trunk/reactos/subsys/win32k/include/userfuncs.h
Deleted: trunk/reactos/subsys/win32k/misc/object.c
Deleted: trunk/reactos/subsys/win32k/misc/ssec.c
Added: trunk/reactos/subsys/win32k/ntuser/object.c
Added: trunk/reactos/subsys/win32k/ntuser/ssec.c
Modified: trunk/reactos/subsys/win32k/ntuser/window.c
Modified: trunk/reactos/subsys/win32k/win32k.xml

Modified: trunk/reactos/subsys/win32k/include/userfuncs.h
--- trunk/reactos/subsys/win32k/include/userfuncs.h	2005-09-06 07:58:43 UTC (rev 17692)
+++ trunk/reactos/subsys/win32k/include/userfuncs.h	2005-09-06 09:35:39 UTC (rev 17693)
@@ -74,6 +74,8 @@
 
 /*************** WINDOW.C ***************/
 
+PWINDOW_OBJECT FASTCALL UserGetWindowObjectNoRef(HWND hWnd);
+
 VOID FASTCALL
 co_DestroyThreadWindows(struct _ETHREAD *Thread);
 

Deleted: trunk/reactos/subsys/win32k/misc/object.c
--- trunk/reactos/subsys/win32k/misc/object.c	2005-09-06 07:58:43 UTC (rev 17692)
+++ trunk/reactos/subsys/win32k/misc/object.c	2005-09-06 09:35:39 UTC (rev 17693)
@@ -1,507 +0,0 @@
-/*
- *  ReactOS W32 Subsystem
- *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id$
- *
- * COPYRIGHT:      See COPYING in the top level directory
- * PROJECT:        ReactOS kernel
- * PURPOSE:        User object manager
- * FILE:           subsys/win32k/misc/object.c
- * PROGRAMMERS:    David Welch (welch@cwcom.net)
- *                 Casper S. Hornstrup (chorns@users.sourceforge.net)
- * UPDATE HISTORY:
- *     06-06-2001  CSH  Ported kernel object manager
- */
-/* INCLUDES ******************************************************************/
-
-#include <w32k.h>
-
-#define NDEBUG
-#include <debug.h>
-
-#define USER_HEADER_TO_BODY(ObjectHeader) \
-  ((PVOID)(((PUSER_OBJECT_HEADER)ObjectHeader) + 1))
-
-#define USER_BODY_TO_HEADER(ObjectBody) \
-  ((PUSER_OBJECT_HEADER)(((PUSER_OBJECT_HEADER)ObjectBody) - 1))
-
-/* FUNCTIONS *****************************************************************/
-
-VOID FASTCALL
-ObmpPerformRetentionChecks(PUSER_OBJECT_HEADER ObjectHeader)
-{
-  if (ObjectHeader->RefCount < 0)
-    {
-      DPRINT1("ObjectHeader 0x%X has invalid reference count (%d)\n",
-	       ObjectHeader, ObjectHeader->RefCount);
-    }
-
-  if (ObjectHeader->HandleCount < 0)
-    {
-      DPRINT1("Object 0x%X has invalid handle count (%d)\n",
-	       ObjectHeader, ObjectHeader->HandleCount);
-    }
-
-  if ((ObjectHeader->RefCount == 0) && (ObjectHeader->HandleCount == 0))
-    {
-      ExFreePool(ObjectHeader);
-    }
-}
-
-PUSER_HANDLE FASTCALL
-ObmpGetObjectByHandle(PUSER_HANDLE_TABLE HandleTable,
-		      HANDLE Handle)
-/*
- * FUNCTION: Get the data structure for a handle
- * ARGUMENTS:
- *   HandleTable = Table to search
- *   Handle      = Handle to get data structure for
- * RETURNS:
- *   Pointer to the data structure identified by the handle on success,
- *   NULL on failure
- */
-{
-  ULONG Index = (((ULONG)Handle) >> 2) - 1;
-  ULONG Count = Index / HANDLE_BLOCK_ENTRIES;
-  PUSER_HANDLE_BLOCK Block = NULL;
-  PLIST_ENTRY Current;
-  ULONG i;
-
-  if (NULL == Handle)
-    {
-      return NULL;
-    }
-
-  Current = HandleTable->ListHead.Flink;
-
-  for (i = 0; i < Count; i++)
-    {
-      Current = Current->Flink;
-      if (Current == &(HandleTable->ListHead))
-	{
-      DPRINT1("Invalid handle 0x%x\n", Handle);
-	  return NULL;
-	}
-    }
-
-  Block = CONTAINING_RECORD(Current, USER_HANDLE_BLOCK, ListEntry);
-  return &(Block->Handles[Index % HANDLE_BLOCK_ENTRIES]);
-}
-
-VOID FASTCALL
-ObmpCloseAllHandles(PUSER_HANDLE_TABLE HandleTable)
-{
-  PLIST_ENTRY CurrentEntry;
-  PUSER_HANDLE_BLOCK Current;
-  PVOID ObjectBody;
-  ULONG i;
-
-  CurrentEntry = HandleTable->ListHead.Flink;
-
-  while (CurrentEntry != &HandleTable->ListHead)
-    {
-      Current = CONTAINING_RECORD(CurrentEntry, USER_HANDLE_BLOCK, ListEntry);
-
-      for (i = 0; i < HANDLE_BLOCK_ENTRIES; i++)
-	{
-	  ObjectBody = Current->Handles[i].ObjectBody;
-
-	  if (ObjectBody != NULL)
-	    {
-	      PUSER_OBJECT_HEADER ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-	      ObmReferenceObjectByPointer(ObjectBody, otUnknown);
-	      ObjectHeader->HandleCount--;
-	      Current->Handles[i].ObjectBody = NULL;
-
-	      ObmDereferenceObject(ObjectBody);
-
-	      CurrentEntry = &HandleTable->ListHead;
-	      break;
-	    }
-	}
-
-      CurrentEntry = CurrentEntry->Flink;
-    }
-
-}
-
-VOID FASTCALL
-ObmpDeleteHandleTable(PUSER_HANDLE_TABLE HandleTable)
-{
-  PUSER_HANDLE_BLOCK Current;
-  PLIST_ENTRY CurrentEntry;
-
-  ObmpCloseAllHandles(HandleTable);
-
-  CurrentEntry = RemoveHeadList(&HandleTable->ListHead);
-
-  while (CurrentEntry != &HandleTable->ListHead)
-  {
-    Current = CONTAINING_RECORD(CurrentEntry,
-				USER_HANDLE_BLOCK,
-				ListEntry);
-
-    ExFreePool(Current);
-
-    CurrentEntry = RemoveHeadList(&HandleTable->ListHead);
-  }
-}
-
-PVOID FASTCALL
-ObmpDeleteHandle(PUSER_HANDLE_TABLE HandleTable,
-		 HANDLE Handle)
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-  PUSER_HANDLE Entry;
-  PVOID ObjectBody;
-
-  Entry = ObmpGetObjectByHandle(HandleTable, Handle);
-  if (Entry == NULL)
-    {
-      DPRINT1("Invalid handle\n");
-      return NULL;
-    }
-
-  ObjectBody = Entry->ObjectBody;
-
-  if (ObjectBody != NULL)
-    {
-      ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-      ObjectHeader->HandleCount--;
-      ObmReferenceObjectByPointer(ObjectBody, otUnknown);
-      Entry->ObjectBody = NULL;
-    }
-
-  return ObjectBody;
-}
-
-NTSTATUS FASTCALL
-ObmpInitializeObject(PUSER_HANDLE_TABLE HandleTable,
-		     PUSER_OBJECT_HEADER ObjectHeader,
-		     PHANDLE Handle,
-		     USER_OBJECT_TYPE ObjectType,
-		     ULONG ObjectSize)
-{
-  DWORD Status = STATUS_SUCCESS;
-
-  ObjectHeader->Type = ObjectType;
-  ObjectHeader->HandleCount = 0;
-  ObjectHeader->RefCount = 1;
-  ObjectHeader->Size = ObjectSize;
-
-  if (Handle != NULL)
-    {
-      Status = ObmCreateHandle(HandleTable,
-			       USER_HEADER_TO_BODY(ObjectHeader),
-			       Handle);
-    }
-
-  return Status;
-}
-
-
-ULONG FASTCALL
-ObmGetReferenceCount(PVOID ObjectBody)
-{
-  PUSER_OBJECT_HEADER ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  return ObjectHeader->RefCount;
-}
-
-ULONG FASTCALL
-ObmGetHandleCount(PVOID ObjectBody)
-{
-  PUSER_OBJECT_HEADER ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  return ObjectHeader->HandleCount;
-}
-
-VOID FASTCALL
-ObmReferenceObject(PVOID ObjectBody)
-/*
- * FUNCTION: Increments a given object's reference count and performs
- *           retention checks
- * ARGUMENTS:
- *   ObjectBody = Body of the object
- */
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-
-  if (!ObjectBody)
-    {
-      DPRINT1("Cannot Reference NULL!\n");
-      return;
-    }
-
-  ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  ObjectHeader->RefCount++;
-
-  ObmpPerformRetentionChecks(ObjectHeader);
-}
-
-VOID FASTCALL
-ObmDereferenceObject(PVOID ObjectBody)
-/*
- * FUNCTION: Decrements a given object's reference count and performs
- *           retention checks
- * ARGUMENTS:
- *   ObjectBody = Body of the object
- */
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-
-  if (!ObjectBody)
-    {
-      DPRINT1("Cannot Dereference NULL!\n");
-      return;
-    }
-
-  ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  ObjectHeader->RefCount--;
-  ObmpPerformRetentionChecks(ObjectHeader);
-}
-
-NTSTATUS FASTCALL
-ObmReferenceObjectByPointer(PVOID ObjectBody,
-			    USER_OBJECT_TYPE ObjectType)
-/*
- * FUNCTION: Increments the pointer reference count for a given object
- * ARGUMENTS:
- *         ObjectBody = Object's body
- *         ObjectType = Object type
- * RETURNS: Status
- */
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-
-  ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  if ((ObjectType != otUnknown) && (ObjectHeader->Type != ObjectType))
-    {
-      return STATUS_INVALID_PARAMETER;
-    }
-  ObjectHeader->RefCount++;
-
-  return STATUS_SUCCESS;
-}
-
-PVOID FASTCALL
-ObmCreateObject(PUSER_HANDLE_TABLE HandleTable,
-		PHANDLE Handle,
-		USER_OBJECT_TYPE ObjectType,
-		ULONG ObjectSize)
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-  PVOID ObjectBody;
-  DWORD Status;
-
-  ObjectHeader = (PUSER_OBJECT_HEADER)ExAllocatePool(PagedPool,
-				     ObjectSize + sizeof(USER_OBJECT_HEADER));
-  if (!ObjectHeader)
-    {
-      return NULL;
-    }
-
-  ObjectBody = USER_HEADER_TO_BODY(ObjectHeader);
-
-  RtlZeroMemory(ObjectBody, ObjectSize);
-
-  Status = ObmpInitializeObject(HandleTable,
-				ObjectHeader,
-				Handle,
-				ObjectType,
-				ObjectSize);
-
-  if (!NT_SUCCESS(Status))
-    {
-      ExFreePool(ObjectHeader);
-      return NULL;
-    }
-
-  return ObjectBody;
-}
-
-NTSTATUS FASTCALL
-ObmCreateHandle(PUSER_HANDLE_TABLE HandleTable,
-		PVOID ObjectBody,
-		PHANDLE HandleReturn)
-/*
- * FUNCTION: Add a handle referencing an object
- * ARGUMENTS:
- *   HandleTable = Table to put handle in
- *   ObjectBody  = Object body that the handle should refer to
- * RETURNS: The created handle
- */
-{
-  PUSER_HANDLE_BLOCK NewBlock;
-  PLIST_ENTRY Current;
-  ULONG Handle;
-  ULONG i;
-
-  if (ObjectBody != NULL)
-    {
-      USER_BODY_TO_HEADER(ObjectBody)->HandleCount++;
-    }
-
-  Handle = 1;
-  Current = HandleTable->ListHead.Flink;
-  /*
-   * Scan through the currently allocated Handle blocks looking for a free
-   * slot
-   */
-  while (Current != &(HandleTable->ListHead))
-    {
-      PUSER_HANDLE_BLOCK Block =
-	CONTAINING_RECORD(Current, USER_HANDLE_BLOCK, ListEntry);
-
-      for (i = 0; i < HANDLE_BLOCK_ENTRIES; i++)
-	{
-	  if (!Block->Handles[i].ObjectBody)
-	    {
-	      Block->Handles[i].ObjectBody = ObjectBody;
-	      *HandleReturn = (HANDLE)((Handle + i) << 2);
-	      return STATUS_SUCCESS;
-	    }
-	}
-
-      Handle = Handle + HANDLE_BLOCK_ENTRIES;
-      Current = Current->Flink;
-    }
-
-  /*
-   * Add a new Handle block to the end of the list
-   */
-  NewBlock = (PUSER_HANDLE_BLOCK)ExAllocatePool(PagedPool,
-						sizeof(USER_HANDLE_BLOCK));
-  if (!NewBlock)
-    {
-      DPRINT1("Unable to allocate new handle block\n");
-      *HandleReturn = (PHANDLE)NULL;
-      return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-  RtlZeroMemory(NewBlock, sizeof(USER_HANDLE_BLOCK));
-  NewBlock->Handles[0].ObjectBody = ObjectBody;
-  InsertTailList(&HandleTable->ListHead, &NewBlock->ListEntry);
-  *HandleReturn = (HANDLE)(Handle << 2);
-
-  return STATUS_SUCCESS;
-}
-
-NTSTATUS FASTCALL
-ObmReferenceObjectByHandle(PUSER_HANDLE_TABLE HandleTable,
-			   HANDLE Handle,
-			   USER_OBJECT_TYPE ObjectType,
-			   PVOID* Object)
-/*
- * FUNCTION: Increments the reference count for an object and returns a
- *           pointer to its body
- * ARGUMENTS:
- *         HandleTable = Table to search
- *         Handle = Handle for the object
- *         ObjectType = Type of object
- *         Object (OUT) = Points to the object body on return
- * RETURNS: Status
- */
-{
-  PUSER_OBJECT_HEADER ObjectHeader;
-  PUSER_HANDLE UserHandle;
-  PVOID ObjectBody;
-
-  UserHandle = ObmpGetObjectByHandle(HandleTable, Handle);
-
-  if ((UserHandle == NULL) || (UserHandle->ObjectBody == NULL))
-    {
-      return STATUS_UNSUCCESSFUL;
-    }
-
-  ObjectBody = UserHandle->ObjectBody;
-  ObmReferenceObjectByPointer(ObjectBody, ObjectType);
-
-  ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
-
-  if ((ObjectType != otUnknown) && (ObjectHeader->Type != ObjectType))
-    {
-      DPRINT1("Object type mismatch 0x%x 0x%x\n", ObjectType, ObjectHeader->Type);
-      ObmDereferenceObject(ObjectBody);
-      return STATUS_UNSUCCESSFUL;
-    }
-
-  *Object = ObjectBody;
-
-  return STATUS_SUCCESS;
-}
-
-NTSTATUS FASTCALL
-ObmCloseHandle(PUSER_HANDLE_TABLE HandleTable,
-	       HANDLE Handle)
-{
-  PVOID ObjectBody;
-
-  ObjectBody = ObmpDeleteHandle(HandleTable, Handle);
-  if (ObjectBody == NULL)
-    {
-      return STATUS_UNSUCCESSFUL;
-    }
-
-  ObmDereferenceObject(ObjectBody);
-
-  return STATUS_SUCCESS;
-}
-
-VOID FASTCALL
-ObmInitializeHandleTable(PUSER_HANDLE_TABLE HandleTable)
-{
-  InitializeListHead(&HandleTable->ListHead);
-}
-
-VOID FASTCALL
-ObmFreeHandleTable(PUSER_HANDLE_TABLE HandleTable)
-{
-  ObmpDeleteHandleTable(HandleTable);
-}
-
-PUSER_HANDLE_TABLE FASTCALL
-ObmCreateHandleTable(VOID)
-{
-  PUSER_HANDLE_TABLE HandleTable;
-
-  HandleTable = (PUSER_HANDLE_TABLE)ExAllocatePool(PagedPool,
-						   sizeof(USER_HANDLE_TABLE));
-  if (!HandleTable)
-    {
-      DPRINT1("Unable to create handle table\n");
-      return NULL;
-    }
-
-  ObmInitializeHandleTable(HandleTable);
-
-  return HandleTable;
-}
-
-VOID FASTCALL
-ObmDestroyHandleTable(PUSER_HANDLE_TABLE HandleTable)
-{
-  ObmFreeHandleTable(HandleTable);
-  ExFreePool(HandleTable);
-}
-
-/* EOF */

Deleted: trunk/reactos/subsys/win32k/misc/ssec.c
--- trunk/reactos/subsys/win32k/misc/ssec.c	2005-09-06 07:58:43 UTC (rev 17692)
+++ trunk/reactos/subsys/win32k/misc/ssec.c	2005-09-06 09:35:39 UTC (rev 17693)
@@ -1,421 +0,0 @@
-/*
- *  ReactOS W32 Subsystem
- *  Copyright (C) 1998 - 2005 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * PURPOSE:          shared sections support
- * FILE:             subsys/win32k/misc/ssec.c
- * PROGRAMER:        Thomas Weidenmueller <w3seek@reactos.com>
- */
-
-#include <w32k.h>
-
-#define NDEBUG
-#include <debug.h>
-
-/*
- * FIXME - instead of mapping the memory into system space using
- *         MmMapViewInSystemSpace() we should rather use
- *         MmMapViewInSessionSpace() to map it into session space!
- */
-
-NTSTATUS INTERNAL_CALL
-IntUserCreateSharedSectionPool(IN ULONG MaximumPoolSize,
-                               IN PSHARED_SECTION_POOL *SharedSectionPool)
-{
-  PSHARED_SECTION_POOL Pool;
-  ULONG PoolStructSize;
-
-  ASSERT(SharedSectionPool);
-
-  PoolStructSize = ROUND_UP(sizeof(SHARED_SECTION_POOL), PAGE_SIZE);
-  Pool = ExAllocatePoolWithTag(NonPagedPool,
-                               PoolStructSize,
-                               TAG_SSECTPOOL);
-  if(Pool != NULL)
-  {
-    RtlZeroMemory(Pool, PoolStructSize);
-
-    /* initialize the session heap */
-    ExInitializeFastMutex(&Pool->Lock);
-    Pool->PoolSize = ROUND_UP(MaximumPoolSize, PAGE_SIZE);
-    Pool->PoolFree = Pool->PoolSize;
-    Pool->SharedSectionCount = 0;
-    Pool->SectionsArray.Next = NULL;
-    Pool->SectionsArray.nEntries = ((PoolStructSize - sizeof(SHARED_SECTION_POOL)) /
-                                    sizeof(SHARED_SECTION)) - 1;
-
-    ASSERT(Pool->SectionsArray.nEntries > 0);
-
-    *SharedSectionPool = Pool;
-
-    return STATUS_SUCCESS;
-  }
-
-  return STATUS_INSUFFICIENT_RESOURCES;
-}
-
-
-VOID INTERNAL_CALL
-IntUserFreeSharedSectionPool(IN PSHARED_SECTION_POOL SharedSectionPool)
-{
-  PSHARED_SECTIONS_ARRAY Array, OldArray;
-  PSHARED_SECTION SharedSection, LastSharedSection;
-
-  ASSERT(SharedSectionPool);
-
-  Array = &SharedSectionPool->SectionsArray;
-
-  ExAcquireFastMutex(&SharedSectionPool->Lock);
-  while(SharedSectionPool->SharedSectionCount > 0 && Array != NULL)
-  {
-    for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries;
-        SharedSection != LastSharedSection && SharedSectionPool->SharedSectionCount > 0;
-        SharedSection++)
-    {
-      if(SharedSection->SectionObject != NULL)
-      {
-        ASSERT(SharedSection->SystemMappedBase);
-
-        /* FIXME - use MmUnmapViewInSessionSpace() once implemented! */
-        MmUnmapViewInSystemSpace(SharedSection->SystemMappedBase);
-        /* dereference the keep-alive reference so the section get's deleted */
-        ObDereferenceObject(SharedSection->SectionObject);
-
-        SharedSectionPool->SharedSectionCount--;
-      }
-    }
-
-    OldArray = Array;
-    Array = Array->Next;
-
-    /* all shared sections in this array were freed, link the following array to
-       the main session heap and free this array */
-    SharedSectionPool->SectionsArray.Next = Array;
-    ExFreePool(OldArray);
-  }
-
-  ASSERT(SharedSectionPool->SectionsArray.Next == NULL);
-  ASSERT(SharedSectionPool->SharedSectionCount == 0);
-
-  ExReleaseFastMutex(&SharedSectionPool->Lock);
-}
-
-
-NTSTATUS INTERNAL_CALL
-IntUserCreateSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool,
-                           IN OUT PVOID *SystemMappedBase,
-                           IN OUT ULONG *SharedSectionSize)
-{
-  PSHARED_SECTIONS_ARRAY Array, LastArray;
-  PSHARED_SECTION FreeSharedSection, SharedSection, LastSharedSection;
-  LARGE_INTEGER SectionSize;
-  ULONG Size;
-  NTSTATUS Status;
-
-  ASSERT(SharedSectionPool && SharedSectionSize && (*SharedSectionSize) > 0 && SystemMappedBase);
-
-  FreeSharedSection = NULL;
-
-  Size = ROUND_UP(*SharedSectionSize, PAGE_SIZE);
-
-  ExAcquireFastMutex(&SharedSectionPool->Lock);
-
-  if(Size > SharedSectionPool->PoolFree)
-  {
-    ExReleaseFastMutex(&SharedSectionPool->Lock);
-    DPRINT1("Shared Section Pool limit (0x%x KB) reached, attempted to allocate a 0x%x KB shared section!\n",
-            SharedSectionPool->PoolSize / 1024, (*SharedSectionSize) / 1024);
-    return STATUS_INSUFFICIENT_RESOURCES;
-  }
-
-  /* walk the array to find a free entry */
-  for(Array = &SharedSectionPool->SectionsArray, LastArray = Array;
-      Array != NULL && FreeSharedSection == NULL;
-      Array = Array->Next)
-  {
-    LastArray = Array;
-
-    for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries;
-        SharedSection != LastSharedSection;
-        SharedSection++)
-    {
-      if(SharedSection->SectionObject == NULL)
-      {
-        FreeSharedSection = SharedSection;
-        break;
-      }
-    }
-
-    if(Array->Next != NULL)
-    {
-      LastArray = Array;
-    }
-  }
-
-  ASSERT(LastArray);
-
-  if(FreeSharedSection == NULL)
-  {
-    ULONG nNewEntries;
-    PSHARED_SECTIONS_ARRAY NewArray;
-
-    ASSERT(LastArray->Next == NULL);
-
-    /* couldn't find a free entry in the array, extend the array */
-
-    nNewEntries = ((PAGE_SIZE - sizeof(SHARED_SECTIONS_ARRAY)) / sizeof(SHARED_SECTION)) + 1;
-    NewArray = ExAllocatePoolWithTag(NonPagedPool,
-                                     sizeof(SHARED_SECTIONS_ARRAY) + ((nNewEntries - 1) *
-                                                                      sizeof(SHARED_SECTION)),
-                                     TAG_SSECTPOOL);
-    if(NewArray == NULL)
-    {
-      ExReleaseFastMutex(&SharedSectionPool->Lock);
-      DPRINT1("Failed to allocate new array for shared sections!\n");
-      return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    NewArray->nEntries = nNewEntries;
-    NewArray->Next = NULL;
-    LastArray->Next = NewArray;
-
-    Array = NewArray;
-    FreeSharedSection = &Array->SharedSection[0];
-  }
-
-  ASSERT(FreeSharedSection);
-
-  /* now allocate a real section */
-
-  SectionSize.QuadPart = Size;
-  Status = MmCreateSection(&FreeSharedSection->SectionObject,
-                           SECTION_ALL_ACCESS,
-                           NULL,
-                           &SectionSize,
-                           PAGE_EXECUTE_READWRITE,
-                           SEC_COMMIT,
-                           NULL,
-                           NULL);
-  if(NT_SUCCESS(Status))
-  {
-    Status = MmMapViewInSystemSpace(FreeSharedSection->SectionObject,
-                                    &FreeSharedSection->SystemMappedBase,
-                                    &FreeSharedSection->ViewSize);
-    if(NT_SUCCESS(Status))
-    {
-      (*SharedSectionSize) -= Size;
-      SharedSectionPool->SharedSectionCount++;
-
-      *SystemMappedBase = FreeSharedSection->SystemMappedBase;
-      *SharedSectionSize = FreeSharedSection->ViewSize;
-    }
-    else
-    {
-      ObDereferenceObject(FreeSharedSection->SectionObject);
-      FreeSharedSection->SectionObject = NULL;
-      DPRINT1("Failed to map the shared section into system space! Status 0x%x\n", Status);
-    }
-  }
-
-  ExReleaseFastMutex(&SharedSectionPool->Lock);
-
-  return Status;
-}
-
-
-NTSTATUS INTERNAL_CALL
-InUserDeleteSharedSection(PSHARED_SECTION_POOL SharedSectionPool,
-                          PVOID SystemMappedBase)
-{
-  PSHARED_SECTIONS_ARRAY Array;
-  PSECTION_OBJECT SectionObject;
-  PSHARED_SECTION SharedSection, LastSharedSection;
-  NTSTATUS Status;
-
-  ASSERT(SharedSectionPool && SystemMappedBase);
-
-  SectionObject = NULL;
-
-  ExAcquireFastMutex(&SharedSectionPool->Lock);
-
-  for(Array = &SharedSectionPool->SectionsArray;
-      Array != NULL && SectionObject == NULL;
-      Array = Array->Next)
-  {
-    for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries;
-        SharedSection != LastSharedSection;
-        SharedSection++)
-    {
-      if(SharedSection->SystemMappedBase == SystemMappedBase)
-      {
-        SectionObject = SharedSection->SectionObject;
-        SharedSection->SectionObject = NULL;
-        SharedSection->SystemMappedBase = NULL;
-
-        ASSERT(SharedSectionPool->SharedSectionCount > 0);
-        SharedSectionPool->SharedSectionCount--;
-        break;
-      }
-    }
-  }
-
-  ExReleaseFastMutex(&SharedSectionPool->Lock);
-
-  if(SectionObject != NULL)
-  {
-    Status = MmUnmapViewInSystemSpace(SystemMappedBase);
-    ObDereferenceObject(SectionObject);
-  }
-  else
-  {
-    DPRINT1("Couldn't find and delete a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase);
-    Status = STATUS_UNSUCCESSFUL;
-  }
-
-  return Status;
-}
-
-
-NTSTATUS INTERNAL_CALL
-IntUserMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool,
-                        IN PEPROCESS Process,
-                        IN PVOID SystemMappedBase,
-                        IN PLARGE_INTEGER SectionOffset  OPTIONAL,
-                        IN OUT PVOID *UserMappedBase,
-                        IN PULONG ViewSize  OPTIONAL,
-                        IN BOOLEAN ReadOnly)
-{
-  PSHARED_SECTIONS_ARRAY Array;
-  PSECTION_OBJECT SectionObject;
-  PSHARED_SECTION SharedSection, LastSharedSection;
-  NTSTATUS Status;
-
-  ASSERT(SharedSectionPool && Process && SystemMappedBase && UserMappedBase);
-
-  SectionObject = NULL;
-  SharedSection = NULL;
-
-  ExAcquireFastMutex(&SharedSectionPool->Lock);
-
-  for(Array = &SharedSectionPool->SectionsArray;
-      Array != NULL && SectionObject == NULL;
-      Array = Array->Next)
-  {
-    for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries;
-        SharedSection != LastSharedSection;
-        SharedSection++)
-    {
-      if(SharedSection->SystemMappedBase == SystemMappedBase)
-      {
-        SectionObject = SharedSection->SectionObject;
-        break;
-      }
-    }
-  }
-
-  if(SectionObject != NULL)
-  {
-    ULONG RealViewSize = (ViewSize ? min(*ViewSize, SharedSection->ViewSize) : SharedSection->ViewSize);
-
-    ObReferenceObjectByPointer(SectionObject,
-                               (ReadOnly ? SECTION_MAP_READ : SECTION_MAP_READ | SECTION_MAP_WRITE),
-                               NULL,
-                               KernelMode);
-
-    Status = MmMapViewOfSection(SectionObject,
-                                Process,
-                                UserMappedBase,
-                                0,
-                                0,
-                                SectionOffset,
-                                &RealViewSize,
-                                ViewUnmap, /* not sure if we should inherit it... */
-                                MEM_COMMIT,
-                                (ReadOnly ? PAGE_READONLY : PAGE_READWRITE));
-    if(!NT_SUCCESS(Status))
-    {
-      DPRINT1("Failed to map shared section (readonly=%d) into user memory! Status: 0x%x\n", ReadOnly, Status);
-    }
-  }
-  else
-  {
-    DPRINT1("Couldn't find and map a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase);
-    Status = STATUS_UNSUCCESSFUL;
-  }
-
-  ExReleaseFastMutex(&SharedSectionPool->Lock);
-
-  return Status;
-}
-
-
-NTSTATUS INTERNAL_CALL
-IntUserUnMapSharedSection(IN PSHARED_SECTION_POOL SharedSectionPool,
-                          IN PEPROCESS Process,
-                          IN PVOID SystemMappedBase,
-                          IN PVOID UserMappedBase)
-{
-  PSHARED_SECTIONS_ARRAY Array;
-  PSECTION_OBJECT SectionObject;
-  PSHARED_SECTION SharedSection, LastSharedSection;
-  NTSTATUS Status;
-
-  ASSERT(SharedSectionPool && Process && SystemMappedBase && UserMappedBase);
-
-  SectionObject = NULL;
-
-  ExAcquireFastMutex(&SharedSectionPool->Lock);
-
-  for(Array = &SharedSectionPool->SectionsArray;
-      Array != NULL && SectionObject == NULL;
-      Array = Array->Next)
-  {
-    for(SharedSection = Array->SharedSection, LastSharedSection = SharedSection + Array->nEntries;
-        SharedSection != LastSharedSection;
-        SharedSection++)
-    {
-      if(SharedSection->SystemMappedBase == SystemMappedBase)
-      {
-        SectionObject = SharedSection->SectionObject;
-        break;
-      }
-    }
-  }
-
-  ExReleaseFastMutex(&SharedSectionPool->Lock);
-
-  if(SectionObject != NULL)
-  {
-    Status = MmUnmapViewOfSection(Process,
-                                  UserMappedBase);
-    ObDereferenceObject(SectionObject);
-    if(!NT_SUCCESS(Status))
-    {
-      DPRINT1("Failed to unmap shared section UserMappedBase=0x%x! Status: 0x%x\n", UserMappedBase, Status);
-    }
-  }
-  else
-  {
-    DPRINT1("Couldn't find and unmap a shared section with SystemMappedBase=0x%x!\n", SystemMappedBase);
-    Status = STATUS_UNSUCCESSFUL;
-  }
-
-  return Status;
-}

Copied: trunk/reactos/subsys/win32k/ntuser/object.c (from rev 17685, trunk/reactos/subsys/win32k/misc/object.c)

Copied: trunk/reactos/subsys/win32k/ntuser/ssec.c (from rev 17668, trunk/reactos/subsys/win32k/misc/ssec.c)

Modified: trunk/reactos/subsys/win32k/ntuser/window.c
--- trunk/reactos/subsys/win32k/ntuser/window.c	2005-09-06 07:58:43 UTC (rev 17692)
+++ trunk/reactos/subsys/win32k/ntuser/window.c	2005-09-06 09:35:39 UTC (rev 17693)
@@ -75,6 +75,18 @@
 
 /* HELPER FUNCTIONS ***********************************************************/
 
+
+
+/* temp hack */
+PWINDOW_OBJECT FASTCALL UserGetWindowObjectNoRef(HWND hWnd)
+{
+   
+   PWINDOW_OBJECT w = IntGetWindowObject(hWnd);
+   if (w) IntReleaseWindowObject(w);
+   return w;
+}
+
+
 /*
  * IntIsWindow
  *

Modified: trunk/reactos/subsys/win32k/win32k.xml
--- trunk/reactos/subsys/win32k/win32k.xml	2005-09-06 07:58:43 UTC (rev 17692)
+++ trunk/reactos/subsys/win32k/win32k.xml	2005-09-06 09:35:39 UTC (rev 17693)
@@ -58,8 +58,6 @@
 		<file>driver.c</file>
 		<file>error.c</file>
 		<file>math.c</file>
-		<file>object.c</file>
-		<file>ssec.c</file>
 		<file>copy.c</file>
 	</directory>
 	<directory name="ntddraw">
@@ -99,6 +97,8 @@
 		<file>window.c</file>
 		<file>winpos.c</file>
 		<file>winsta.c</file>
+		<file>object.c</file>
+		<file>ssec.c</file>
 	</directory>
 	<directory name="objects">
 		<file>bezier.c</file>