Add support for winevent hooks.

diff --git a/server/protocol.def b/server/protocol.def
index 3307e93..94af8ad 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1519,7 +1519,8 @@
     MSG_CALLBACK_RESULT,/* result of a callback message */
     MSG_OTHER_PROCESS,  /* sent from other process, may include vararg data, always Unicode */
     MSG_POSTED,         /* posted message (from PostMessageW), always Unicode */
-    MSG_HARDWARE        /* hardware message */
+    MSG_HARDWARE,       /* hardware message */
+    MSG_WINEVENT        /* winevent message */
 };
 #define SEND_MSG_ABORT_IF_HUNG  0x01
 
@@ -1538,6 +1539,8 @@
     unsigned int    lparam;    /* parameters (result for MSG_CALLBACK_RESULT) */
     int             x;         /* x position */
     int             y;         /* y position */
+    user_handle_t   hook;      /* winevent hook handle */
+    void*           hook_proc; /* winevent hook proc address */
     unsigned int    time;      /* message time */
     unsigned int    info;      /* extra info (callback argument for MSG_CALLBACK_RESULT) */
     size_t          total;     /* total size of extra data */
@@ -2064,7 +2067,11 @@
 /* Set a window hook */
 @REQ(set_hook)
     int            id;             /* id of the hook */
+    process_id_t   pid;            /* id of process to set the hook into */
     thread_id_t    tid;            /* id of thread to set the hook into */
+    int            event_min;
+    int            event_max;
+    int            flags;
     void*          proc;           /* hook procedure */
     int            unicode;        /* is it a unicode hook? */
     VARARG(module,unicode_str);    /* module name */
@@ -2084,6 +2091,10 @@
 /* Start calling a hook chain */
 @REQ(start_hook_chain)
     int            id;             /* id of the hook */
+    int            event;          /* signalled event */
+    user_handle_t  window;         /* handle to the event window */
+    int            object_id;      /* object id for out of context winevent */
+    int            child_id;       /* child id for out of context winevent */
 @REPLY
     user_handle_t  handle;         /* handle to the next hook */
     process_id_t   pid;            /* process id for low-level keyboard/mouse hooks */
@@ -2103,6 +2114,10 @@
 /* Get the next hook to call */
 @REQ(get_next_hook)
     user_handle_t  handle;         /* handle to the current hook */
+    int            event;          /* signalled event */
+    user_handle_t  window;         /* handle to the event window */
+    int            object_id;      /* object id for out of context winevent */
+    int            child_id;       /* child id for out of context winevent */
 @REPLY
     user_handle_t  next;           /* handle to the next hook */
     int            id;             /* id of the next hook */