Changed the server to return STATUS_* error codes.

diff --git a/server/change.c b/server/change.c
index 8347651..844e21b 100644
--- a/server/change.c
+++ b/server/change.c
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winnt.h"
 
 #include "handle.h"
diff --git a/server/console.c b/server/console.c
index f82528e..43fb54c 100644
--- a/server/console.c
+++ b/server/console.c
@@ -24,7 +24,6 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "winerror.h"
 #include "winnt.h"
 #include "wincon.h"
 
@@ -148,7 +147,7 @@
 {
     if (process->console_in || process->console_out)
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         return 0;
     }
     if ((process->console_in = create_console_input( -1 )))
@@ -191,7 +190,7 @@
     }
     else
     {
-        set_error( ERROR_INVALID_HANDLE );
+        set_error( STATUS_OBJECT_TYPE_MISMATCH );
         release_object( obj );
         return 0;
     }
@@ -220,7 +219,7 @@
         else if (obj->ops == &screen_buffer_ops)
             ret = ((struct screen_buffer *)obj)->mode;
         else
-            set_error( ERROR_INVALID_HANDLE );
+            set_error( STATUS_OBJECT_TYPE_MISMATCH );
         release_object( obj );
     }
     return ret;
@@ -243,7 +242,7 @@
         ((struct screen_buffer *)obj)->mode = mode;
         ret = 1;
     }
-    else set_error( ERROR_INVALID_HANDLE );
+    else set_error( STATUS_OBJECT_TYPE_MISMATCH );
     release_object( obj );
     return ret;
 }
@@ -288,7 +287,7 @@
     if (!(new_rec = realloc( console->records,
                              (console->recnum + count) * sizeof(INPUT_RECORD) )))
     {
-        set_error( ERROR_NOT_ENOUGH_MEMORY );
+        set_error( STATUS_NO_MEMORY );
         release_object( console );
         return -1;
     }
@@ -434,7 +433,7 @@
     struct object *obj= req->output ? current->process->console_out : current->process->console_in;
 
     if (obj) req->handle = alloc_handle( current->process, obj, req->access, req->inherit );
-    else set_error( ERROR_ACCESS_DENIED );
+    else set_error( STATUS_ACCESS_DENIED );
 }
 
 /* set info about a console (output only) */
diff --git a/server/context_i386.c b/server/context_i386.c
index 129577c..cb62b09 100644
--- a/server/context_i386.c
+++ b/server/context_i386.c
@@ -14,7 +14,6 @@
 #include <sys/user.h>
 
 #include "winbase.h"
-#include "winerror.h"
 
 #include "thread.h"
 #include "request.h"
@@ -230,7 +229,7 @@
         {
             suspend_thread( thread, 0 );
             if (thread->attached) get_thread_context( thread, req->flags, &req->context );
-            else set_error( ERROR_ACCESS_DENIED );
+            else set_error( STATUS_ACCESS_DENIED );
             resume_thread( thread );
         }
         release_object( thread );
@@ -254,7 +253,7 @@
         {
             suspend_thread( thread, 0 );
             if (thread->attached) set_thread_context( thread, req->flags, &req->context );
-            else set_error( ERROR_ACCESS_DENIED );
+            else set_error( STATUS_ACCESS_DENIED );
             resume_thread( thread );
         }
         release_object( thread );
diff --git a/server/debugger.c b/server/debugger.c
index 7cbf183..01ce211 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -9,7 +9,6 @@
 #include <stdio.h>
 
 #include "winbase.h"
-#include "winerror.h"
 
 #include "handle.h"
 #include "process.h"
@@ -293,7 +292,7 @@
 
     if (!debug_ctx)  /* current thread is not a debugger */
     {
-        set_error( ERROR_INVALID_HANDLE );
+        set_error( STATUS_INVALID_HANDLE );
         return 0;
     }
     if (timeout != -1) flags = SELECT_TIMEOUT;
@@ -326,7 +325,7 @@
     return 1;
  error:
     /* not debugging this process, or no such event */
-    set_error( ERROR_ACCESS_DENIED );  /* FIXME */
+    set_error( STATUS_ACCESS_DENIED );  /* FIXME */
     return 0;
 }
 
@@ -386,14 +385,14 @@
 
     if (process->debugger)  /* already being debugged */
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         return 0;
     }
     /* make sure we don't create a debugging loop */
     for (thread = debugger; thread; thread = thread->process->debugger)
         if (thread->process == process)
         {
-            set_error( ERROR_ACCESS_DENIED );
+            set_error( STATUS_ACCESS_DENIED );
             return 0;
         }
 
diff --git a/server/device.c b/server/device.c
index b2c038e..f1ab4c3 100644
--- a/server/device.c
+++ b/server/device.c
@@ -16,7 +16,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "winerror.h"
 #include "winbase.h"
 
 #include "handle.h"
diff --git a/server/event.c b/server/event.c
index b5e3e3a..5759254 100644
--- a/server/event.c
+++ b/server/event.c
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winnt.h"
 
 #include "handle.h"
@@ -51,7 +50,7 @@
 
     if ((event = create_named_object( &event_ops, name, len )))
     {
-        if (get_error() != ERROR_ALREADY_EXISTS)
+        if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
             /* initialize it if it didn't already exist */
             event->manual_reset = manual_reset;
diff --git a/server/file.c b/server/file.c
index 3cc46bd..70e12c8 100644
--- a/server/file.c
+++ b/server/file.c
@@ -97,7 +97,7 @@
     if ((existing_access & GENERIC_WRITE) && !(sharing & FILE_SHARE_WRITE)) goto error;
     return 1;
  error:
-    set_error( ERROR_SHARING_VIOLATION );
+    set_error( STATUS_SHARING_VIOLATION );
     return 0;
 }
 
@@ -143,7 +143,7 @@
     case OPEN_ALWAYS:       flags = O_CREAT; break;
     case TRUNCATE_EXISTING: flags = O_TRUNC; break;
     case OPEN_EXISTING:     flags = 0; break;
-    default:                set_error( ERROR_INVALID_PARAMETER ); goto error;
+    default:                set_error( STATUS_INVALID_PARAMETER ); goto error;
     }
     switch(access & (GENERIC_READ | GENERIC_WRITE))
     {
@@ -153,7 +153,7 @@
     case GENERIC_READ|GENERIC_WRITE: flags |= O_RDWR; break;
     }
 
-    /* FIXME: should set error to ERROR_ALREADY_EXISTS if file existed before */
+    /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */
     if ((fd = open( name, flags | O_NONBLOCK,
                     (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666 )) == -1)
         goto file_error;
@@ -161,7 +161,7 @@
     if (fstat( fd, &st ) == -1) goto file_error;
     if (S_ISDIR(st.st_mode))
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         goto error;
     }            
 
@@ -193,7 +193,7 @@
     {
         if (!(name = tmpnam(NULL)))
         {
-            set_error( ERROR_TOO_MANY_OPEN_FILES );
+            set_error( STATUS_TOO_MANY_OPENED_FILES );
             return -1;
         }
         fd = open( name, O_CREAT | O_EXCL | O_RDWR, 0600 );
@@ -309,23 +309,23 @@
 {
     switch (errno)
     {
-    case EAGAIN:    set_error( ERROR_SHARING_VIOLATION ); break;
-    case EBADF:     set_error( ERROR_INVALID_HANDLE ); break;
-    case ENOSPC:    set_error( ERROR_HANDLE_DISK_FULL ); break;
+    case EAGAIN:    set_error( STATUS_SHARING_VIOLATION ); break;
+    case EBADF:     set_error( STATUS_INVALID_HANDLE ); break;
+    case ENOSPC:    set_error( STATUS_DISK_FULL ); break;
     case EACCES:
-    case EPERM:     set_error( ERROR_ACCESS_DENIED ); break;
-    case EROFS:     set_error( ERROR_WRITE_PROTECT ); break;
-    case EBUSY:     set_error( ERROR_LOCK_VIOLATION ); break;
-    case ENOENT:    set_error( ERROR_FILE_NOT_FOUND ); break;
-    case EISDIR:    set_error( ERROR_CANNOT_MAKE ); break;
+    case EPERM:     set_error( STATUS_ACCESS_DENIED ); break;
+    case EROFS:     set_error( STATUS_MEDIA_WRITE_PROTECTED ); break;
+    case EBUSY:     set_error( STATUS_FILE_LOCK_CONFLICT ); break;
+    case ENOENT:    set_error( STATUS_NO_SUCH_FILE ); break;
+    case EISDIR:    set_error( 0xc0010000 | ERROR_CANNOT_MAKE /* FIXME */ ); break;
     case ENFILE:
-    case EMFILE:    set_error( ERROR_NO_MORE_FILES ); break;
-    case EEXIST:    set_error( ERROR_FILE_EXISTS ); break;
-    case EINVAL:    set_error( ERROR_INVALID_PARAMETER ); break;
-    case ESPIPE:    set_error( ERROR_SEEK ); break;
-    case ENOTEMPTY: set_error( ERROR_DIR_NOT_EMPTY ); break;
-    case EIO:       set_error( ERROR_NOACCESS ); break;
-    default:        perror("file_set_error"); set_error( ERROR_UNKNOWN ); break;
+    case EMFILE:    set_error( STATUS_NO_MORE_FILES ); break;
+    case EEXIST:    set_error( STATUS_OBJECT_NAME_COLLISION ); break;
+    case EINVAL:    set_error( STATUS_INVALID_PARAMETER ); break;
+    case ESPIPE:    set_error( 0xc0010000 | ERROR_SEEK /* FIXME */ ); break;
+    case ENOTEMPTY: set_error( STATUS_DIRECTORY_NOT_EMPTY ); break;
+    case EIO:       set_error( STATUS_ACCESS_VIOLATION ); break;
+    default:        perror("file_set_error"); set_error( ERROR_UNKNOWN /* FIXME */ ); break;
     }
 }
 
@@ -347,7 +347,7 @@
     if (*high)
     {
         fprintf( stderr, "set_file_pointer: offset > 4Gb not supported yet\n" );
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return 0;
     }
 
@@ -357,7 +357,7 @@
     {
         /* Check for seek before start of file */
         if ((errno == EINVAL) && (whence != SEEK_SET) && (*low < 0))
-            set_error( ERROR_NEGATIVE_SEEK );
+            set_error( 0xc0010000 | ERROR_NEGATIVE_SEEK /* FIXME */ );
         else
             file_set_error();
         release_object( file );
@@ -394,7 +394,7 @@
 
     if (size_high)
     {
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return 0;
     }
     if (fstat( file->obj.fd, &st ) == -1)
diff --git a/server/handle.c b/server/handle.c
index be81511..4b8ccc9 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -10,7 +10,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winbase.h"
 
 #include "handle.h"
@@ -150,7 +149,7 @@
     count *= 2;
     if (!(new_entries = realloc( table->entries, count * sizeof(struct handle_entry) )))
     {
-        set_error( ERROR_OUTOFMEMORY );
+        set_error( STATUS_NO_MEMORY );
         return 0;
     }
     table->entries = new_entries;
@@ -225,7 +224,7 @@
     return entry;
 
  error:
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_INVALID_HANDLE );
     return NULL;
 }
 
@@ -291,7 +290,7 @@
     if (!(entry = get_handle( process, handle ))) return 0;
     if (entry->access & RESERVED_CLOSE_PROTECT)
     {
-        set_error( ERROR_INVALID_HANDLE );
+        set_error( STATUS_INVALID_HANDLE );
         return 0;
     }
     obj = entry->ptr;
@@ -340,14 +339,14 @@
         if (!(entry = get_handle( process, handle ))) return NULL;
         if ((entry->access & access) != access)
         {
-            set_error( ERROR_ACCESS_DENIED );
+            set_error( STATUS_ACCESS_DENIED );
             return NULL;
         }
         obj = entry->ptr;
     }
     if (ops && (obj->ops != ops))
     {
-        set_error( ERROR_INVALID_HANDLE );  /* not the right type */
+        set_error( STATUS_OBJECT_TYPE_MISMATCH );  /* not the right type */
         return NULL;
     }
     return grab_object( obj );
@@ -362,7 +361,7 @@
     if (get_magic_handle( handle ))
     {
         /* we can retrieve but not set info for magic handles */
-        if (mask) set_error( ERROR_ACCESS_DENIED );
+        if (mask) set_error( STATUS_ACCESS_DENIED );
         return 0;
     }
     if (!(entry = get_handle( process, handle ))) return -1;
@@ -409,13 +408,13 @@
     if (obj)
     {
         if (ops && obj->ops != ops)
-            set_error( ERROR_INVALID_HANDLE );
+            set_error( STATUS_OBJECT_TYPE_MISMATCH );
         else
             handle = alloc_handle( current->process, obj, access, inherit );
         release_object( obj );
     }
     else
-        set_error( ERROR_FILE_NOT_FOUND );
+        set_error( STATUS_OBJECT_NAME_NOT_FOUND );
     return handle;
 }
 
diff --git a/server/mapping.c b/server/mapping.c
index 66fefd2..39a416b 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -10,7 +10,6 @@
 #include <unistd.h>
 
 #include "config.h"
-#include "winerror.h"
 #include "winnt.h"
 #include "winbase.h"
 
@@ -95,7 +94,7 @@
 
     if (!(mapping = create_named_object( &mapping_ops, name, len )))
         return NULL;
-    if (get_error() == ERROR_ALREADY_EXISTS)
+    if (get_error() == STATUS_OBJECT_NAME_COLLISION)
         return &mapping->obj;  /* Nothing else to do */
 
     if (protect & VPROT_READ) access |= GENERIC_READ;
@@ -118,7 +117,7 @@
     {
         if (!size_high && !size_low)
         {
-            set_error( ERROR_INVALID_PARAMETER );
+            set_error( STATUS_INVALID_PARAMETER );
             mapping->file = NULL;
             goto error;
         }
diff --git a/server/mutex.c b/server/mutex.c
index c818d8a..2243aef 100644
--- a/server/mutex.c
+++ b/server/mutex.c
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winnt.h"
 
 #include "handle.h"
@@ -54,7 +53,7 @@
 
     if ((mutex = create_named_object( &mutex_ops, name, len )))
     {
-        if (get_error() != ERROR_ALREADY_EXISTS)
+        if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
             /* initialize it if it didn't already exist */
             mutex->count = 0;
@@ -166,7 +165,7 @@
     if ((mutex = (struct mutex *)get_handle_obj( current->process, req->handle,
                                                  MUTEX_MODIFY_STATE, &mutex_ops )))
     {
-        if (!mutex->count || (mutex->owner != current)) set_error( ERROR_NOT_OWNER );
+        if (!mutex->count || (mutex->owner != current)) set_error( STATUS_MUTANT_NOT_OWNED );
         else if (!--mutex->count) do_release( mutex );
         release_object( mutex );
     }
diff --git a/server/object.c b/server/object.c
index 28cfe67..71e9451 100644
--- a/server/object.c
+++ b/server/object.c
@@ -12,7 +12,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "winerror.h"
 #include "thread.h"
 #include "unicode.h"
 
@@ -53,7 +52,7 @@
 {
     void *ptr = malloc( size );
     if (ptr) memset( ptr, 0x55, size );
-    else if (current) set_error( ERROR_OUTOFMEMORY );
+    else if (current) set_error( STATUS_NO_MEMORY );
     return ptr;
 }
 
@@ -165,10 +164,10 @@
         free( name_ptr );  /* we no longer need it */
         if (obj->ops == ops)
         {
-            set_error( ERROR_ALREADY_EXISTS );
+            set_error( STATUS_OBJECT_NAME_COLLISION );
             return obj;
         }
-        set_error( ERROR_INVALID_HANDLE );
+        set_error( STATUS_OBJECT_TYPE_MISMATCH );
         return NULL;
     }
     if ((obj = alloc_object( ops, -1 )))
@@ -242,7 +241,7 @@
 
 int no_add_queue( struct object *obj, struct wait_queue_entry *entry )
 {
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return 0;
 }
 
@@ -253,25 +252,25 @@
 
 int no_read_fd( struct object *obj )
 {
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return -1;
 }
 
 int no_write_fd( struct object *obj )
 {
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return -1;
 }
 
 int no_flush( struct object *obj )
 {
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return 0;
 }
 
 int no_get_file_info( struct object *obj, struct get_file_info_request *info )
 {
-    set_error( ERROR_INVALID_HANDLE );
+    set_error( STATUS_OBJECT_TYPE_MISMATCH );
     return 0;
 }
 
diff --git a/server/pipe.c b/server/pipe.c
index 49ec7aa..d86fde8 100644
--- a/server/pipe.c
+++ b/server/pipe.c
@@ -20,7 +20,6 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "winerror.h"
 #include "winbase.h"
 
 #include "handle.h"
@@ -122,12 +121,12 @@
 
     if (!pipe->other)
     {
-        set_error( ERROR_BROKEN_PIPE );
+        set_error( STATUS_PIPE_BROKEN );
         return -1;
     }
     if (pipe->side != READ_SIDE)  /* FIXME: should not be necessary */
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         return -1;
     }
     return dup( pipe->obj.fd );
@@ -140,12 +139,12 @@
 
     if (!pipe->other)
     {
-        set_error( ERROR_BROKEN_PIPE );
+        set_error( STATUS_PIPE_BROKEN );
         return -1;
     }
     if (pipe->side != WRITE_SIDE)  /* FIXME: should not be necessary */
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         return -1;
     }
     return dup( pipe->obj.fd );
diff --git a/server/process.c b/server/process.c
index 20892ba..b2a53e4 100644
--- a/server/process.c
+++ b/server/process.c
@@ -14,7 +14,6 @@
 #include <sys/time.h>
 #include <unistd.h>
 
-#include "winerror.h"
 #include "winbase.h"
 #include "winnt.h"
 
@@ -205,7 +204,7 @@
     struct process *p = first_process;
     while (p && (p != id)) p = p->next;
     if (p) grab_object( p );
-    else set_error( ERROR_INVALID_PARAMETER );
+    else set_error( STATUS_INVALID_PARAMETER );
     return p;
 }
 
@@ -329,7 +328,7 @@
         process->priority = req->priority;
     if (req->mask & SET_PROCESS_INFO_AFFINITY)
     {
-        if (req->affinity != 1) set_error( ERROR_INVALID_PARAMETER );
+        if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
         else process->affinity = req->affinity;
     }
 }
@@ -344,7 +343,7 @@
 
     if ((unsigned int)addr % sizeof(int))  /* address must be aligned */
     {
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return;
     }
     suspend_thread( thread, 0 );
@@ -369,7 +368,7 @@
             if (len && (read_thread_int( thread, addr + len - 1, &dummy ) == -1)) goto done;
         }
     }
-    else set_error( ERROR_ACCESS_DENIED );
+    else set_error( STATUS_ACCESS_DENIED );
  done:
     resume_thread( thread );
 }
@@ -385,7 +384,7 @@
 
     if (!len || ((unsigned int)addr % sizeof(int)))  /* address must be aligned */
     {
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return;
     }
     suspend_thread( thread, 0 );
@@ -425,7 +424,7 @@
             if (len && (write_thread_int( thread, addr + len - 1, 0, 0 ) == -1)) goto done;
         }
     }
-    else set_error( ERROR_ACCESS_DENIED );
+    else set_error( STATUS_ACCESS_DENIED );
  done:
     resume_thread( thread );
 }
diff --git a/server/registry.c b/server/registry.c
index 188725e..2136e58 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -21,7 +21,6 @@
 #include "unicode.h"
 
 #include "winbase.h"
-#include "winerror.h"
 #include "winreg.h"
 
 
@@ -364,7 +363,7 @@
         nb_subkeys = key->nb_subkeys + (key->nb_subkeys / 2);  /* grow by 50% */
         if (!(new_subkeys = realloc( key->subkeys, nb_subkeys * sizeof(*new_subkeys) )))
         {
-            set_error( ERROR_OUTOFMEMORY );
+            set_error( STATUS_NO_MEMORY );
             return 0;
         }
     }
@@ -461,7 +460,7 @@
     {
         if (!(key = find_subkey( key, path, &index )))
         {
-            set_error( ERROR_FILE_NOT_FOUND );
+            set_error( STATUS_OBJECT_NAME_NOT_FOUND );
             break;
         }
         path = get_path_token( NULL, 0 );
@@ -482,13 +481,13 @@
 
     if (key->flags & KEY_DELETED) /* we cannot create a subkey under a deleted key */
     {
-        set_error( ERROR_KEY_DELETED );
+        set_error( STATUS_KEY_DELETED );
         return NULL;
     }
     if (options & REG_OPTION_VOLATILE) flags |= KEY_VOLATILE;
     else if (key->flags & KEY_VOLATILE)
     {
-        set_error( ERROR_CHILD_MUST_BE_VOLATILE );
+        set_error( STATUS_CHILD_MUST_BE_VOLATILE );
         return NULL;
     }
 
@@ -532,7 +531,7 @@
 {
     struct key *key;
 
-    if ((index < 0) || (index > parent->last_subkey)) set_error( ERROR_NO_MORE_ITEMS );
+    if ((index < 0) || (index > parent->last_subkey)) set_error( STATUS_NO_MORE_ENTRIES );
     else
     {
         key = parent->subkeys[index];
@@ -593,12 +592,12 @@
         /* deleting this key, must find parent and index */
         if (key->flags & KEY_ROOT)
         {
-            set_error( ERROR_ACCESS_DENIED );
+            set_error( STATUS_ACCESS_DENIED );
             return;
         }
         if (!(parent = key->parent) || (key->flags & KEY_DELETED))
         {
-            set_error( ERROR_KEY_DELETED );
+            set_error( STATUS_KEY_DELETED );
             return;
         }
         for (index = 0; index <= parent->last_subkey; index++)
@@ -610,7 +609,7 @@
         parent = key;
         if (!(key = find_subkey( parent, path, &index )))
         {
-            set_error( ERROR_FILE_NOT_FOUND );
+            set_error( STATUS_OBJECT_NAME_NOT_FOUND );
             return;
         }
         path = get_path_token( NULL, 0 );
@@ -619,7 +618,7 @@
     /* we can only delete a key that has no subkeys (FIXME) */
     if ((key->flags & KEY_ROOT) || (key->last_subkey >= 0))
     {
-        set_error( ERROR_ACCESS_DENIED );
+        set_error( STATUS_ACCESS_DENIED );
         return;
     }
     if (debug_level > 1) dump_operation( key, NULL, "Delete" );
@@ -638,7 +637,7 @@
         nb_values = key->nb_values + (key->nb_values / 2);  /* grow by 50% */
         if (!(new_val = realloc( key->values, nb_values * sizeof(*new_val) )))
         {
-            set_error( ERROR_OUTOFMEMORY );
+            set_error( STATUS_NO_MEMORY );
             return 0;
         }
     }
@@ -741,7 +740,7 @@
     {
         *type = -1;
         *len = 0;
-        set_error( ERROR_FILE_NOT_FOUND );
+        set_error( STATUS_OBJECT_NAME_NOT_FOUND );
     }
 }
 
@@ -754,7 +753,7 @@
     {
         name[0] = 0;
         *len = 0;
-        set_error( ERROR_NO_MORE_ITEMS );
+        set_error( STATUS_NO_MORE_ENTRIES );
     }
     else
     {
@@ -775,7 +774,7 @@
 
     if (!(value = find_value( key, name, &index )))
     {
-        set_error( ERROR_FILE_NOT_FOUND );
+        set_error( STATUS_OBJECT_NAME_NOT_FOUND );
         return;
     }
     if (debug_level > 1) dump_operation( key, value, "Delete" );
@@ -922,7 +921,7 @@
         newlen = info->len + info->len / 2;
         if (!(newbuf = realloc( info->buffer, newlen )))
         {
-            set_error( ERROR_OUTOFMEMORY );
+            set_error( STATUS_NO_MEMORY );
             return -1;
         }
         info->buffer = newbuf;
@@ -937,7 +936,7 @@
     if (info->tmplen >= size) return 1;
     if (!(tmp = realloc( info->tmp, size )))
     {
-        set_error( ERROR_OUTOFMEMORY );
+        set_error( STATUS_NO_MEMORY );
         return 0;
     }
     info->tmp = tmp;
@@ -1196,7 +1195,7 @@
     if ((read_next_line( &info ) != 1) ||
         strcmp( info.buffer, "WINE REGISTRY Version 2" ))
     {
-        set_error( ERROR_NOT_REGISTRY_FILE );
+        set_error( STATUS_NOT_REGISTRY_FILE );
         goto done;
     }
 
@@ -1319,7 +1318,7 @@
 
     if (key->flags & KEY_DELETED)
     {
-        set_error( ERROR_KEY_DELETED );
+        set_error( STATUS_KEY_DELETED );
         return;
     }
     if (!(obj = get_handle_obj( current->process, handle, GENERIC_WRITE, NULL ))) return;
@@ -1443,7 +1442,7 @@
     int datalen = req->len;
     if (datalen > max)
     {
-        set_error( ERROR_OUTOFMEMORY );  /* FIXME */
+        set_error( STATUS_NO_MEMORY );  /* FIXME */
         return;
     }
     if ((key = get_hkey_obj( req->hkey, KEY_SET_VALUE )))
diff --git a/server/request.c b/server/request.c
index fa9ccc7..945126b 100644
--- a/server/request.c
+++ b/server/request.c
@@ -21,7 +21,6 @@
 #include <sys/uio.h>
 #include <unistd.h>
 
-#include "winerror.h"
 #include "winnt.h"
 #include "winbase.h"
 #include "wincon.h"
diff --git a/server/semaphore.c b/server/semaphore.c
index 221d533..6346fc2 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -8,7 +8,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winnt.h"
 
 #include "handle.h"
@@ -51,12 +50,12 @@
 
     if (!max || (initial > max))
     {
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return NULL;
     }
     if ((sem = create_named_object( &semaphore_ops, name, len )))
     {
-        if (get_error() != ERROR_ALREADY_EXISTS)
+        if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
             /* initialize it if it didn't already exist */
             sem->count = initial;
@@ -77,7 +76,7 @@
         prev = sem->count;
         if (sem->count + count < sem->count || sem->count + count > sem->max)
         {
-            set_error( ERROR_TOO_MANY_POSTS );
+            set_error( STATUS_SEMAPHORE_LIMIT_EXCEEDED );
         }
         else if (sem->count)
         {
diff --git a/server/snapshot.c b/server/snapshot.c
index 173fb9d..2a16ac5 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -10,7 +10,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "winerror.h"
 #include "winnt.h"
 #include "tlhelp32.h"
 
@@ -72,13 +71,13 @@
 
     if (!snapshot->process_count)
     {
-        set_error( ERROR_INVALID_PARAMETER );  /* FIXME */
+        set_error( STATUS_INVALID_PARAMETER );  /* FIXME */
         return 0;
     }
     if (req->reset) snapshot->process_pos = 0;
     else if (snapshot->process_pos >= snapshot->process_count)
     {
-        set_error( ERROR_NO_MORE_FILES );
+        set_error( STATUS_NO_MORE_FILES );
         return 0;
     }
     ptr = &snapshot->process[snapshot->process_pos++];
diff --git a/server/thread.c b/server/thread.c
index 5932644..f162918 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -25,7 +25,6 @@
 
 
 #include "winbase.h"
-#include "winerror.h"
 
 #include "handle.h"
 #include "process.h"
@@ -247,7 +246,7 @@
         thread->priority = req->priority;
     if (req->mask & SET_THREAD_INFO_AFFINITY)
     {
-        if (req->affinity != 1) set_error( ERROR_INVALID_PARAMETER );
+        if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
         else thread->affinity = req->affinity;
     }
 }
@@ -260,7 +259,7 @@
     {
         if (!(thread->process->suspend + thread->suspend++)) stop_thread( thread );
     }
-    else set_error( ERROR_SIGNAL_REFUSED );
+    else set_error( STATUS_SUSPEND_COUNT_EXCEEDED );
     return old_count;
 }
 
@@ -475,7 +474,7 @@
 
     if ((count < 0) || (count > MAXIMUM_WAIT_OBJECTS))
     {
-        set_error( ERROR_INVALID_PARAMETER );
+        set_error( STATUS_INVALID_PARAMETER );
         return 0;
     }
     for (i = 0; i < count; i++)
diff --git a/server/timer.c b/server/timer.c
index 9ded7bd..6caa22a 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -10,8 +10,6 @@
 #include <sys/time.h>
 #include <sys/types.h>
 
-#include "winerror.h"
-
 #include "handle.h"
 #include "request.h"
 
@@ -62,7 +60,7 @@
 
     if ((timer = create_named_object( &timer_ops, name, len )))
     {
-        if (get_error() != ERROR_ALREADY_EXISTS)
+        if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
             /* initialize it if it didn't already exist */
             timer->manual       = manual;
diff --git a/server/trace.c b/server/trace.c
index 7fc5eb6..f140afb 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1475,7 +1475,7 @@
 
 void trace_reply( struct thread *thread )
 {
-    fprintf( stderr, "%08x: %s() = %d",
+    fprintf( stderr, "%08x: %s() = %x",
              (unsigned int)thread, req_names[thread->last_req], thread->error );
     if (reply_dumpers[thread->last_req])
     {