Sync with trunk r43123
[reactos.git] / reactos / subsystems / win32 / win32k / ntuser / hook.c
index 4263352..f816597 100644 (file)
@@ -104,7 +104,9 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt
         return NULL;
     }
 
-    Hook->Self = Handle;
+//    Hook->head.pti =?
+//    Hook->head.rpdesk
+    Hook->head.h = Handle;
     Hook->Thread = Thread;
     Hook->HookId = HookId;
 
@@ -115,9 +117,6 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt
         W32Thread->fsHooks |= HOOKID_TO_FLAG(HookId);
 
         GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks;
-
-        if (W32Thread->ThreadInfo != NULL)
-            W32Thread->ThreadInfo->fsHooks = W32Thread->fsHooks;
     }
 
     RtlInitUnicodeString(&Hook->ModuleName, NULL);
@@ -218,7 +217,7 @@ IntFreeHook(PHOOKTABLE Table, PHOOK Hook, PWINSTATION_OBJECT WinStaObj)
     }
 
     /* Close handle */
-    UserDeleteObject(Hook->Self, otHook);
+    UserDeleteObject(Hook->head.h, otHook);
 }
 
 /* remove a hook, freeing it if the chain is not in use */
@@ -229,11 +228,7 @@ IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked)
     PTHREADINFO W32Thread;
     PHOOKTABLE Table = IntGetTable(Hook);
 
-    ASSERT(NULL != Table);
-    if (NULL == Table)
-    {
-        return;
-    }
+    ASSERT(NULL != Table); // At this point this should not be null!
 
     W32Thread = ((PTHREADINFO)Hook->Thread->Tcb.Win32Thread);
     ASSERT(W32Thread != NULL);
@@ -241,9 +236,6 @@ IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked)
 
     GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks;
 
-    if (W32Thread->ThreadInfo != NULL)
-        W32Thread->ThreadInfo->fsHooks = W32Thread->fsHooks;
-
     if (0 != Table->Counts[HOOKID_TO_INDEX(Hook->HookId)])
     {
         Hook->Proc = NULL; /* chain is in use, just mark it and return */
@@ -304,7 +296,7 @@ IntCallLowLevelHook(PHOOK Hook, INT Code, WPARAM wParam, LPARAM lParam)
     /* FIXME should get timeout from
      * HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout */
     Status = co_MsqSendMessage(((PTHREADINFO)Hook->Thread->Tcb.Win32Thread)->MessageQueue,
-                                (HWND)Code,
+                                (HWND)(UINT_PTR)Code,
                                 Hook->HookId,
                                 wParam,
                                 lParam,
@@ -1141,7 +1133,7 @@ NtUserSetWindowsHookEx(HINSTANCE Mod,
         Mod = NULL;
         Global = FALSE;
 
-        if (!NT_SUCCESS(PsLookupThreadByThreadId((HANDLE) ThreadId, &Thread)))
+        if (!NT_SUCCESS(PsLookupThreadByThreadId((HANDLE)(DWORD_PTR) ThreadId, &Thread)))
         {
             DPRINT1("Invalid thread id 0x%x\n", ThreadId);
             SetLastWin32Error(ERROR_INVALID_PARAMETER);
@@ -1282,7 +1274,7 @@ NtUserSetWindowsHookEx(HINSTANCE Mod,
         Hook->Proc = HookProc;
 
     Hook->Ansi = Ansi;
-    Handle = Hook->Self;
+    Handle = Hook->head.h;
 
     /* Clear the client threads next hook. */
     ClientInfo->phkCurrent = 0;
@@ -1333,7 +1325,7 @@ NtUserUnhookWindowsHookEx(HHOOK Hook)
         RETURN( FALSE);
     }
 
-    ASSERT(Hook == HookObj->Self);
+    ASSERT(Hook == HookObj->head.h);
 
     IntRemoveHook(HookObj, WinStaObj, FALSE);
 
@@ -1347,5 +1339,5 @@ CLEANUP:
     UserLeave();
     END_CLEANUP;
 }
+
 /* EOF */