mirror of
https://github.com/reactos/reactos.git
synced 2024-07-05 12:15:46 +00:00
Win32 structure cleanup (WIP):
- Use CLIENTINFO.ulClientDelta instead of W32THREADINFO.DesktopHeapDelta - Remove DesktopHeapDelta from W32THREADINFO- Add PtiList to DESKTOP - Add pClientInfo to THREADINFO svn path=/trunk/; revision=36800
This commit is contained in:
parent
eed100a55c
commit
9353696890
|
@ -65,12 +65,14 @@ static __inline PVOID
|
|||
DesktopPtrToUser(PVOID Ptr)
|
||||
{
|
||||
PW32THREADINFO ti = GetW32ThreadInfo();
|
||||
PCLIENTINFO pci = GetWin32ClientInfo();
|
||||
|
||||
ASSERT(Ptr != NULL);
|
||||
ASSERT(ti != NULL);
|
||||
if ((ULONG_PTR)Ptr >= (ULONG_PTR)ti->DesktopHeapBase &&
|
||||
(ULONG_PTR)Ptr < (ULONG_PTR)ti->DesktopHeapBase + ti->DesktopHeapLimit)
|
||||
{
|
||||
return (PVOID)((ULONG_PTR)Ptr - ti->DesktopHeapDelta);
|
||||
return (PVOID)((ULONG_PTR)Ptr - pci->ulClientDelta);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -312,7 +312,6 @@ typedef struct _W32THREADINFO
|
|||
PDESKTOPINFO Desktop;
|
||||
PVOID DesktopHeapBase;
|
||||
ULONG_PTR DesktopHeapLimit;
|
||||
ULONG_PTR DesktopHeapDelta;
|
||||
/* A mask of what hooks are currently active */
|
||||
ULONG Hooks;
|
||||
CLIENTTHREADINFO ClientThreadInfo;
|
||||
|
|
|
@ -10,6 +10,8 @@ typedef struct _DESKTOP
|
|||
CSHORT Size;
|
||||
LIST_ENTRY ListEntry;
|
||||
|
||||
LIST_ENTRY PtiList;
|
||||
|
||||
/* Pointer to the associated window station. */
|
||||
struct _WINSTATION_OBJECT *WindowStation;
|
||||
/* Pointer to the active queue. */
|
||||
|
@ -203,7 +205,9 @@ DesktopHeapGetUserDelta(VOID)
|
|||
ULONG_PTR Delta = 0;
|
||||
|
||||
pti = PsGetCurrentThreadWin32Thread();
|
||||
ASSERT(pti->Desktop != NULL);
|
||||
if (!pti->Desktop)
|
||||
return 0;
|
||||
|
||||
hDesktopHeap = pti->Desktop->hDesktopHeap;
|
||||
|
||||
Mapping = PsGetCurrentProcessWin32Process()->HeapMappings.Next;
|
||||
|
|
|
@ -28,6 +28,7 @@ typedef struct _THREADINFO
|
|||
{
|
||||
W32THREAD W32Thread;
|
||||
PDESKTOPINFO pDeskInfo;
|
||||
PCLIENTINFO pClientInfo;
|
||||
LIST_ENTRY PtiLink;
|
||||
|
||||
struct _USER_MESSAGE_QUEUE* MessageQueue;
|
||||
|
|
|
@ -1768,9 +1768,9 @@ IntUnmapDesktopView(IN PDESKTOP DesktopObject)
|
|||
ti->Desktop = NULL;
|
||||
ti->DesktopHeapBase = NULL;
|
||||
ti->DesktopHeapLimit = 0;
|
||||
ti->DesktopHeapDelta = 0;
|
||||
}
|
||||
}
|
||||
GetWin32ClientInfo()->ulClientDelta = 0;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
@ -1846,9 +1846,9 @@ IntMapDesktopView(IN PDESKTOP DesktopObject)
|
|||
ti->Desktop = DesktopObject->DesktopInfo;
|
||||
ti->DesktopHeapBase = DesktopObject->hDesktopHeap;
|
||||
ti->DesktopHeapLimit = ViewSize;
|
||||
ti->DesktopHeapDelta = DesktopHeapGetUserDelta();
|
||||
}
|
||||
}
|
||||
GetWin32ClientInfo()->ulClientDelta = DesktopHeapGetUserDelta();
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
@ -1895,10 +1895,15 @@ IntSetThreadDesktop(IN PDESKTOP DesktopObject,
|
|||
if (ti != NULL)
|
||||
{
|
||||
ti->Desktop = NULL;
|
||||
ti->DesktopHeapDelta = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Hack for system threads */
|
||||
if (NtCurrentTeb())
|
||||
{
|
||||
GetWin32ClientInfo()->ulClientDelta = DesktopHeapGetUserDelta();
|
||||
}
|
||||
|
||||
if (OldDesktop != NULL &&
|
||||
!IntCheckProcessDesktopClasses(OldDesktop->DesktopInfo,
|
||||
FreeOnFailure))
|
||||
|
|
|
@ -464,14 +464,12 @@ GetW32ThreadInfo(VOID)
|
|||
ti->Desktop = W32Thread->Desktop->DesktopInfo;
|
||||
ti->DesktopHeapBase = W32Thread->Desktop->DesktopInfo->hKernelHeap;
|
||||
ti->DesktopHeapLimit = W32Thread->Desktop->DesktopInfo->HeapLimit;
|
||||
ti->DesktopHeapDelta = DesktopHeapGetUserDelta();
|
||||
}
|
||||
else
|
||||
{
|
||||
ti->Desktop = NULL;
|
||||
ti->DesktopHeapBase = NULL;
|
||||
ti->DesktopHeapLimit = 0;
|
||||
ti->DesktopHeapDelta = 0;
|
||||
}
|
||||
|
||||
W32Thread->ThreadInfo = ti;
|
||||
|
|
Loading…
Reference in a new issue