Changed fd operations to take a struct fd instead of a struct object.
Removed get_file_info function from object operations.
Added get_device_id request to avoid abusing get_file_info.

diff --git a/server/request.c b/server/request.c
index 5411313..d13c761 100644
--- a/server/request.c
+++ b/server/request.c
@@ -78,7 +78,7 @@
 };
 
 static void master_socket_dump( struct object *obj, int verbose );
-static void master_socket_poll_event( struct object *obj, int event );
+static void master_socket_poll_event( struct fd *fd, int event );
 
 static const struct object_ops master_socket_ops =
 {
@@ -89,7 +89,6 @@
     NULL,                          /* signaled */
     NULL,                          /* satisfied */
     no_get_fd,                     /* get_fd */
-    no_get_file_info,              /* get_file_info */
     no_destroy                     /* destroy */
 };
 
@@ -446,14 +445,14 @@
 {
     struct master_socket *sock = (struct master_socket *)obj;
     assert( obj->ops == &master_socket_ops );
-    fprintf( stderr, "Master socket fd=%d\n", sock->obj.fd );
+    fprintf( stderr, "Master socket fd=%p\n", sock->obj.fd_obj );
 }
 
 /* handle a socket event */
-static void master_socket_poll_event( struct object *obj, int event )
+static void master_socket_poll_event( struct fd *fd, int event )
 {
-    struct master_socket *sock = (struct master_socket *)obj;
-    assert( obj->ops == &master_socket_ops );
+    struct master_socket *sock = get_fd_user( fd );
+    assert( master_socket->obj.ops == &master_socket_ops );
 
     assert( sock == master_socket );  /* there is only one master socket */
 
@@ -461,7 +460,7 @@
     {
         /* this is not supposed to happen */
         fprintf( stderr, "wineserver: Error on master socket\n" );
-        release_object( obj );
+        release_object( sock );
     }
     else if (event & POLLIN)
     {
@@ -749,7 +748,7 @@
     flush_registry();
 
     /* if a new client is waiting, we keep on running */
-    if (check_select_events( master_socket->obj.fd, POLLIN )) return;
+    if (check_fd_events( master_socket->obj.fd_obj, POLLIN )) return;
 
     if (debug_level) fprintf( stderr, "wineserver: exiting (pid=%ld)\n", (long) getpid() );