diff --git a/server/async.c b/server/async.c
index 379d130..7978a90 100644
--- a/server/async.c
+++ b/server/async.c
@@ -58,8 +58,7 @@
 static void async_dump( struct object *obj, int verbose );
 static void async_destroy( struct object *obj );
 static int async_get_poll_events( struct object *obj );
-static int async_get_read_fd( struct object *obj );
-static int async_get_write_fd( struct object *obj );
+static int async_get_fd( struct object *obj );
 static int async_get_info( struct object *obj, struct get_file_info_request *req );
 static void async_poll_event( struct object *obj, int event );
 
@@ -73,8 +72,7 @@
     no_satisfied,                 /* satisfied */
     async_get_poll_events,        /* get_poll_events */
     async_poll_event,             /* poll_event */
-    async_get_read_fd,            /* get_read_fd */
-    async_get_write_fd,           /* get_write_fd */
+    async_get_fd,                 /* get_fd */
     no_flush,                     /* flush */
     async_get_info,               /* get_file_info */
     async_destroy                 /* destroy */
@@ -115,14 +113,7 @@
     return serial_async_get_poll_events(ov);
 }
 
-static int async_get_read_fd( struct object *obj )
-{
-    struct async *async = (struct async *)obj;
-    assert( obj->ops == &async_ops );
-    return dup( async->obj.fd );
-}
-
-static int async_get_write_fd( struct object *obj )
+static int async_get_fd( struct object *obj )
 {
     struct async *async = (struct async *)obj;
     assert( obj->ops == &async_ops );
diff --git a/server/atom.c b/server/atom.c
index 0e9f477..55fc6b7 100644
--- a/server/atom.c
+++ b/server/atom.c
@@ -54,8 +54,7 @@
     NULL,                         /* satified */
     NULL,                         /* get_poll_events */
     NULL,                         /* poll_event */
-    no_read_fd,                   /* get_read_fd */
-    no_write_fd,                  /* get_write_fd */
+    no_get_fd,                    /* get_fd */
     no_flush,                     /* flush */
     no_get_file_info,             /* get_file_info */
     atom_table_destroy            /* destroy */
diff --git a/server/change.c b/server/change.c
index 844e21b..338712e 100644
--- a/server/change.c
+++ b/server/change.c
@@ -34,8 +34,7 @@
     no_satisfied,             /* satisfied */
     NULL,                     /* get_poll_events */
     NULL,                     /* poll_event */
-    no_read_fd,               /* get_read_fd */
-    no_write_fd,              /* get_write_fd */
+    no_get_fd,                /* get_fd */
     no_flush,                 /* flush */
     no_get_file_info,         /* get_file_info */
     no_destroy                /* destroy */
diff --git a/server/console.c b/server/console.c
index e8526a2..6f72ade 100644
--- a/server/console.c
+++ b/server/console.c
@@ -58,12 +58,12 @@
 
 static void console_input_dump( struct object *obj, int verbose );
 static int console_input_get_poll_events( struct object *obj );
-static int console_input_get_read_fd( struct object *obj );
+static int console_input_get_fd( struct object *obj );
 static void console_input_destroy( struct object *obj );
 
 static void screen_buffer_dump( struct object *obj, int verbose );
 static int screen_buffer_get_poll_events( struct object *obj );
-static int screen_buffer_get_write_fd( struct object *obj );
+static int screen_buffer_get_fd( struct object *obj );
 static void screen_buffer_destroy( struct object *obj );
 
 /* common routine */
@@ -79,8 +79,7 @@
     no_satisfied,                     /* satisfied */
     console_input_get_poll_events,    /* get_poll_events */
     default_poll_event,               /* poll_event */
-    console_input_get_read_fd,        /* get_read_fd */
-    no_write_fd,                      /* get_write_fd */
+    console_input_get_fd,             /* get_fd */
     no_flush,                         /* flush */
     console_get_info,                 /* get_file_info */
     console_input_destroy             /* destroy */
@@ -96,8 +95,7 @@
     no_satisfied,                     /* satisfied */
     screen_buffer_get_poll_events,    /* get_poll_events */
     default_poll_event,               /* poll_event */
-    no_read_fd,                       /* get_read_fd */
-    screen_buffer_get_write_fd,       /* get_write_fd */
+    screen_buffer_get_fd,             /* get_fd */
     no_flush,                         /* flush */
     console_get_info,                 /* get_file_info */
     screen_buffer_destroy             /* destroy */
@@ -352,7 +350,7 @@
     return POLLIN;
 }
 
-static int console_input_get_read_fd( struct object *obj )
+static int console_input_get_fd( struct object *obj )
 {
     struct console_input *console = (struct console_input *)obj;
     assert( obj->ops == &console_input_ops );
@@ -393,7 +391,7 @@
     return POLLOUT;
 }
 
-static int screen_buffer_get_write_fd( struct object *obj )
+static int screen_buffer_get_fd( struct object *obj )
 {
     struct screen_buffer *console = (struct screen_buffer *)obj;
     assert( obj->ops == &screen_buffer_ops );
@@ -483,12 +481,12 @@
 
     if (!(obj = get_handle_obj( current->process, req->file_handle,
                                 GENERIC_READ | GENERIC_WRITE, NULL ))) return;
-    if ((fd_in = obj->ops->get_read_fd( obj )) == -1)
+    if ((fd_in = obj->ops->get_fd( obj )) == -1)
     {
         release_object( obj );
         return;
     }
-    fd_out = obj->ops->get_write_fd( obj );
+    fd_out = dup( fd_in );
     release_object( obj );
     if (fd_out != -1)
     {
diff --git a/server/debugger.c b/server/debugger.c
index 946d659..c88f82e 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -53,8 +53,7 @@
     no_satisfied,                  /* satisfied */
     NULL,                          /* get_poll_events */
     NULL,                          /* poll_event */
-    no_read_fd,                    /* get_read_fd */
-    no_write_fd,                   /* get_write_fd */
+    no_get_fd,                     /* get_fd */
     no_flush,                      /* flush */
     no_get_file_info,              /* get_file_info */
     debug_event_destroy            /* destroy */
@@ -74,8 +73,7 @@
     no_satisfied,                  /* satisfied */
     NULL,                          /* get_poll_events */
     NULL,                          /* poll_event */
-    no_read_fd,                    /* get_read_fd */
-    no_write_fd,                   /* get_write_fd */
+    no_get_fd,                     /* get_fd */
     no_flush,                      /* flush */
     no_get_file_info,              /* get_file_info */
     debug_ctx_destroy              /* destroy */
diff --git a/server/device.c b/server/device.c
index f1ab4c3..4183b75 100644
--- a/server/device.c
+++ b/server/device.c
@@ -41,8 +41,7 @@
     NULL,                     /* satisfied */
     NULL,                     /* get_poll_events */
     NULL,                     /* poll_event */
-    no_read_fd,               /* get_read_fd */
-    no_write_fd,              /* get_write_fd */
+    no_get_fd,                /* get_fd */
     no_flush,                 /* flush */
     device_get_info,          /* get_file_info */
     no_destroy                /* destroy */
diff --git a/server/event.c b/server/event.c
index f259b90..18f6b41 100644
--- a/server/event.c
+++ b/server/event.c
@@ -35,8 +35,7 @@
     event_satisfied,           /* satisfied */
     NULL,                      /* get_poll_events */
     NULL,                      /* poll_event */
-    no_read_fd,                /* get_read_fd */
-    no_write_fd,               /* get_write_fd */
+    no_get_fd,                 /* get_fd */
     no_flush,                  /* flush */
     no_get_file_info,          /* get_file_info */
     no_destroy                 /* destroy */
diff --git a/server/file.c b/server/file.c
index 61a3dd3..5c0f59a 100644
--- a/server/file.c
+++ b/server/file.c
@@ -45,8 +45,7 @@
 
 static void file_dump( struct object *obj, int verbose );
 static int file_get_poll_events( struct object *obj );
-static int file_get_read_fd( struct object *obj );
-static int file_get_write_fd( struct object *obj );
+static int file_get_fd( struct object *obj );
 static int file_flush( struct object *obj );
 static int file_get_info( struct object *obj, struct get_file_info_request *req );
 static void file_destroy( struct object *obj );
@@ -61,8 +60,7 @@
     no_satisfied,                 /* satisfied */
     file_get_poll_events,         /* get_poll_events */
     default_poll_event,           /* poll_event */
-    file_get_read_fd,             /* get_read_fd */
-    file_get_write_fd,            /* get_write_fd */
+    file_get_fd,                  /* get_fd */
     file_flush,                   /* flush */
     file_get_info,                /* get_file_info */
     file_destroy                  /* destroy */
@@ -233,14 +231,7 @@
     return events;
 }
 
-static int file_get_read_fd( struct object *obj )
-{
-    struct file *file = (struct file *)obj;
-    assert( obj->ops == &file_ops );
-    return dup( file->obj.fd );
-}
-
-static int file_get_write_fd( struct object *obj )
+static int file_get_fd( struct object *obj )
 {
     struct file *file = (struct file *)obj;
     assert( obj->ops == &file_ops );
@@ -480,26 +471,15 @@
     else set_error( STATUS_INVALID_PARAMETER );
 }
 
-/* get a Unix fd to read from a file */
-DECL_HANDLER(get_read_fd)
+/* get a Unix fd to access a file */
+DECL_HANDLER(get_handle_fd)
 {
     struct object *obj;
 
-    if ((obj = get_handle_obj( current->process, req->handle, GENERIC_READ, NULL )))
+    req->fd = -1;
+    if ((obj = get_handle_obj( current->process, req->handle, req->access, NULL )))
     {
-        set_reply_fd( current, obj->ops->get_read_fd( obj ) );
-        release_object( obj );
-    }
-}
-
-/* get a Unix fd to write to a file */
-DECL_HANDLER(get_write_fd)
-{
-    struct object *obj;
-
-    if ((obj = get_handle_obj( current->process, req->handle, GENERIC_WRITE, NULL )))
-    {
-        set_reply_fd( current, obj->ops->get_write_fd( obj ) );
+        set_reply_fd( current, obj->ops->get_fd( obj ) );
         release_object( obj );
     }
 }
diff --git a/server/handle.c b/server/handle.c
index e71c261..1d1317f 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -76,8 +76,7 @@
     NULL,                            /* satisfied */
     NULL,                            /* get_poll_events */
     NULL,                            /* poll_event */
-    no_read_fd,                      /* get_read_fd */
-    no_write_fd,                     /* get_write_fd */
+    no_get_fd,                       /* get_fd */
     no_flush,                        /* flush */
     no_get_file_info,                /* get_file_info */
     handle_table_destroy             /* destroy */
diff --git a/server/mapping.c b/server/mapping.c
index 254924e..a68e8fb 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -43,8 +43,7 @@
     NULL,                        /* satisfied */
     NULL,                        /* get_poll_events */
     NULL,                        /* poll_event */
-    no_read_fd,                  /* get_read_fd */
-    no_write_fd,                 /* get_write_fd */
+    no_get_fd,                   /* get_fd */
     no_flush,                    /* flush */
     no_get_file_info,            /* get_file_info */
     mapping_destroy              /* destroy */
diff --git a/server/mutex.c b/server/mutex.c
index 82b76c2..1adf373 100644
--- a/server/mutex.c
+++ b/server/mutex.c
@@ -39,8 +39,7 @@
     mutex_satisfied,           /* satisfied */
     NULL,                      /* get_poll_events */
     NULL,                      /* poll_event */
-    no_read_fd,                /* get_read_fd */
-    no_write_fd,               /* get_write_fd */
+    no_get_fd,                 /* get_fd */
     no_flush,                  /* flush */
     no_get_file_info,          /* get_file_info */
     mutex_destroy              /* destroy */
diff --git a/server/object.c b/server/object.c
index f2a7f1f..ba2bce8 100644
--- a/server/object.c
+++ b/server/object.c
@@ -251,13 +251,7 @@
     return 0;  /* not abandoned */
 }
 
-int no_read_fd( struct object *obj )
-{
-    set_error( STATUS_OBJECT_TYPE_MISMATCH );
-    return -1;
-}
-
-int no_write_fd( struct object *obj )
+int no_get_fd( struct object *obj )
 {
     set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return -1;
diff --git a/server/object.h b/server/object.h
index 746b7f6..7a7d1a3 100644
--- a/server/object.h
+++ b/server/object.h
@@ -46,10 +46,8 @@
     int  (*get_poll_events)(struct object *);
     /* a poll() event occured */
     void (*poll_event)(struct object *,int event);
-    /* return a Unix fd that can be used to read from the object */
-    int  (*get_read_fd)(struct object *);
-    /* return a Unix fd that can be used to write to the object */
-    int  (*get_write_fd)(struct object *);
+    /* return a Unix fd that can be used to read/write from the object */
+    int  (*get_fd)(struct object *);
     /* flush the object buffers */
     int  (*flush)(struct object *);
     /* get file information */
@@ -93,8 +91,7 @@
 extern struct object *find_object( const WCHAR *name, size_t len );
 extern int no_add_queue( struct object *obj, struct wait_queue_entry *entry );
 extern int no_satisfied( struct object *obj, struct thread *thread );
-extern int no_read_fd( struct object *obj );
-extern int no_write_fd( struct object *obj );
+extern int no_get_fd( struct object *obj );
 extern int no_flush( struct object *obj );
 extern int no_get_file_info( struct object *obj, struct get_file_info_request *info );
 extern void no_destroy( struct object *obj );
diff --git a/server/pipe.c b/server/pipe.c
index d86fde8..5c830c0 100644
--- a/server/pipe.c
+++ b/server/pipe.c
@@ -37,8 +37,7 @@
 
 static void pipe_dump( struct object *obj, int verbose );
 static int pipe_get_poll_events( struct object *obj );
-static int pipe_get_read_fd( struct object *obj );
-static int pipe_get_write_fd( struct object *obj );
+static int pipe_get_fd( struct object *obj );
 static int pipe_get_info( struct object *obj, struct get_file_info_request *req );
 static void pipe_destroy( struct object *obj );
 
@@ -52,8 +51,7 @@
     no_satisfied,                 /* satisfied */
     pipe_get_poll_events,         /* get_poll_events */
     default_poll_event,           /* poll_event */
-    pipe_get_read_fd,             /* get_read_fd */
-    pipe_get_write_fd,            /* get_write_fd */
+    pipe_get_fd,                  /* get_fd */
     no_flush,                     /* flush */
     pipe_get_info,                /* get_file_info */
     pipe_destroy                  /* destroy */
@@ -114,7 +112,7 @@
     return (pipe->side == READ_SIDE) ? POLLIN : POLLOUT;
 }
 
-static int pipe_get_read_fd( struct object *obj )
+static int pipe_get_fd( struct object *obj )
 {
     struct pipe *pipe = (struct pipe *)obj;
     assert( obj->ops == &pipe_ops );
@@ -124,29 +122,6 @@
         set_error( STATUS_PIPE_BROKEN );
         return -1;
     }
-    if (pipe->side != READ_SIDE)  /* FIXME: should not be necessary */
-    {
-        set_error( STATUS_ACCESS_DENIED );
-        return -1;
-    }
-    return dup( pipe->obj.fd );
-}
-
-static int pipe_get_write_fd( struct object *obj )
-{
-    struct pipe *pipe = (struct pipe *)obj;
-    assert( obj->ops == &pipe_ops );
-
-    if (!pipe->other)
-    {
-        set_error( STATUS_PIPE_BROKEN );
-        return -1;
-    }
-    if (pipe->side != WRITE_SIDE)  /* FIXME: should not be necessary */
-    {
-        set_error( STATUS_ACCESS_DENIED );
-        return -1;
-    }
     return dup( pipe->obj.fd );
 }
 
diff --git a/server/process.c b/server/process.c
index bdf4be6..c88bd40 100644
--- a/server/process.c
+++ b/server/process.c
@@ -48,8 +48,7 @@
     no_satisfied,                /* satisfied */
     NULL,                        /* get_poll_events */
     NULL,                        /* poll_event */
-    no_read_fd,                  /* get_read_fd */
-    no_write_fd,                 /* get_write_fd */
+    no_get_fd,                   /* get_fd */
     no_flush,                    /* flush */
     no_get_file_info,            /* get_file_info */
     process_destroy              /* destroy */
@@ -87,8 +86,7 @@
     no_satisfied,                  /* satisfied */
     NULL,                          /* get_poll_events */
     NULL,                          /* poll_event */
-    no_read_fd,                    /* get_read_fd */
-    no_write_fd,                   /* get_write_fd */
+    no_get_fd,                     /* get_fd */
     no_flush,                      /* flush */
     no_get_file_info,              /* get_file_info */
     startup_info_destroy           /* destroy */
@@ -716,7 +714,6 @@
 {
     size_t len = get_req_data_size( req );
     struct startup_info *info;
-    int sock[2];
 
     if (current->info)
     {
@@ -752,24 +749,6 @@
     }
     memcpy( info->filename, get_req_data(req), len );
     info->filename[len] = 0;
-
-    if (req->alloc_fd)
-    {
-        if (socketpair( AF_UNIX, SOCK_STREAM, 0, sock ) == -1)
-        {
-            file_set_error();
-            release_object( info );
-            return;
-        }
-        if (!create_process( sock[0] ))
-        {
-            release_object( info );
-            close( sock[1] );
-            return;
-        }
-        /* thread object will be released when the thread gets killed */
-        set_reply_fd( current, sock[1] );
-    }
     current->info = info;
 }
 
diff --git a/server/queue.c b/server/queue.c
index 80cfda6..8d63e7b 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -36,8 +36,7 @@
     msg_queue_satisfied,       /* satisfied */
     NULL,                      /* get_poll_events */
     NULL,                      /* poll_event */
-    no_read_fd,                /* get_read_fd */
-    no_write_fd,               /* get_write_fd */
+    no_get_fd,                 /* get_fd */
     no_flush,                  /* flush */
     no_get_file_info,          /* get_file_info */
     no_destroy                 /* destroy */
diff --git a/server/registry.c b/server/registry.c
index 3c1d57c..af7ba8a 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -137,8 +137,7 @@
     NULL,                    /* satisfied */
     NULL,                    /* get_poll_events */
     NULL,                    /* poll_event */
-    no_read_fd,              /* get_read_fd */
-    no_write_fd,             /* get_write_fd */
+    no_get_fd,               /* get_fd */
     no_flush,                /* flush */
     no_get_file_info,        /* get_file_info */
     key_destroy              /* destroy */
@@ -1341,7 +1340,7 @@
     int fd;
 
     if (!(obj = get_handle_obj( current->process, handle, GENERIC_READ, NULL ))) return;
-    fd = obj->ops->get_read_fd( obj );
+    fd = obj->ops->get_fd( obj );
     release_object( obj );
     if (fd != -1)
     {
@@ -1436,7 +1435,7 @@
         return;
     }
     if (!(obj = get_handle_obj( current->process, handle, GENERIC_WRITE, NULL ))) return;
-    fd = obj->ops->get_write_fd( obj );
+    fd = obj->ops->get_fd( obj );
     release_object( obj );
     if (fd != -1)
     {
diff --git a/server/request.c b/server/request.c
index 5ad899a..c3928e5 100644
--- a/server/request.c
+++ b/server/request.c
@@ -64,8 +64,7 @@
     NULL,                          /* satisfied */
     NULL,                          /* get_poll_events */
     master_socket_poll_event,      /* poll_event */
-    no_read_fd,                    /* get_read_fd */
-    no_write_fd,                   /* get_write_fd */
+    no_get_fd,                     /* get_fd */
     no_flush,                      /* flush */
     no_get_file_info,              /* get_file_info */
     master_socket_destroy          /* destroy */
diff --git a/server/request.h b/server/request.h
index ec32edf..ef856f3 100644
--- a/server/request.h
+++ b/server/request.h
@@ -106,8 +106,7 @@
 DECL_HANDLER(open_semaphore);
 DECL_HANDLER(create_file);
 DECL_HANDLER(alloc_file_handle);
-DECL_HANDLER(get_read_fd);
-DECL_HANDLER(get_write_fd);
+DECL_HANDLER(get_handle_fd);
 DECL_HANDLER(set_file_pointer);
 DECL_HANDLER(truncate_file);
 DECL_HANDLER(set_file_time);
@@ -222,8 +221,7 @@
     (req_handler)req_open_semaphore,
     (req_handler)req_create_file,
     (req_handler)req_alloc_file_handle,
-    (req_handler)req_get_read_fd,
-    (req_handler)req_get_write_fd,
+    (req_handler)req_get_handle_fd,
     (req_handler)req_set_file_pointer,
     (req_handler)req_truncate_file,
     (req_handler)req_set_file_time,
diff --git a/server/semaphore.c b/server/semaphore.c
index 25c0c51..710f6ab 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -35,8 +35,7 @@
     semaphore_satisfied,           /* satisfied */
     NULL,                          /* get_poll_events */
     NULL,                          /* poll_event */
-    no_read_fd,                    /* get_read_fd */
-    no_write_fd,                   /* get_write_fd */
+    no_get_fd,                     /* get_fd */
     no_flush,                      /* flush */
     no_get_file_info,              /* get_file_info */
     no_destroy                     /* destroy */
diff --git a/server/serial.c b/server/serial.c
index c549bec..7d30d4d 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -37,8 +37,7 @@
 #include "request.h"
 
 static void serial_dump( struct object *obj, int verbose );
-static int serial_get_read_fd( struct object *obj );
-static int serial_get_write_fd( struct object *obj );
+static int serial_get_fd( struct object *obj );
 static int serial_get_info( struct object *obj, struct get_file_info_request *req );
 static int serial_get_poll_events( struct object *obj );
 
@@ -72,8 +71,7 @@
     no_satisfied,                 /* satisfied */
     serial_get_poll_events,       /* get_poll_events */
     default_poll_event,           /* poll_event */
-    serial_get_read_fd,           /* get_read_fd */
-    serial_get_write_fd,          /* get_write_fd */
+    serial_get_fd,                /* get_fd */
     no_flush,                     /* flush */
     serial_get_info,              /* get_file_info */
     no_destroy                    /* destroy */
@@ -152,14 +150,7 @@
     return events;
 }
 
-static int serial_get_read_fd( struct object *obj )
-{
-    struct serial *serial = (struct serial *)obj;
-    assert( obj->ops == &serial_ops );
-    return dup( serial->obj.fd );
-}
-
-static int serial_get_write_fd( struct object *obj )
+static int serial_get_fd( struct object *obj )
 {
     struct serial *serial = (struct serial *)obj;
     assert( obj->ops == &serial_ops );
diff --git a/server/snapshot.c b/server/snapshot.c
index 0a690eb..ae4eb49 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -47,8 +47,7 @@
     NULL,                         /* satisfied */
     NULL,                         /* get_poll_events */
     NULL,                         /* poll_event */
-    no_read_fd,                   /* get_read_fd */
-    no_write_fd,                  /* get_write_fd */
+    no_get_fd,                    /* get_fd */
     no_flush,                     /* flush */
     no_get_file_info,             /* get_file_info */
     snapshot_destroy              /* destroy */
diff --git a/server/sock.c b/server/sock.c
index 72cea89..c5f41e4 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -69,8 +69,7 @@
     no_satisfied,                 /* satisfied */
     sock_get_poll_events,         /* get_poll_events */
     sock_poll_event,              /* poll_event */
-    sock_get_fd,                  /* get_read_fd */
-    sock_get_fd,                  /* get_write_fd */
+    sock_get_fd,                  /* get_fd */
     no_flush,                     /* flush */
     no_get_file_info,             /* get_file_info */
     sock_destroy                  /* destroy */
diff --git a/server/thread.c b/server/thread.c
index d21cdd7..7cfacdc 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -76,8 +76,7 @@
     no_satisfied,               /* satisfied */
     NULL,                       /* get_poll_events */
     thread_poll_event,          /* poll_event */
-    no_read_fd,                 /* get_read_fd */
-    no_write_fd,                /* get_write_fd */
+    no_get_fd,                  /* get_fd */
     no_flush,                   /* flush */
     no_get_file_info,           /* get_file_info */
     destroy_thread              /* destroy */
diff --git a/server/timer.c b/server/timer.c
index d74fc72..198b0f5 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -42,8 +42,7 @@
     timer_satisfied,           /* satisfied */
     NULL,                      /* get_poll_events */
     NULL,                      /* poll_event */
-    no_read_fd,                /* get_read_fd */
-    no_write_fd,               /* get_write_fd */
+    no_get_fd,                 /* get_fd */
     no_flush,                  /* flush */
     no_get_file_info,          /* get_file_info */
     timer_destroy              /* destroy */
diff --git a/server/trace.c b/server/trace.c
index 6b6f3ab..bad07e8 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -256,7 +256,6 @@
     fprintf( stderr, " hstdout=%d,", req->hstdout );
     fprintf( stderr, " hstderr=%d,", req->hstderr );
     fprintf( stderr, " cmd_show=%d,", req->cmd_show );
-    fprintf( stderr, " alloc_fd=%d,", req->alloc_fd );
     fprintf( stderr, " filename=" );
     cur_pos += dump_varargs_string( req );
 }
@@ -657,14 +656,15 @@
     fprintf( stderr, " handle=%d", req->handle );
 }
 
-static void dump_get_read_fd_request( const struct get_read_fd_request *req )
+static void dump_get_handle_fd_request( const struct get_handle_fd_request *req )
 {
-    fprintf( stderr, " handle=%d", req->handle );
+    fprintf( stderr, " handle=%d,", req->handle );
+    fprintf( stderr, " access=%08x", req->access );
 }
 
-static void dump_get_write_fd_request( const struct get_write_fd_request *req )
+static void dump_get_handle_fd_reply( const struct get_handle_fd_request *req )
 {
-    fprintf( stderr, " handle=%d", req->handle );
+    fprintf( stderr, " fd=%d", req->fd );
 }
 
 static void dump_set_file_pointer_request( const struct set_file_pointer_request *req )
@@ -1487,8 +1487,7 @@
     (dump_func)dump_open_semaphore_request,
     (dump_func)dump_create_file_request,
     (dump_func)dump_alloc_file_handle_request,
-    (dump_func)dump_get_read_fd_request,
-    (dump_func)dump_get_write_fd_request,
+    (dump_func)dump_get_handle_fd_request,
     (dump_func)dump_set_file_pointer_request,
     (dump_func)dump_truncate_file_request,
     (dump_func)dump_set_file_time_request,
@@ -1600,8 +1599,7 @@
     (dump_func)dump_open_semaphore_reply,
     (dump_func)dump_create_file_reply,
     (dump_func)dump_alloc_file_handle_reply,
-    (dump_func)0,
-    (dump_func)0,
+    (dump_func)dump_get_handle_fd_reply,
     (dump_func)dump_set_file_pointer_reply,
     (dump_func)0,
     (dump_func)0,
@@ -1713,8 +1711,7 @@
     "open_semaphore",
     "create_file",
     "alloc_file_handle",
-    "get_read_fd",
-    "get_write_fd",
+    "get_handle_fd",
     "set_file_pointer",
     "truncate_file",
     "set_file_time",
