server: Windows properties are actually generic params, not handles.
diff --git a/dlls/user32/property.c b/dlls/user32/property.c
index c6da0ab..d5b1bfd 100644
--- a/dlls/user32/property.c
+++ b/dlls/user32/property.c
@@ -130,17 +130,17 @@
  */
 HANDLE WINAPI GetPropW( HWND hwnd, LPCWSTR str )
 {
-    HANDLE ret = 0;
+    ULONG_PTR ret = 0;
 
     SERVER_START_REQ( get_window_property )
     {
         req->window = wine_server_user_handle( hwnd );
         if (!HIWORD(str)) req->atom = LOWORD(str);
         else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
-        if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->handle );
+        if (!wine_server_call_err( req )) ret = reply->data;
     }
     SERVER_END_REQ;
-    return ret;
+    return (HANDLE)ret;
 }
 
 
@@ -167,7 +167,7 @@
     SERVER_START_REQ( set_window_property )
     {
         req->window = wine_server_user_handle( hwnd );
-        req->handle = wine_server_obj_handle( handle );
+        req->data   = (ULONG_PTR)handle;
         if (!HIWORD(str)) req->atom = LOWORD(str);
         else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
         ret = !wine_server_call_err( req );
@@ -195,18 +195,18 @@
  */
 HANDLE WINAPI RemovePropW( HWND hwnd, LPCWSTR str )
 {
-    HANDLE ret = 0;
+    ULONG_PTR ret = 0;
 
     SERVER_START_REQ( remove_window_property )
     {
         req->window = wine_server_user_handle( hwnd );
         if (!HIWORD(str)) req->atom = LOWORD(str);
         else wine_server_add_data( req, str, strlenW(str) * sizeof(WCHAR) );
-        if (!wine_server_call_err( req )) ret = wine_server_ptr_handle( reply->handle );
+        if (!wine_server_call_err( req )) ret = reply->data;
     }
     SERVER_END_REQ;
 
-    return ret;
+    return (HANDLE)ret;
 }
 
 
@@ -224,7 +224,7 @@
         {
             char string[ATOM_BUFFER_SIZE];
             if (!GlobalGetAtomNameA( list[i].atom, string, ATOM_BUFFER_SIZE )) continue;
-            if (!(ret = func( hwnd, string, wine_server_ptr_handle(list[i].handle), lParam ))) break;
+            if (!(ret = func( hwnd, string, (HANDLE)(ULONG_PTR)list[i].data, lParam ))) break;
         }
         HeapFree( GetProcessHeap(), 0, list );
     }
@@ -246,7 +246,7 @@
         {
             WCHAR string[ATOM_BUFFER_SIZE];
             if (!GlobalGetAtomNameW( list[i].atom, string, ATOM_BUFFER_SIZE )) continue;
-            if (!(ret = func( hwnd, string, wine_server_ptr_handle(list[i].handle), lParam ))) break;
+            if (!(ret = func( hwnd, string, (HANDLE)(ULONG_PTR)list[i].data, lParam ))) break;
         }
         HeapFree( GetProcessHeap(), 0, list );
     }
@@ -277,14 +277,14 @@
                 args[3] = hwnd;
                 args[2] = SELECTOROF(segptr);
                 args[1] = OFFSETOF(segptr);
-                args[0] = LOWORD(wine_server_ptr_handle(list[i].handle));
+                args[0] = LOWORD(list[i].data);
             }
             else
             {
                 args[3] = hwnd;
                 args[2] = 0;
                 args[1] = list[i].atom;
-                args[0] = LOWORD(wine_server_ptr_handle(list[i].handle));
+                args[0] = LOWORD(list[i].data);
             }
             WOWCallback16Ex( (DWORD)func, WCB16_PASCAL, sizeof(args), args, &result );
             if (!(ret = LOWORD(result))) break;
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 28f8b22..963eaa3 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -144,7 +144,7 @@
 {
     atom_t         atom;
     short          string;
-    obj_handle_t   handle;
+    lparam_t       data;
 } property_data_t;
 
 
@@ -3144,7 +3144,7 @@
     struct request_header __header;
     user_handle_t  window;
     atom_t         atom;
-    obj_handle_t   handle;
+    lparam_t       data;
     /* VARARG(name,unicode_str); */
 };
 struct set_window_property_reply
@@ -3164,7 +3164,7 @@
 struct remove_window_property_reply
 {
     struct reply_header __header;
-    obj_handle_t   handle;
+    lparam_t       data;
 };
 
 
@@ -3179,7 +3179,7 @@
 struct get_window_property_reply
 {
     struct reply_header __header;
-    obj_handle_t   handle;
+    lparam_t       data;
 };
 
 
diff --git a/server/protocol.def b/server/protocol.def
index 2d69c19..7b34523 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -160,7 +160,7 @@
 {
     atom_t         atom;     /* property atom */
     short          string;   /* was atom a string originally? */
-    obj_handle_t   handle;   /* handle stored in property */
+    lparam_t       data;     /* data stored in property */
 } property_data_t;
 
 /* structure to specify window rectangles */
@@ -2302,7 +2302,7 @@
 @REQ(set_window_property)
     user_handle_t  window;        /* handle to the window */
     atom_t         atom;          /* property atom (if no name specified) */
-    obj_handle_t   handle;        /* handle to store */
+    lparam_t       data;          /* data to store */
     VARARG(name,unicode_str);     /* property name */
 @END
 
@@ -2313,7 +2313,7 @@
     atom_t         atom;          /* property atom (if no name specified) */
     VARARG(name,unicode_str);     /* property name */
 @REPLY
-    obj_handle_t   handle;        /* handle stored in property */
+    lparam_t       data;          /* data stored in property */
 @END
 
 
@@ -2323,7 +2323,7 @@
     atom_t         atom;          /* property atom (if no name specified) */
     VARARG(name,unicode_str);     /* property name */
 @REPLY
-    obj_handle_t   handle;        /* handle stored in property */
+    lparam_t       data;          /* data stored in property */
 @END
 
 
diff --git a/server/trace.c b/server/trace.c
index 9f15855..31afbb0 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -590,8 +590,8 @@
     fputc( '{', stderr );
     while (len > 0)
     {
-        fprintf( stderr, "{atom=%04x,str=%d,handle=%04x}",
-                 prop->atom, prop->string, prop->handle );
+        fprintf( stderr, "{atom=%04x,str=%d,data=%lx}",
+                 prop->atom, prop->string, prop->data );
         prop++;
         if (--len) fputc( ',', stderr );
     }
@@ -2855,7 +2855,7 @@
 {
     fprintf( stderr, " window=%08x,", req->window );
     fprintf( stderr, " atom=%04x,", req->atom );
-    fprintf( stderr, " handle=%04x,", req->handle );
+    fprintf( stderr, " data=%lx,", req->data );
     fprintf( stderr, " name=" );
     dump_varargs_unicode_str( cur_size );
 }
@@ -2870,7 +2870,7 @@
 
 static void dump_remove_window_property_reply( const struct remove_window_property_reply *req )
 {
-    fprintf( stderr, " handle=%04x", req->handle );
+    fprintf( stderr, " data=%lx", req->data );
 }
 
 static void dump_get_window_property_request( const struct get_window_property_request *req )
@@ -2883,7 +2883,7 @@
 
 static void dump_get_window_property_reply( const struct get_window_property_reply *req )
 {
-    fprintf( stderr, " handle=%04x", req->handle );
+    fprintf( stderr, " data=%lx", req->data );
 }
 
 static void dump_get_window_properties_request( const struct get_window_properties_request *req )
diff --git a/server/window.c b/server/window.c
index 2fa6164..8f57a7a 100644
--- a/server/window.c
+++ b/server/window.c
@@ -44,7 +44,7 @@
 {
     unsigned short type;     /* property type (see below) */
     atom_t         atom;     /* property atom */
-    obj_handle_t   handle;   /* property handle (user-defined storage) */
+    lparam_t       data;     /* property data (user-defined storage) */
 };
 
 enum property_type
@@ -262,7 +262,7 @@
 }
 
 /* set a window property */
-static void set_property( struct window *win, atom_t atom, obj_handle_t handle, enum property_type type )
+static void set_property( struct window *win, atom_t atom, lparam_t data, enum property_type type )
 {
     int i, free = -1;
     struct property *new_props;
@@ -278,7 +278,7 @@
         if (win->properties[i].atom == atom)
         {
             win->properties[i].type = type;
-            win->properties[i].handle = handle;
+            win->properties[i].data = data;
             return;
         }
     }
@@ -303,13 +303,13 @@
         }
         free = win->prop_inuse++;
     }
-    win->properties[free].atom   = atom;
-    win->properties[free].type   = type;
-    win->properties[free].handle = handle;
+    win->properties[free].atom = atom;
+    win->properties[free].type = type;
+    win->properties[free].data = data;
 }
 
 /* remove a window property */
-static obj_handle_t remove_property( struct window *win, atom_t atom )
+static lparam_t remove_property( struct window *win, atom_t atom )
 {
     int i;
 
@@ -320,7 +320,7 @@
         {
             release_global_atom( NULL, atom );
             win->properties[i].type = PROP_TYPE_FREE;
-            return win->properties[i].handle;
+            return win->properties[i].data;
         }
     }
     /* FIXME: last error? */
@@ -328,14 +328,14 @@
 }
 
 /* find a window property */
-static obj_handle_t get_property( struct window *win, atom_t atom )
+static lparam_t get_property( struct window *win, atom_t atom )
 {
     int i;
 
     for (i = 0; i < win->prop_inuse; i++)
     {
         if (win->properties[i].type == PROP_TYPE_FREE) continue;
-        if (win->properties[i].atom == atom) return win->properties[i].handle;
+        if (win->properties[i].atom == atom) return win->properties[i].data;
     }
     /* FIXME: last error? */
     return 0;
@@ -2358,11 +2358,11 @@
         atom_t atom = add_global_atom( NULL, &name );
         if (atom)
         {
-            set_property( win, atom, req->handle, PROP_TYPE_STRING );
+            set_property( win, atom, req->data, PROP_TYPE_STRING );
             release_global_atom( NULL, atom );
         }
     }
-    else set_property( win, req->atom, req->handle, PROP_TYPE_ATOM );
+    else set_property( win, req->atom, req->data, PROP_TYPE_ATOM );
 }
 
 
@@ -2376,7 +2376,7 @@
     if (win)
     {
         atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom;
-        if (atom) reply->handle = remove_property( win, atom );
+        if (atom) reply->data = remove_property( win, atom );
     }
 }
 
@@ -2391,7 +2391,7 @@
     if (win)
     {
         atom_t atom = name.len ? find_global_atom( NULL, &name ) : req->atom;
-        if (atom) reply->handle = get_property( win, atom );
+        if (atom) reply->data = get_property( win, atom );
     }
 }
 
@@ -2418,7 +2418,7 @@
         if (win->properties[i].type == PROP_TYPE_FREE) continue;
         data->atom   = win->properties[i].atom;
         data->string = (win->properties[i].type == PROP_TYPE_STRING);
-        data->handle = win->properties[i].handle;
+        data->data   = win->properties[i].data;
         data++;
         count--;
     }