Added server-side file mapping object support.

diff --git a/include/server/object.h b/include/server/object.h
index fc34f16..67320e2 100644
--- a/include/server/object.h
+++ b/include/server/object.h
@@ -20,6 +20,7 @@
 struct object;
 struct object_name;
 struct thread;
+struct file;
 struct wait_queue_entry;
 
 struct object_ops
@@ -27,7 +28,7 @@
     /* dump the object (for debugging) */
     void (*dump)(struct object *,int);
     /* add a thread to the object wait queue */
-    void (*add_queue)(struct object *,struct wait_queue_entry *);
+    int  (*add_queue)(struct object *,struct wait_queue_entry *);
     /* remove a thread from the object wait queue */
     void (*remove_queue)(struct object *,struct wait_queue_entry *);
     /* is object signaled? */
@@ -63,6 +64,7 @@
 extern struct object *grab_object( void *obj );
 extern void release_object( void *obj );
 extern struct object *find_object( const char *name );
+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 );
@@ -171,7 +173,9 @@
 /* file functions */
 
 extern struct object *create_file( int fd );
-extern int file_get_unix_handle( int handle, unsigned int access );
+extern struct file *get_file_obj( struct process *process, int handle,
+                                  unsigned int access );
+extern int file_get_mmap_fd( struct file *file );
 extern int set_file_pointer( int handle, int *low, int *high, int whence );
 extern int truncate_file( int handle );
 extern int get_file_info( int handle, struct get_file_info_reply *reply );
@@ -194,6 +198,13 @@
 extern struct object *create_change_notification( int subtree, int filter );
 
 
+/* file mapping functions */
+extern struct object *create_mapping( int size_high, int size_low, int protect,
+                                      int handle, const char *name );
+extern int open_mapping( unsigned int access, int inherit, const char *name );
+extern int get_mapping_info( int handle, struct get_mapping_info_reply *reply );
+
+
 extern int debug_level;
 
 #endif  /* __WINE_SERVER_OBJECT_H */
diff --git a/include/server/request.h b/include/server/request.h
index 993ae6e..40cee6f 100644
--- a/include/server/request.h
+++ b/include/server/request.h
@@ -24,7 +24,6 @@
     REQ_RELEASE_SEMAPHORE,
     REQ_OPEN_NAMED_OBJ,
     REQ_CREATE_FILE,
-    REQ_GET_UNIX_HANDLE,
     REQ_GET_READ_FD,
     REQ_GET_WRITE_FD,
     REQ_SET_FILE_POINTER,
@@ -35,6 +34,8 @@
     REQ_CREATE_CONSOLE,
     REQ_SET_CONSOLE_FD,
     REQ_CREATE_CHANGE_NOTIFICATION,
+    REQ_CREATE_MAPPING,
+    REQ_GET_MAPPING_INFO,
     REQ_NB_REQUESTS
 };
 
@@ -62,7 +63,6 @@
 DECL_HANDLER(release_semaphore);
 DECL_HANDLER(open_named_obj);
 DECL_HANDLER(create_file);
-DECL_HANDLER(get_unix_handle);
 DECL_HANDLER(get_read_fd);
 DECL_HANDLER(get_write_fd);
 DECL_HANDLER(set_file_pointer);
@@ -73,6 +73,8 @@
 DECL_HANDLER(create_console);
 DECL_HANDLER(set_console_fd);
 DECL_HANDLER(create_change_notification);
+DECL_HANDLER(create_mapping);
+DECL_HANDLER(get_mapping_info);
 
 static const struct handler {
     void       (*handler)();
@@ -97,7 +99,6 @@
     { (void(*)())req_release_semaphore, sizeof(struct release_semaphore_request) },
     { (void(*)())req_open_named_obj, sizeof(struct open_named_obj_request) },
     { (void(*)())req_create_file, sizeof(struct create_file_request) },
-    { (void(*)())req_get_unix_handle, sizeof(struct get_unix_handle_request) },
     { (void(*)())req_get_read_fd, sizeof(struct get_read_fd_request) },
     { (void(*)())req_get_write_fd, sizeof(struct get_write_fd_request) },
     { (void(*)())req_set_file_pointer, sizeof(struct set_file_pointer_request) },
@@ -108,6 +109,8 @@
     { (void(*)())req_create_console, sizeof(struct create_console_request) },
     { (void(*)())req_set_console_fd, sizeof(struct set_console_fd_request) },
     { (void(*)())req_create_change_notification, sizeof(struct create_change_notification_request) },
+    { (void(*)())req_create_mapping, sizeof(struct create_mapping_request) },
+    { (void(*)())req_get_mapping_info, sizeof(struct get_mapping_info_request) },
 };
 #endif  /* WANT_REQUEST_HANDLERS */
 
diff --git a/include/server/thread.h b/include/server/thread.h
index 9931301..1977152 100644
--- a/include/server/thread.h
+++ b/include/server/thread.h
@@ -52,7 +52,7 @@
                              struct get_thread_info_reply *reply );
 extern int send_reply( struct thread *thread, int pass_fd,
                        int n, ... /* arg_1, len_1, ..., arg_n, len_n */ );
-extern void add_queue( struct object *obj, struct wait_queue_entry *entry );
+extern int add_queue( struct object *obj, struct wait_queue_entry *entry );
 extern void remove_queue( struct object *obj, struct wait_queue_entry *entry );
 extern void kill_thread( struct thread *thread, int exit_code );
 extern void thread_killed( struct thread *thread, int exit_code );