[CSRSS]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Tue, 5 Jan 2010 18:13:00 +0000 (18:13 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Tue, 5 Jan 2010 18:13:00 +0000 (18:13 +0000)
Merge from ams64 branch:
35805 remove unneeded msvcrt dependency (all win32 projects already depend on it) (Samuel SerapiĆ³n)
36992 - Fix csrss compilation (treat handles as pointer sized, use SIZE_T where appropriate) (Stefan Ginsberg)
41485 Fix 64bit issues. (Timo Kreuzer)
41531 fix pointer <-> DWORD casts (Timo Kreuzer)
41536 win32csr: convert to spec (Timo Kreuzer)
43838 Fix csrss build. (Samuel SerapiĆ³n)

svn path=/trunk/; revision=44952

1  2 
reactos/subsystems/win32/csrss/api/handle.c
reactos/subsystems/win32/csrss/api/wapi.c
reactos/subsystems/win32/csrss/win32csr/dllmain.c
reactos/subsystems/win32/csrss/win32csr/win32csr.rbuild

@@@ -77,7 -77,8 +77,7 @@@ CsrGetObject
      Object_t **Object,
      DWORD Access )
  {
-     ULONG h = (ULONG)Handle >> 2;
 -  ULONG_PTR h = (ULONG_PTR)Handle >> 2;
 -  DPRINT("CsrGetObject, Object: %x, %x, %x\n", Object, Handle, ProcessData ? ProcessData->HandleTableSize : 0);
++    ULONG_PTR h = (ULONG_PTR)Handle >> 2;
  
      DPRINT("CsrGetObject, Object: %x, %x, %x\n", 
             Object, Handle, ProcessData ? ProcessData->HandleTableSize : 0);
@@@ -130,8 -131,8 +130,8 @@@ CsrReleaseObject
      PCSRSS_PROCESS_DATA ProcessData,
      HANDLE Handle)
  {
-     ULONG h = (ULONG)Handle >> 2;
 -  ULONG_PTR h = (ULONG_PTR)Handle >> 2;
 -  Object_t *Object;
++    ULONG_PTR h = (ULONG_PTR)Handle >> 2;
 +    Object_t *Object;
  
      RtlEnterCriticalSection(&ProcessData->HandleTableLock);
      if (h >= ProcessData->HandleTableSize
@@@ -165,32 -166,32 +165,32 @@@ CsrInsertObject
          if (ProcessData->HandleTable[i].Object == NULL)
          {
              break;
 -        }
 -     }
 -   if (i >= ProcessData->HandleTableSize)
 -     {
 -       Block = RtlAllocateHeap(CsrssApiHeap,
 -                             HEAP_ZERO_MEMORY,
 -                             (ProcessData->HandleTableSize + 64) * sizeof(CSRSS_HANDLE));
 -       if (Block == NULL)
 -         {
 -           RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
 -         return(STATUS_UNSUCCESSFUL);
 -         }
 -       RtlCopyMemory(Block,
 -                   ProcessData->HandleTable,
 -                   ProcessData->HandleTableSize * sizeof(CSRSS_HANDLE));
 -       Block = _InterlockedExchangePointer((volatile void*)&ProcessData->HandleTable, Block);
 -       RtlFreeHeap( CsrssApiHeap, 0, Block );
 -       ProcessData->HandleTableSize += 64;
 -     }
 -   ProcessData->HandleTable[i].Object = Object;
 -   ProcessData->HandleTable[i].Access = Access;
 -   ProcessData->HandleTable[i].Inheritable = Inheritable;
 -   *Handle = (HANDLE)(ULONG_PTR)((i << 2) | 0x3);
 -   _InterlockedIncrement( &Object->ReferenceCount );
 -   RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
 -   return(STATUS_SUCCESS);
 +        }
 +    }
 +    if (i >= ProcessData->HandleTableSize)
 +    {
 +        Block = RtlAllocateHeap(CsrssApiHeap,
 +                                HEAP_ZERO_MEMORY,
 +                                (ProcessData->HandleTableSize + 64) * sizeof(CSRSS_HANDLE));
 +        if (Block == NULL)
 +        {
 +            RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
 +            return(STATUS_UNSUCCESSFUL);
 +        }
 +        RtlCopyMemory(Block,
 +                      ProcessData->HandleTable,
 +                      ProcessData->HandleTableSize * sizeof(CSRSS_HANDLE));
 +        Block = _InterlockedExchangePointer((void* volatile)&ProcessData->HandleTable, Block);
 +        RtlFreeHeap( CsrssApiHeap, 0, Block );
 +        ProcessData->HandleTableSize += 64;
 +    }
 +    ProcessData->HandleTable[i].Object = Object;
 +    ProcessData->HandleTable[i].Access = Access;
 +    ProcessData->HandleTable[i].Inheritable = Inheritable;
-     *Handle = (HANDLE)((i << 2) | 0x3);
++    *Handle = UlongToHandle((i << 2) | 0x3);
 +    _InterlockedIncrement( &Object->ReferenceCount );
 +    RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
 +    return(STATUS_SUCCESS);
  }
  
  NTSTATUS
@@@ -239,7 -240,7 +239,7 @@@ CsrVerifyObject
      PCSRSS_PROCESS_DATA ProcessData,
      HANDLE Handle)
  {
-     ULONG h = (ULONG)Handle >> 2;
 -  ULONG_PTR h = (ULONG_PTR)Handle >> 2;
++    ULONG_PTR h = (ULONG_PTR)Handle >> 2;
  
      if (h >= ProcessData->HandleTableSize ||
          ProcessData->HandleTable[h].Object == NULL)