- Move update thread information hooks.

svn path=/trunk/; revision=40891
This commit is contained in:
James Tabor 2009-05-12 01:31:07 +00:00
parent 173cb6b1d0
commit 85d4ab3b58
4 changed files with 11 additions and 10 deletions

View file

@ -18,7 +18,7 @@ typedef struct tagHOOK
#define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1) #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
#define HOOKID_TO_INDEX(HookId) (HookId - WH_MINHOOK) #define HOOKID_TO_INDEX(HookId) (HookId - WH_MINHOOK)
#define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1)) #define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1))
#define ISITHOOKED(HookId) (((PTHREADINFO)PsGetCurrentThreadWin32Thread())->Hooks & HOOKID_TO_FLAG(HookId)) #define ISITHOOKED(HookId) (((PTHREADINFO)PsGetCurrentThreadWin32Thread())->fsHooks & HOOKID_TO_FLAG(HookId))
typedef struct tagHOOKTABLE typedef struct tagHOOKTABLE
{ {

View file

@ -42,13 +42,13 @@ typedef struct _THREADINFO
HANDLE hDesktop; HANDLE hDesktop;
UINT cPaintsReady; /* Count of paints pending. */ UINT cPaintsReady; /* Count of paints pending. */
UINT cTimersReady; /* Count of timers pending. */ UINT cTimersReady; /* Count of timers pending. */
ULONG fsHooks;
LIST_ENTRY PtiLink; LIST_ENTRY PtiLink;
LIST_ENTRY WindowListHead; LIST_ENTRY WindowListHead;
LIST_ENTRY W32CallbackListHead; LIST_ENTRY W32CallbackListHead;
BOOLEAN IsExiting; BOOLEAN IsExiting;
SINGLE_LIST_ENTRY ReferencesList; SINGLE_LIST_ENTRY ReferencesList;
ULONG Hooks;
PW32THREADINFO ThreadInfo; PW32THREADINFO ThreadInfo;
} THREADINFO, *PTHREADINFO; } THREADINFO, *PTHREADINFO;

View file

@ -108,12 +108,12 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt
{ {
W32Thread = ((PTHREADINFO)Thread->Tcb.Win32Thread); W32Thread = ((PTHREADINFO)Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL); ASSERT(W32Thread != NULL);
W32Thread->Hooks |= HOOKID_TO_FLAG(HookId); W32Thread->fsHooks |= HOOKID_TO_FLAG(HookId);
GetWin32ClientInfo()->fsHooks = W32Thread->Hooks; GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks;
if (W32Thread->ThreadInfo != NULL) if (W32Thread->ThreadInfo != NULL)
W32Thread->ThreadInfo->fsHooks = W32Thread->Hooks; W32Thread->ThreadInfo->fsHooks = W32Thread->fsHooks;
} }
RtlInitUnicodeString(&Hook->ModuleName, NULL); RtlInitUnicodeString(&Hook->ModuleName, NULL);
@ -222,12 +222,12 @@ IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked)
W32Thread = ((PTHREADINFO)Hook->Thread->Tcb.Win32Thread); W32Thread = ((PTHREADINFO)Hook->Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL); ASSERT(W32Thread != NULL);
W32Thread->Hooks &= ~HOOKID_TO_FLAG(Hook->HookId); W32Thread->fsHooks &= ~HOOKID_TO_FLAG(Hook->HookId);
GetWin32ClientInfo()->fsHooks = W32Thread->Hooks; GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks;
if (W32Thread->ThreadInfo != NULL) if (W32Thread->ThreadInfo != NULL)
W32Thread->ThreadInfo->fsHooks = W32Thread->Hooks; W32Thread->ThreadInfo->fsHooks = W32Thread->fsHooks;
if (0 != Table->Counts[HOOKID_TO_INDEX(Hook->HookId)]) if (0 != Table->Counts[HOOKID_TO_INDEX(Hook->HookId)])
{ {

View file

@ -524,8 +524,9 @@ GetW32ThreadInfo(VOID)
/* initialize it */ /* initialize it */
ti->ppi = GetW32ProcessInfo(); ti->ppi = GetW32ProcessInfo();
ti->fsHooks = W32Thread->Hooks; ti->fsHooks = W32Thread->fsHooks;
W32Thread->pcti = &ti->ClientThreadInfo; // W32Thread->pcti = &ti->ClientThreadInfo;
W32Thread->pcti = NULL; // FIXME
if (W32Thread->Desktop != NULL) if (W32Thread->Desktop != NULL)
{ {
ti->pDeskInfo = W32Thread->Desktop->DesktopInfo; ti->pDeskInfo = W32Thread->Desktop->DesktopInfo;