diff --git a/server/file.c b/server/file.c
index 7518a09..2544bba 100644
--- a/server/file.c
+++ b/server/file.c
@@ -51,6 +51,7 @@
 struct file
 {
     struct object       obj;        /* object header */
+    struct fd          *fd;         /* file descriptor for this file */
     struct file        *next;       /* next file in hashing list */
     char               *name;       /* file name */
     unsigned int        access;     /* file access (GENERIC_READ/WRITE) */
@@ -66,6 +67,7 @@
 static struct file *file_hash[NAME_HASH_SIZE];
 
 static void file_dump( struct object *obj, int verbose );
+static struct fd *file_get_fd( struct object *obj );
 static void file_destroy( struct object *obj );
 
 static int file_get_poll_events( struct fd *fd );
@@ -82,7 +84,7 @@
     default_fd_remove_queue,      /* remove_queue */
     default_fd_signaled,          /* signaled */
     no_satisfied,                 /* satisfied */
-    default_get_fd,               /* get_fd */
+    file_get_fd,                  /* get_fd */
     file_destroy                  /* destroy */
 };
 
@@ -134,7 +136,7 @@
 {
     struct file *file;
 
-    if ((file = alloc_fd_object( &file_ops, &file_fd_ops, fd )))
+    if ((file = alloc_object( &file_ops )))
     {
         file->name       = NULL;
         file->next       = NULL;
@@ -147,6 +149,11 @@
             init_async_queue (&file->read_q);
             init_async_queue (&file->write_q);
         }
+        if (!(file->fd = alloc_fd( &file_fd_ops, fd, &file->obj )))
+        {
+            release_object( file );
+            return NULL;
+        }
     }
     return file;
 }
@@ -264,7 +271,7 @@
 {
     struct file *file = (struct file *)obj;
     assert( obj->ops == &file_ops );
-    fprintf( stderr, "File fd=%p flags=%08x name='%s'\n", file->obj.fd_obj, file->flags, file->name );
+    fprintf( stderr, "File fd=%p flags=%08x name='%s'\n", file->fd, file->flags, file->name );
 }
 
 static int file_get_poll_events( struct fd *fd )
@@ -395,7 +402,14 @@
     else if ( async ) destroy_async ( async );
     else set_error ( STATUS_INVALID_PARAMETER );
 
-    set_select_events( &file->obj, file_get_poll_events( fd ));
+    set_fd_events( fd, file_get_poll_events( fd ));
+}
+
+static struct fd *file_get_fd( struct object *obj )
+{
+    struct file *file = (struct file *)obj;
+    assert( obj->ops == &file_ops );
+    return (struct fd *)grab_object( file->fd );
 }
 
 static void file_destroy( struct object *obj )
@@ -418,6 +432,7 @@
         destroy_async_queue (&file->read_q);
         destroy_async_queue (&file->write_q);
     }
+    if (file->fd) release_object( file->fd );
 }
 
 /* set the last error depending on errno */
@@ -453,7 +468,7 @@
 
 int get_file_unix_fd( struct file *file )
 {
-    return get_unix_fd( file->obj.fd_obj );
+    return get_unix_fd( file->fd );
 }
 
 static int set_file_pointer( obj_handle_t handle, unsigned int *low, int *high, int whence )
