diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 9f32b30..28f8b22 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -22,6 +22,7 @@
 typedef unsigned int thread_id_t;
 typedef unsigned int data_size_t;
 typedef unsigned int ioctl_code_t;
+typedef unsigned long lparam_t;
 typedef unsigned __int64 file_pos_t;
 
 struct request_header
@@ -171,8 +172,8 @@
 struct callback_msg_data
 {
     void           *callback;
-    unsigned long   data;
-    unsigned long   result;
+    lparam_t        data;
+    lparam_t        result;
 };
 
 struct winevent_msg_data
@@ -2449,8 +2450,8 @@
     int             flags;
     user_handle_t   win;
     unsigned int    msg;
-    unsigned long   wparam;
-    unsigned long   lparam;
+    lparam_t        wparam;
+    lparam_t        lparam;
     timeout_t       timeout;
     /* VARARG(data,message_data); */
 };
@@ -2492,9 +2493,9 @@
     user_handle_t   win;
     unsigned int    msg;
     unsigned int    time;
-    unsigned long   wparam;
-    unsigned long   lparam;
-    unsigned long   info;
+    lparam_t        wparam;
+    lparam_t        lparam;
+    lparam_t        info;
     int             x;
     int             y;
 };
@@ -2522,9 +2523,9 @@
     user_handle_t   win;
     int             type;
     unsigned int    msg;
-    unsigned long   wparam;
-    unsigned long   lparam;
-    unsigned long   info;
+    lparam_t        wparam;
+    lparam_t        lparam;
+    lparam_t        info;
     int             x;
     int             y;
     unsigned int    time;
@@ -2539,7 +2540,7 @@
 struct reply_message_request
 {
     struct request_header __header;
-    unsigned long   result;
+    lparam_t        result;
     int             remove;
     /* VARARG(data,bytes); */
 };
@@ -2572,7 +2573,7 @@
 struct get_message_reply_reply
 {
     struct reply_header __header;
-    unsigned long   result;
+    lparam_t        result;
     /* VARARG(data,bytes); */
 };
 
@@ -2584,13 +2585,13 @@
     user_handle_t   win;
     unsigned int    msg;
     unsigned int    rate;
-    unsigned long   id;
-    unsigned long   lparam;
+    lparam_t        id;
+    lparam_t        lparam;
 };
 struct set_win_timer_reply
 {
     struct reply_header __header;
-    unsigned long   id;
+    lparam_t        id;
 };
 
 
@@ -2600,7 +2601,7 @@
     struct request_header __header;
     user_handle_t   win;
     unsigned int    msg;
-    unsigned long   id;
+    lparam_t        id;
 };
 struct kill_win_timer_reply
 {
@@ -2857,10 +2858,10 @@
     unsigned int   id;
     int            is_unicode;
     void*          instance;
-    unsigned long  user_data;
+    lparam_t       user_data;
     int            extra_offset;
     data_size_t    extra_size;
-    unsigned long  extra_value;
+    lparam_t       extra_value;
 };
 struct set_window_info_reply
 {
@@ -2869,8 +2870,8 @@
     unsigned int   old_ex_style;
     unsigned int   old_id;
     void*          old_instance;
-    unsigned long  old_user_data;
-    unsigned long  old_extra_value;
+    lparam_t       old_user_data;
+    lparam_t       old_extra_value;
 };
 #define SET_WIN_STYLE     0x01
 #define SET_WIN_EXSTYLE   0x02
@@ -3692,7 +3693,7 @@
     void*          instance;
     int            extra_offset;
     data_size_t    extra_size;
-    unsigned long  extra_value;
+    lparam_t       extra_value;
 };
 struct set_class_info_reply
 {
@@ -3702,7 +3703,7 @@
     int            old_extra;
     int            old_win_extra;
     void*          old_instance;
-    unsigned long  old_extra_value;
+    lparam_t       old_extra_value;
 };
 #define SET_CLASS_ATOM      0x0001
 #define SET_CLASS_STYLE     0x0002
diff --git a/server/protocol.def b/server/protocol.def
index eba1b82..2d69c19 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -38,6 +38,7 @@
 typedef unsigned int thread_id_t;
 typedef unsigned int data_size_t;
 typedef unsigned int ioctl_code_t;
+typedef unsigned long lparam_t;
 typedef unsigned __int64 file_pos_t;
 
 struct request_header
@@ -187,8 +188,8 @@
 struct callback_msg_data
 {
     void           *callback;   /* callback function */
-    unsigned long   data;       /* user data for callback */
-    unsigned long   result;     /* message result */
+    lparam_t        data;       /* user data for callback */
+    lparam_t        result;     /* message result */
 };
 
 struct winevent_msg_data
@@ -1821,8 +1822,8 @@
     int             flags;     /* message flags (see below) */
     user_handle_t   win;       /* window handle */
     unsigned int    msg;       /* message code */
-    unsigned long   wparam;    /* parameters */
-    unsigned long   lparam;    /* parameters */
+    lparam_t        wparam;    /* parameters */
+    lparam_t        lparam;    /* parameters */
     timeout_t       timeout;   /* timeout for reply */
     VARARG(data,message_data); /* message data for sent messages */
 @END
@@ -1852,9 +1853,9 @@
     user_handle_t   win;       /* window handle */
     unsigned int    msg;       /* message code */
     unsigned int    time;      /* message time */
-    unsigned long   wparam;    /* parameters */
-    unsigned long   lparam;    /* parameters */
-    unsigned long   info;      /* extra info */
+    lparam_t        wparam;    /* parameters */
+    lparam_t        lparam;    /* parameters */
+    lparam_t        info;      /* extra info */
     int             x;         /* x position */
     int             y;         /* y position */
 @END
@@ -1873,9 +1874,9 @@
     user_handle_t   win;       /* window handle */
     int             type;      /* message type */
     unsigned int    msg;       /* message code */
-    unsigned long   wparam;    /* parameters */
-    unsigned long   lparam;    /* parameters */
-    unsigned long   info;      /* extra info */
+    lparam_t        wparam;    /* parameters */
+    lparam_t        lparam;    /* parameters */
+    lparam_t        info;      /* extra info */
     int             x;         /* x position */
     int             y;         /* y position */
     unsigned int    time;      /* message time */
@@ -1888,7 +1889,7 @@
 
 /* Reply to a sent message */
 @REQ(reply_message)
-    unsigned long   result;    /* message result */
+    lparam_t        result;    /* message result */
     int             remove;    /* should we remove the message? */
     VARARG(data,bytes);        /* message data for sent messages */
 @END
@@ -1906,7 +1907,7 @@
 @REQ(get_message_reply)
     int             cancel;    /* cancel message if not ready? */
 @REPLY
-    unsigned long   result;    /* message result */
+    lparam_t        result;    /* message result */
     VARARG(data,bytes);        /* message data for sent messages */
 @END
 
@@ -1916,10 +1917,10 @@
     user_handle_t   win;       /* window handle */
     unsigned int    msg;       /* message to post */
     unsigned int    rate;      /* timer rate in ms */
-    unsigned long   id;        /* timer id */
-    unsigned long   lparam;    /* message lparam (callback proc) */
+    lparam_t        id;        /* timer id */
+    lparam_t        lparam;    /* message lparam (callback proc) */
 @REPLY
-    unsigned long   id;        /* timer id */
+    lparam_t        id;        /* timer id */
 @END
 
 
@@ -1927,7 +1928,7 @@
 @REQ(kill_win_timer)
     user_handle_t   win;       /* window handle */
     unsigned int    msg;       /* message to post */
-    unsigned long   id;        /* timer id */
+    lparam_t        id;        /* timer id */
 @END
 
 
@@ -2104,17 +2105,17 @@
     unsigned int   id;            /* window id */
     int            is_unicode;    /* ANSI or unicode */
     void*          instance;      /* creator instance */
-    unsigned long  user_data;     /* user-specific data */
+    lparam_t       user_data;     /* user-specific data */
     int            extra_offset;  /* offset to set in extra bytes */
     data_size_t    extra_size;    /* size to set in extra bytes */
-    unsigned long  extra_value;   /* value to set in extra bytes */
+    lparam_t       extra_value;   /* value to set in extra bytes */
 @REPLY
     unsigned int   old_style;     /* old window style */
     unsigned int   old_ex_style;  /* old window extended style */
     unsigned int   old_id;        /* old window id */
     void*          old_instance;  /* old creator instance */
-    unsigned long  old_user_data; /* old user-specific data */
-    unsigned long  old_extra_value; /* old value in extra bytes */
+    lparam_t       old_user_data; /* old user-specific data */
+    lparam_t       old_extra_value; /* old value in extra bytes */
 @END
 #define SET_WIN_STYLE     0x01
 #define SET_WIN_EXSTYLE   0x02
@@ -2667,14 +2668,14 @@
     void*          instance;       /* module instance */
     int            extra_offset;   /* offset to set in extra bytes */
     data_size_t    extra_size;     /* size to set in extra bytes */
-    unsigned long  extra_value;    /* value to set in extra bytes */
+    lparam_t       extra_value;    /* value to set in extra bytes */
 @REPLY
     atom_t         old_atom;       /* previous class atom */
     unsigned int   old_style;      /* previous class style */
     int            old_extra;      /* previous number of class extra bytes */
     int            old_win_extra;  /* previous number of window extra bytes */
     void*          old_instance;   /* previous module instance */
-    unsigned long  old_extra_value; /* old value in extra bytes */
+    lparam_t       old_extra_value; /* old value in extra bytes */
 @END
 #define SET_CLASS_ATOM      0x0001
 #define SET_CLASS_STYLE     0x0002
diff --git a/server/queue.c b/server/queue.c
index b1f82dd..40ecb6b 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -57,7 +57,7 @@
     struct msg_queue      *receiver;      /* receiver queue */
     int                    replied;       /* has it been replied to? */
     unsigned int           error;         /* error code to pass back to sender */
-    unsigned long          result;        /* reply result */
+    lparam_t               result;        /* reply result */
     struct message        *callback_msg;  /* message to queue for callback */
     void                  *data;          /* message reply data */
     unsigned int           data_size;     /* size of message reply data */
@@ -70,9 +70,9 @@
     enum message_type      type;      /* message type */
     user_handle_t          win;       /* window handle */
     unsigned int           msg;       /* message code */
-    unsigned long          wparam;    /* parameters */
-    unsigned long          lparam;    /* parameters */
-    unsigned long          info;      /* extra info */
+    lparam_t               wparam;    /* parameters */
+    lparam_t               lparam;    /* parameters */
+    lparam_t               info;      /* extra info */
     int                    x;         /* x position */
     int                    y;         /* y position */
     unsigned int           time;      /* message time */
@@ -89,8 +89,8 @@
     unsigned int    rate;      /* timer rate in ms */
     user_handle_t   win;       /* window handle */
     unsigned int    msg;       /* message to post */
-    unsigned long   id;        /* timer id */
-    unsigned long   lparam;    /* lparam for message */
+    lparam_t        id;        /* timer id */
+    lparam_t        lparam;    /* lparam for message */
 };
 
 struct thread_input
@@ -127,7 +127,7 @@
     struct message_result *recv_result;     /* stack of received messages waiting for result */
     struct list            pending_timers;  /* list of pending timers */
     struct list            expired_timers;  /* list of expired timers */
-    unsigned long          next_timer_id;   /* id for the next timer with a 0 window */
+    lparam_t               next_timer_id;   /* id for the next timer with a 0 window */
     struct timeout_user   *timeout;         /* timeout for next timer to expire */
     struct thread_input   *input;           /* thread input descriptor */
     struct hook_table     *hooks;           /* hook table */
@@ -442,8 +442,7 @@
 }
 
 /* store the message result in the appropriate structure */
-static void store_message_result( struct message_result *res, unsigned long result,
-                                  unsigned int error )
+static void store_message_result( struct message_result *res, lparam_t result, unsigned int error )
 {
     res->result  = result;
     res->error   = error;
@@ -631,7 +630,7 @@
 }
 
 /* set the result of the current received message */
-static void reply_message( struct msg_queue *queue, unsigned long result,
+static void reply_message( struct msg_queue *queue, lparam_t result,
                            unsigned int error, int remove, const void *data, data_size_t len )
 {
     struct message_result *res = queue->recv_result;
@@ -1009,7 +1008,7 @@
 
 /* find a timer from its window and id */
 static struct timer *find_timer( struct msg_queue *queue, user_handle_t win,
-                                 unsigned int msg, unsigned long id )
+                                 unsigned int msg, lparam_t id )
 {
     struct list *ptr;
 
@@ -1481,8 +1480,7 @@
 }
 
 /* post a message to a window; used by socket handling */
-void post_message( user_handle_t win, unsigned int message,
-                   unsigned long wparam, unsigned long lparam )
+void post_message( user_handle_t win, unsigned int message, lparam_t wparam, lparam_t lparam )
 {
     struct message *msg;
     struct thread *thread = get_window_thread( win );
@@ -1927,7 +1925,7 @@
     struct msg_queue *queue;
     struct thread *thread = NULL;
     user_handle_t win = 0;
-    unsigned long id = req->id;
+    lparam_t id = req->id;
 
     if (req->win)
     {
diff --git a/server/sock.c b/server/sock.c
index bf67d73..baaa9df 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -278,8 +278,8 @@
             int event = event_bitorder[i];
             if (sock->pmask & (1 << event))
             {
-                unsigned int lparam = (1 << event) | (sock->errors[event] << 16);
-                post_message( sock->window, sock->message, (unsigned long)sock->wparam, lparam );
+                lparam_t lparam = (1 << event) | (sock->errors[event] << 16);
+                post_message( sock->window, sock->message, sock->wparam, lparam );
             }
         }
         sock->pmask = 0;
diff --git a/server/user.h b/server/user.h
index b12fccb..72d08e6 100644
--- a/server/user.h
+++ b/server/user.h
@@ -92,7 +92,7 @@
 extern int attach_thread_input( struct thread *thread_from, struct thread *thread_to );
 extern void detach_thread_input( struct thread *thread_from );
 extern void post_message( user_handle_t win, unsigned int message,
-                          unsigned long wparam, unsigned long lparam );
+                          lparam_t wparam, lparam_t lparam );
 extern void post_win_event( struct thread *thread, unsigned int event,
                             user_handle_t win, unsigned int object_id,
                             unsigned int child_id, void *proc,
diff --git a/server/window.c b/server/window.c
index da97a8e..2fa6164 100644
--- a/server/window.c
+++ b/server/window.c
@@ -83,7 +83,7 @@
     unsigned int     color_key;       /* color key for a layered window */
     unsigned int     alpha;           /* alpha value for a layered window */
     unsigned int     layered_flags;   /* flags for a layered window */
-    unsigned long    user_data;       /* user-specific data */
+    lparam_t         user_data;       /* user-specific data */
     WCHAR           *text;            /* window caption text */
     unsigned int     paint_flags;     /* various painting flags */
     int              prop_inuse;      /* number of in-use window properties */
diff --git a/tools/make_requests b/tools/make_requests
index 76be7b2..227ac27 100755
--- a/tools/make_requests
+++ b/tools/make_requests
@@ -37,6 +37,7 @@
     "user_handle_t" => "%08x",
     "process_id_t"  => "%04x",
     "thread_id_t"   => "%04x",
+    "lparam_t"      => "%lx",
     "timeout_t"     => "&dump_timeout",
     "rectangle_t"   => "&dump_rectangle",
     "char_info_t"   => "&dump_char_info",
