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);
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
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
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)