mirror of
https://github.com/reactos/reactos.git
synced 2025-04-25 16:10:29 +00:00
- Migration changes from W32THREADINFO to use ThreadInfo for kernel space and user space pointer reference, and use ClientInfo from TEB for user space. Next change will have the full removal of W32THREADINFO.
svn path=/trunk/; revision=40916
This commit is contained in:
parent
e9478231e2
commit
d67caa6f8c
2 changed files with 30 additions and 20 deletions
|
@ -103,7 +103,7 @@ GetThreadDesktopInfo(VOID)
|
||||||
|
|
||||||
ti = GetW32ThreadInfo();
|
ti = GetW32ThreadInfo();
|
||||||
if (ti != NULL)
|
if (ti != NULL)
|
||||||
di = DesktopPtrToUser(ti->pDeskInfo);
|
di = GetWin32ClientInfo()->pDeskInfo;
|
||||||
|
|
||||||
return di;
|
return di;
|
||||||
}
|
}
|
||||||
|
|
|
@ -504,17 +504,18 @@ GetW32ThreadInfo(VOID)
|
||||||
{
|
{
|
||||||
PTEB Teb;
|
PTEB Teb;
|
||||||
PW32THREADINFO ti;
|
PW32THREADINFO ti;
|
||||||
PCLIENTINFO ci;
|
PPROCESSINFO ppi;
|
||||||
PTHREADINFO W32Thread = PsGetCurrentThreadWin32Thread();
|
PCLIENTINFO pci;
|
||||||
|
PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
|
||||||
|
|
||||||
if (W32Thread == NULL)
|
if (pti == NULL)
|
||||||
{
|
{
|
||||||
/* FIXME - temporary hack for system threads... */
|
/* FIXME - temporary hack for system threads... */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate a THREADINFO structure if neccessary */
|
/* allocate a THREADINFO structure if neccessary */
|
||||||
if (W32Thread->ThreadInfo == NULL)
|
if (pti->ThreadInfo == NULL)
|
||||||
{
|
{
|
||||||
ti = UserHeapAlloc(sizeof(W32THREADINFO));
|
ti = UserHeapAlloc(sizeof(W32THREADINFO));
|
||||||
if (ti != NULL)
|
if (ti != NULL)
|
||||||
|
@ -523,33 +524,42 @@ GetW32ThreadInfo(VOID)
|
||||||
sizeof(W32THREADINFO));
|
sizeof(W32THREADINFO));
|
||||||
|
|
||||||
/* initialize it */
|
/* initialize it */
|
||||||
ti->ppi = GetW32ProcessInfo();
|
ti->ppi = ppi = GetW32ProcessInfo();
|
||||||
ti->fsHooks = W32Thread->fsHooks;
|
ti->fsHooks = pti->fsHooks;
|
||||||
W32Thread->pcti = &W32Thread->cti; // FIXME
|
pti->pcti = &pti->cti; // FIXME Need to set it in desktop.c!
|
||||||
if (W32Thread->Desktop != NULL)
|
if (pti->Desktop != NULL)
|
||||||
{
|
{
|
||||||
ti->pDeskInfo = W32Thread->Desktop->DesktopInfo;
|
pti->pDeskInfo = ti->pDeskInfo = pti->Desktop->DesktopInfo;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ti->pDeskInfo = NULL;
|
pti->pDeskInfo = ti->pDeskInfo = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
W32Thread->ThreadInfo = ti;
|
pti->ThreadInfo = ti;
|
||||||
/* update the TEB */
|
/* update the TEB */
|
||||||
Teb = NtCurrentTeb();
|
Teb = NtCurrentTeb();
|
||||||
ci = GetWin32ClientInfo();
|
pci = GetWin32ClientInfo();
|
||||||
W32Thread->pClientInfo = ci;
|
pti->pClientInfo = pci;
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForWrite(Teb,
|
ProbeForWrite(Teb,
|
||||||
sizeof(TEB),
|
sizeof(TEB),
|
||||||
sizeof(ULONG));
|
sizeof(ULONG));
|
||||||
// FIXME PLEASE! it's a ref pointer and not user data! Use ClientThreadInfo!
|
|
||||||
Teb->Win32ThreadInfo = UserHeapAddressToUser(W32Thread->ThreadInfo);
|
Teb->Win32ThreadInfo = UserHeapAddressToUser(pti->ThreadInfo);
|
||||||
// ci->pClientThreadInfo = &ti->ClientThreadInfo; // FIXME!
|
|
||||||
ci->pClientThreadInfo = NULL;
|
pci->pClientThreadInfo = NULL; // FIXME Need to set it in desktop.c!
|
||||||
ci->ppi = ti->ppi;
|
pci->ppi = ppi;
|
||||||
|
pci->fsHooks = pti->fsHooks;
|
||||||
|
/* CI may not have been initialized. */
|
||||||
|
if (!pci->pDeskInfo && pti->pDeskInfo)
|
||||||
|
{
|
||||||
|
if (!pci->ulClientDelta) pci->ulClientDelta = DesktopHeapGetUserDelta();
|
||||||
|
|
||||||
|
pci->pDeskInfo =
|
||||||
|
(PVOID)((ULONG_PTR)pti->pDeskInfo - pci->ulClientDelta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -563,7 +573,7 @@ GetW32ThreadInfo(VOID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return W32Thread->ThreadInfo;
|
return pti->ThreadInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue