[ros-diffs] [gadamopoulos] 49114: [win32k] -Move checks for active hooks in co_HOOK_CallHooks

gadamopoulos at svn.reactos.org gadamopoulos at svn.reactos.org
Mon Oct 11 10:58:34 UTC 2010


Author: gadamopoulos
Date: Mon Oct 11 10:58:33 2010
New Revision: 49114

URL: http://svn.reactos.org/svn/reactos?rev=49114&view=rev
Log:
[win32k]
-Move checks for active hooks in co_HOOK_CallHooks

Modified:
    trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
    trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
    trunk/reactos/subsystems/win32/win32k/ntuser/message.c
    trunk/reactos/subsystems/win32/win32k/ntuser/window.c

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c?rev=49114&r1=49113&r2=49114&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/defwnd.c [iso-8859-1] Mon Oct 11 10:58:33 2010
@@ -117,7 +117,6 @@
       case WM_SYSCOMMAND:
       {
          DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Wnd->head.h, wParam, lParam );
-         if (!ISITHOOKED(WH_CBT)) break;
          lResult = co_HOOK_CallHooks(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam);
          break;
       }
@@ -145,8 +144,6 @@
 
       case WM_CBT:
       {
-         if (!ISITHOOKED(WH_CBT)) break;
-
          switch (wParam)
          {
             case HCBT_MOVESIZE:

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/hook.c?rev=49114&r1=49113&r2=49114&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] Mon Oct 11 10:58:33 2010
@@ -331,6 +331,12 @@
     NTSTATUS Status;
 
     ASSERT(WH_MINHOOK <= HookId && HookId <= WH_MAXHOOK);
+
+    /* FIXME! Check pDeskInfo->fsHooks for global hooks! */
+    if (!ISITHOOKED(HookId))
+    {
+        return 0;
+    }
 
     pti = PsGetCurrentThreadWin32Thread();
     if (!pti)

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/message.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/message.c?rev=49114&r1=49113&r2=49114&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] Mon Oct 11 10:58:33 2010
@@ -330,20 +330,16 @@
 ( PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 {
    BOOL SameThread = FALSE;
+   CWPSTRUCT CWP;
 
    if (Window->head.pti == ((PTHREADINFO)PsGetCurrentThreadWin32Thread()))
       SameThread = TRUE;
 
-   if ((!SameThread && (Window->head.pti->fsHooks & HOOKID_TO_FLAG(WH_CALLWNDPROC))) ||
-        (SameThread && ISITHOOKED(WH_CALLWNDPROC)) )
-   {
-      CWPSTRUCT CWP;
-      CWP.hwnd    = hWnd;
-      CWP.message = Msg;
-      CWP.wParam  = wParam;
-      CWP.lParam  = lParam;
-      co_HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, SameThread, (LPARAM)&CWP );
-   }
+   CWP.hwnd    = hWnd;
+   CWP.message = Msg;
+   CWP.wParam  = wParam;
+   CWP.lParam  = lParam;
+   co_HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, SameThread, (LPARAM)&CWP );
 }
 
 static
@@ -353,21 +349,17 @@
 ( PWND Window, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *uResult)
 {
    BOOL SameThread = FALSE;
+   CWPRETSTRUCT CWPR;
 
    if (Window->head.pti == ((PTHREADINFO)PsGetCurrentThreadWin32Thread()))
       SameThread = TRUE;
 
-   if ((!SameThread && (Window->head.pti->fsHooks & HOOKID_TO_FLAG(WH_CALLWNDPROCRET))) ||
-        (SameThread && ISITHOOKED(WH_CALLWNDPROCRET)) )
-   {
-      CWPRETSTRUCT CWPR;
-      CWPR.hwnd    = hWnd;
-      CWPR.message = Msg;
-      CWPR.wParam  = wParam;
-      CWPR.lParam  = lParam;
-      CWPR.lResult = *uResult;
-      co_HOOK_CallHooks( WH_CALLWNDPROCRET, HC_ACTION, SameThread, (LPARAM)&CWPR );
-   }
+   CWPR.hwnd    = hWnd;
+   CWPR.message = Msg;
+   CWPR.wParam  = wParam;
+   CWPR.lParam  = lParam;
+   CWPR.lResult = *uResult;
+   co_HOOK_CallHooks( WH_CALLWNDPROCRET, HC_ACTION, SameThread, (LPARAM)&CWPR );
 }
 
 LRESULT
@@ -709,17 +701,14 @@
                            Msg->message,
                            (LPARAM)&MHook ))
     {
-        if (ISITHOOKED(WH_CBT))
-        {
-            MHook.pt           = Msg->pt;
-            MHook.hwnd         = Msg->hwnd;
-            MHook.wHitTestCode = HitTest;
-            MHook.dwExtraInfo  = 0;
-            co_HOOK_CallHooks( WH_CBT,
-                               HCBT_CLICKSKIPPED,
-                               Msg->message,
-                               (LPARAM)&MHook);
-        }
+        MHook.pt           = Msg->pt;
+        MHook.hwnd         = Msg->hwnd;
+        MHook.wHitTestCode = HitTest;
+        MHook.dwExtraInfo  = 0;
+        co_HOOK_CallHooks( WH_CBT,
+                           HCBT_CLICKSKIPPED,
+                           Msg->message,
+                           (LPARAM)&MHook);
         return FALSE;
     }
 
@@ -743,14 +732,11 @@
                            LOWORD(Msg->wParam),
                            Msg->lParam))
     {
-        if (ISITHOOKED(WH_CBT))
-        {
-            /* skip this message */
-            co_HOOK_CallHooks( WH_CBT,
-                               HCBT_KEYSKIPPED,
-                               LOWORD(Msg->wParam),
-                               Msg->lParam );
-        }
+        /* skip this message */
+        co_HOOK_CallHooks( WH_CBT,
+                           HCBT_KEYSKIPPED,
+                           LOWORD(Msg->wParam),
+                           Msg->lParam );
         return FALSE;
     }
 	return TRUE;
@@ -965,7 +951,7 @@
 MsgExit:
       pti->rpdesk->htEx = HitTest; /* Now set the capture hit. */
 
-      if ( ISITHOOKED(WH_MOUSE) && IS_MOUSE_MESSAGE(Msg->Msg.message))
+      if ( IS_MOUSE_MESSAGE(Msg->Msg.message))
       {
           if (!ProcessMouseMessage(&Msg->Msg, HitTest, RemoveMsg))
           {
@@ -973,7 +959,7 @@
           }
       }
 
-      if ( ISITHOOKED(WH_KEYBOARD) && IS_KBD_MESSAGE(Msg->Msg.message))
+      if ( IS_KBD_MESSAGE(Msg->Msg.message))
       {
           if(!ProcessKeyboardMessage(&Msg->Msg, RemoveMsg))
           {
@@ -982,11 +968,8 @@
       }
       // The WH_GETMESSAGE hook enables an application to monitor messages about to
       // be returned by the GetMessage or PeekMessage function.
-      if (ISITHOOKED(WH_GETMESSAGE))
-      {
-         //DPRINT1("Peek WH_GETMESSAGE -> %x\n",&Msg);
-         co_HOOK_CallHooks( WH_GETMESSAGE, HC_ACTION, RemoveMsg & PM_REMOVE, (LPARAM)&Msg->Msg);
-      }
+
+      co_HOOK_CallHooks( WH_GETMESSAGE, HC_ACTION, RemoveMsg & PM_REMOVE, (LPARAM)&Msg->Msg);
       return TRUE;
    }
 
@@ -2419,17 +2402,13 @@
 
    if (BadChk) RETURN( FALSE);
 
-   if ( ISITHOOKED(WH_SYSMSGFILTER) &&
-        co_HOOK_CallHooks( WH_SYSMSGFILTER, code, 0, (LPARAM)&Msg))
+   if ( co_HOOK_CallHooks( WH_SYSMSGFILTER, code, 0, (LPARAM)&Msg))
    {
       Ret = TRUE;
    }
    else
    {
-      if ( ISITHOOKED(WH_MSGFILTER) )
-      {
-         Ret = co_HOOK_CallHooks( WH_MSGFILTER, code, 0, (LPARAM)&Msg);
-      }
+      Ret = co_HOOK_CallHooks( WH_MSGFILTER, code, 0, (LPARAM)&Msg);
    }
 
    _SEH2_TRY
@@ -2620,12 +2599,13 @@
       case FNID_SENDMESSAGECALLBACK:
       {
          PCALL_BACK_INFO CallBackInfo = (PCALL_BACK_INFO)ResultInfo;
+         ULONG_PTR uResult;
 
          if (!CallBackInfo)
             break;
 
          if (!co_IntSendMessageWithCallBack(hWnd, Msg, wParam, lParam,
-             CallBackInfo->CallBack, CallBackInfo->Context, NULL))
+             CallBackInfo->CallBack, CallBackInfo->Context, &uResult))
          {
             DPRINT1("Callback failure!\n");
          }

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/window.c?rev=49114&r1=49113&r2=49114&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Mon Oct 11 10:58:33 2010
@@ -1966,14 +1966,13 @@
    Cs->style = Window->style; /* HCBT_CREATEWND needs the real window style */
    CbtCreate.lpcs = Cs;
    CbtCreate.hwndInsertAfter = HWND_TOP;
-   if (ISITHOOKED(WH_CBT))
-   {
-      if (co_HOOK_CallHooks(WH_CBT, HCBT_CREATEWND, (WPARAM) hWnd, (LPARAM) &CbtCreate))
-      {
-         DPRINT1("HCBT_CREATEWND hook failed!\n");
-         RETURN( (PWND) NULL);
-      }
-   }
+
+   if (co_HOOK_CallHooks(WH_CBT, HCBT_CREATEWND, (WPARAM) hWnd, (LPARAM) &CbtCreate))
+   {
+      DPRINT1("HCBT_CREATEWND hook failed!\n");
+      RETURN( (PWND) NULL);
+   }
+
    Cs->style = dwStyle; /* NCCREATE and WM_NCCALCSIZE need the original values*/
 
    /* Send the WM_GETMINMAXINFO message*/
@@ -2342,7 +2341,7 @@
    }
 
    /* If window was created successfully and it is hooked */
-   if ((Window->state2 & WNDS2_WMCREATEMSGPROCESSED) && (ISITHOOKED(WH_CBT)))
+   if ((Window->state2 & WNDS2_WMCREATEMSGPROCESSED))
    {
       if (co_HOOK_CallHooks(WH_CBT, HCBT_DESTROYWND, (WPARAM) hWnd, 0)) return FALSE;
    }




More information about the Ros-diffs mailing list