diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index bbb071b..08bc17d 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2095,10 +2095,8 @@
         SERVER_START_REQ( lock_file )
         {
             req->handle      = hFile;
-            req->offset_low  = offset->u.LowPart;
-            req->offset_high = offset->u.HighPart;
-            req->count_low   = count->u.LowPart;
-            req->count_high  = count->u.HighPart;
+            req->offset      = offset->QuadPart;
+            req->count       = count->QuadPart;
             req->shared      = !exclusive;
             req->wait        = !dont_wait;
             ret = wine_server_call( req );
@@ -2158,11 +2156,9 @@
 
     SERVER_START_REQ( unlock_file )
     {
-        req->handle      = hFile;
-        req->offset_low  = offset->u.LowPart;
-        req->offset_high = offset->u.HighPart;
-        req->count_low   = count->u.LowPart;
-        req->count_high  = count->u.HighPart;
+        req->handle = hFile;
+        req->offset = offset->QuadPart;
+        req->count  = count->QuadPart;
         status = wine_server_call( req );
     }
     SERVER_END_REQ;
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 8ece976..21a9814 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -754,8 +754,7 @@
         result->type = call->type;
         result->map_view.addr   = call->map_view.addr;
         result->map_view.size   = call->map_view.size;
-        offset.u.LowPart        = call->map_view.offset_low;
-        offset.u.HighPart       = call->map_view.offset_high;
+        offset.QuadPart         = call->map_view.offset;
         result->map_view.status = NtMapViewOfSection( call->map_view.handle, NtCurrentProcess(),
                                                       &result->map_view.addr, call->map_view.zero_bits,
                                                       0, &offset, &result->map_view.size, ViewShare,
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 14ff665..39d81ed 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1877,8 +1877,7 @@
         req->attributes  = (attr) ? attr->Attributes : 0;
         req->rootdir     = attr ? attr->RootDirectory : 0;
         req->file_handle = file;
-        req->size_high   = size ? size->u.HighPart : 0;
-        req->size_low    = size ? size->u.LowPart : 0;
+        req->size        = size ? size->QuadPart : 0;
         req->protect     = vprot;
         if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
         ret = wine_server_call( req );
@@ -1922,13 +1921,14 @@
                                     SECTION_INHERIT inherit, ULONG alloc_type, ULONG protect )
 {
     NTSTATUS res;
+    ULONGLONG full_size;
     SIZE_T size = 0;
     SIZE_T mask = get_mask( zero_bits );
     int unix_handle = -1, needs_close;
     int prot;
     void *base;
     struct file_view *view;
-    DWORD size_low, size_high, header_size, shared_size;
+    DWORD header_size;
     HANDLE dup_mapping, shared_file;
     LARGE_INTEGER offset;
     sigset_t sigset;
@@ -1952,8 +1952,7 @@
         call.map_view.handle      = handle;
         call.map_view.addr        = *addr_ptr;
         call.map_view.size        = *size_ptr;
-        call.map_view.offset_low  = offset.u.LowPart;
-        call.map_view.offset_high = offset.u.HighPart;
+        call.map_view.offset      = offset.QuadPart;
         call.map_view.zero_bits   = zero_bits;
         call.map_view.alloc_type  = alloc_type;
         call.map_view.prot        = protect;
@@ -1974,19 +1973,18 @@
         res = wine_server_call( req );
         prot        = reply->protect;
         base        = reply->base;
-        size_low    = reply->size_low;
-        size_high   = reply->size_high;
+        full_size   = reply->size;
         header_size = reply->header_size;
         dup_mapping = reply->mapping;
         shared_file = reply->shared_file;
-        shared_size = reply->shared_size;
     }
     SERVER_END_REQ;
     if (res) return res;
 
-    size = ((ULONGLONG)size_high << 32) | size_low;
-    if (sizeof(size) == sizeof(size_low) && size_high)
-        ERR( "Sizes larger than 4Gb (%x%08x) not supported on this platform\n", size_high, size_low );
+    size = full_size;
+    if (sizeof(size) < sizeof(full_size) && (size != full_size))
+        ERR( "Sizes larger than 4Gb (%x%08x) not supported on this platform\n",
+             (DWORD)(full_size >> 32), (DWORD)full_size );
 
     if ((res = server_get_unix_fd( handle, 0, &unix_handle, &needs_close, NULL, NULL ))) goto done;
 
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index edaea23..116216b 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -22,6 +22,7 @@
 typedef unsigned int thread_id_t;
 typedef unsigned int data_size_t;
 typedef unsigned int ioctl_code_t;
+typedef unsigned __int64 file_pos_t;
 
 struct request_header
 {
@@ -317,8 +318,7 @@
         obj_handle_t     handle;
         void            *addr;
         unsigned long    size;
-        unsigned int     offset_low;
-        unsigned int     offset_high;
+        file_pos_t       offset;
         unsigned int     zero_bits;
         unsigned int     alloc_type;
         unsigned int     prot;
@@ -1094,10 +1094,8 @@
 {
     struct request_header __header;
     obj_handle_t handle;
-    unsigned int offset_low;
-    unsigned int offset_high;
-    unsigned int count_low;
-    unsigned int count_high;
+    file_pos_t   offset;
+    file_pos_t   count;
     int          shared;
     int          wait;
 };
@@ -1114,10 +1112,8 @@
 {
     struct request_header __header;
     obj_handle_t handle;
-    unsigned int offset_low;
-    unsigned int offset_high;
-    unsigned int count_low;
-    unsigned int count_high;
+    file_pos_t   offset;
+    file_pos_t   count;
 };
 struct unlock_file_reply
 {
@@ -1665,8 +1661,7 @@
     unsigned int access;
     unsigned int attributes;
     obj_handle_t rootdir;
-    int          size_high;
-    int          size_low;
+    file_pos_t   size;
     int          protect;
     obj_handle_t file_handle;
     /* VARARG(name,unicode_str); */
@@ -1712,14 +1707,12 @@
 struct get_mapping_info_reply
 {
     struct reply_header __header;
-    int          size_high;
-    int          size_low;
+    file_pos_t   size;
     int          protect;
     int          header_size;
     void*        base;
     obj_handle_t mapping;
     obj_handle_t shared_file;
-    int          shared_size;
 };
 
 
@@ -4880,6 +4873,6 @@
     struct set_completion_info_reply set_completion_info_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 316
+#define SERVER_PROTOCOL_VERSION 317
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/file.c b/server/file.c
index 7c384a3..7a62b64 100644
--- a/server/file.c
+++ b/server/file.c
@@ -657,12 +657,10 @@
 DECL_HANDLER(lock_file)
 {
     struct file *file;
-    file_pos_t offset = ((file_pos_t)req->offset_high << 32) | req->offset_low;
-    file_pos_t count = ((file_pos_t)req->count_high << 32) | req->count_low;
 
     if ((file = get_file_obj( current->process, req->handle, 0 )))
     {
-        reply->handle = lock_fd( file->fd, offset, count, req->shared, req->wait );
+        reply->handle = lock_fd( file->fd, req->offset, req->count, req->shared, req->wait );
         reply->overlapped = is_overlapped( file );
         release_object( file );
     }
@@ -672,12 +670,10 @@
 DECL_HANDLER(unlock_file)
 {
     struct file *file;
-    file_pos_t offset = ((file_pos_t)req->offset_high << 32) | req->offset_low;
-    file_pos_t count = ((file_pos_t)req->count_high << 32) | req->count_low;
 
     if ((file = get_file_obj( current->process, req->handle, 0 )))
     {
-        unlock_fd( file->fd, offset, count );
+        unlock_fd( file->fd, req->offset, req->count );
         release_object( file );
     }
 }
diff --git a/server/file.h b/server/file.h
index 823cc2c..d6295d9 100644
--- a/server/file.h
+++ b/server/file.h
@@ -27,8 +27,6 @@
 struct async_queue;
 struct completion;
 
-typedef unsigned __int64 file_pos_t;
-
 /* operations valid on file descriptor objects */
 struct fd_ops
 {
diff --git a/server/mapping.c b/server/mapping.c
index 8c1e6b0..33e4204 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -47,7 +47,6 @@
     int             header_size;     /* size of headers (for PE image mapping) */
     void           *base;            /* default base addr (for PE image mapping) */
     struct file    *shared_file;     /* temp file for shared PE mapping */
-    int             shared_size;     /* shared mapping total size */
     struct list     shared_entry;    /* entry in global shared PE mappings list */
 };
 
@@ -141,7 +140,8 @@
                                  IMAGE_SECTION_HEADER *sec, unsigned int nb_sec )
 {
     unsigned int i;
-    size_t file_size, map_size, max_size, total_size;
+    file_pos_t total_size;
+    size_t file_size, map_size, max_size;
     off_t shared_pos, read_pos, write_pos;
     char *buffer = NULL;
     int shared_fd;
@@ -160,7 +160,7 @@
             total_size += map_size;
         }
     }
-    if (!(mapping->shared_size = total_size)) return 1;  /* nothing to do */
+    if (!total_size) return 1;  /* nothing to do */
 
     if ((mapping->shared_file = get_shared_file( mapping ))) return 1;
 
@@ -296,7 +296,6 @@
     mapping->header_size = 0;
     mapping->base        = NULL;
     mapping->shared_file = NULL;
-    mapping->shared_size = 0;
 
     if (protect & VPROT_READ) access |= FILE_READ_DATA;
     if (protect & VPROT_WRITE) access |= FILE_WRITE_DATA;
@@ -348,10 +347,10 @@
     struct mapping *mapping = (struct mapping *)obj;
     assert( obj->ops == &mapping_ops );
     fprintf( stderr, "Mapping size=%08x%08x prot=%08x file=%p header_size=%08x base=%p "
-             "shared_file=%p shared_size=%08x ",
+             "shared_file=%p ",
              (unsigned int)(mapping->size >> 32), (unsigned int)mapping->size,
              mapping->protect, mapping->file, mapping->header_size,
-             mapping->base, mapping->shared_file, mapping->shared_size );
+             mapping->base, mapping->shared_file );
     dump_object_name( &mapping->obj );
     fputc( '\n', stderr );
 }
@@ -395,14 +394,13 @@
     struct object *obj;
     struct unicode_str name;
     struct directory *root = NULL;
-    file_pos_t size = ((file_pos_t)req->size_high << 32) | req->size_low;
 
     reply->handle = 0;
     get_req_unicode_str( &name );
     if (req->rootdir && !(root = get_directory_obj( current->process, req->rootdir, 0 )))
         return;
 
-    if ((obj = create_mapping( root, &name, req->attributes, size, req->protect, req->file_handle )))
+    if ((obj = create_mapping( root, &name, req->attributes, req->size, req->protect, req->file_handle )))
     {
         reply->handle = alloc_handle( current->process, obj, req->access, req->attributes );
         release_object( obj );
@@ -440,13 +438,11 @@
     if ((mapping = (struct mapping *)get_handle_obj( current->process, req->handle,
                                                      0, &mapping_ops )))
     {
-        reply->size_high   = (unsigned int)(mapping->size >> 32);
-        reply->size_low    = (unsigned int)mapping->size;
+        reply->size        = mapping->size;
         reply->protect     = mapping->protect;
         reply->header_size = mapping->header_size;
         reply->base        = mapping->base;
         reply->shared_file = 0;
-        reply->shared_size = mapping->shared_size;
         if ((fd = get_obj_fd( &mapping->obj )))
         {
             if (!is_fd_removable(fd))
diff --git a/server/protocol.def b/server/protocol.def
index d7d4248..a00ccb9 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -38,6 +38,7 @@
 typedef unsigned int thread_id_t;
 typedef unsigned int data_size_t;
 typedef unsigned int ioctl_code_t;
+typedef unsigned __int64 file_pos_t;
 
 struct request_header
 {
@@ -333,8 +334,7 @@
         obj_handle_t     handle;    /* mapping handle */
         void            *addr;      /* requested address */
         unsigned long    size;      /* allocation size */
-        unsigned int     offset_low;/* file offset */
-        unsigned int     offset_high;
+        file_pos_t       offset;    /* file offset */
         unsigned int     zero_bits; /* allocation alignment */
         unsigned int     alloc_type;/* allocation type */
         unsigned int     prot;      /* memory protection flags */
@@ -906,10 +906,8 @@
 /* Lock a region of a file */
 @REQ(lock_file)
     obj_handle_t handle;        /* handle to the file */
-    unsigned int offset_low;    /* offset of start of lock */
-    unsigned int offset_high;   /* offset of start of lock */
-    unsigned int count_low;     /* count of bytes to lock */
-    unsigned int count_high;    /* count of bytes to lock */
+    file_pos_t   offset;        /* offset of start of lock */
+    file_pos_t   count;         /* count of bytes to lock */
     int          shared;        /* shared or exclusive lock? */
     int          wait;          /* do we want to wait? */
 @REPLY
@@ -921,10 +919,8 @@
 /* Unlock a region of a file */
 @REQ(unlock_file)
     obj_handle_t handle;        /* handle to the file */
-    unsigned int offset_low;    /* offset of start of unlock */
-    unsigned int offset_high;   /* offset of start of unlock */
-    unsigned int count_low;     /* count of bytes to unlock */
-    unsigned int count_high;    /* count of bytes to unlock */
+    file_pos_t   offset;        /* offset of start of unlock */
+    file_pos_t   count;         /* count of bytes to unlock */
 @END
 
 
@@ -1310,8 +1306,7 @@
     unsigned int access;        /* wanted access rights */
     unsigned int attributes;    /* object attributes */
     obj_handle_t rootdir;       /* root directory */
-    int          size_high;     /* mapping size */
-    int          size_low;      /* mapping size */
+    file_pos_t   size;          /* mapping size */
     int          protect;       /* protection flags (see below) */
     obj_handle_t file_handle;   /* file handle */
     VARARG(name,unicode_str);   /* object name */
@@ -1344,14 +1339,12 @@
 @REQ(get_mapping_info)
     obj_handle_t handle;        /* handle to the mapping */
 @REPLY
-    int          size_high;     /* mapping size */
-    int          size_low;      /* mapping size */
+    file_pos_t   size;          /* mapping size */
     int          protect;       /* protection flags */
     int          header_size;   /* header size (for VPROT_IMAGE mapping) */
     void*        base;          /* default base addr (for VPROT_IMAGE mapping) */
     obj_handle_t mapping;       /* duplicate mapping handle unless removable */
     obj_handle_t shared_file;   /* shared mapping file handle */
-    int          shared_size;   /* shared mapping size */
 @END
 
 
diff --git a/server/trace.c b/server/trace.c
index 53e0de8..4471d6f 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -70,6 +70,11 @@
     fprintf( stderr, get_timeout_str(*time) );
 }
 
+static void dump_file_pos( const file_pos_t *pos )
+{
+    fprintf( stderr, "%x%08x", (unsigned int)(*pos >> 32), (unsigned int)*pos );
+}
+
 static void dump_rectangle( const rectangle_t *rect )
 {
     fprintf( stderr, "{%d,%d;%d,%d}",
@@ -153,8 +158,8 @@
     case APC_MAP_VIEW:
         fprintf( stderr, "APC_MAP_VIEW,handle=%p,addr=%p,size=%lu,offset=%x%08x,zero_bits=%u,alloc_type=%x,prot=%x",
                  call->map_view.handle, call->map_view.addr, call->map_view.size,
-                 call->map_view.offset_high, call->map_view.offset_low, call->map_view.zero_bits,
-                 call->map_view.alloc_type, call->map_view.prot );
+                 (unsigned int)(call->map_view.offset >> 32), (unsigned int)call->map_view.offset,
+                 call->map_view.zero_bits, call->map_view.alloc_type, call->map_view.prot );
         break;
     case APC_UNMAP_VIEW:
         fprintf( stderr, "APC_UNMAP_VIEW,addr=%p", call->unmap_view.addr );
@@ -1308,10 +1313,12 @@
 static void dump_lock_file_request( const struct lock_file_request *req )
 {
     fprintf( stderr, " handle=%p,", req->handle );
-    fprintf( stderr, " offset_low=%08x,", req->offset_low );
-    fprintf( stderr, " offset_high=%08x,", req->offset_high );
-    fprintf( stderr, " count_low=%08x,", req->count_low );
-    fprintf( stderr, " count_high=%08x,", req->count_high );
+    fprintf( stderr, " offset=" );
+    dump_file_pos( &req->offset );
+    fprintf( stderr, "," );
+    fprintf( stderr, " count=" );
+    dump_file_pos( &req->count );
+    fprintf( stderr, "," );
     fprintf( stderr, " shared=%d,", req->shared );
     fprintf( stderr, " wait=%d", req->wait );
 }
@@ -1325,10 +1332,11 @@
 static void dump_unlock_file_request( const struct unlock_file_request *req )
 {
     fprintf( stderr, " handle=%p,", req->handle );
-    fprintf( stderr, " offset_low=%08x,", req->offset_low );
-    fprintf( stderr, " offset_high=%08x,", req->offset_high );
-    fprintf( stderr, " count_low=%08x,", req->count_low );
-    fprintf( stderr, " count_high=%08x", req->count_high );
+    fprintf( stderr, " offset=" );
+    dump_file_pos( &req->offset );
+    fprintf( stderr, "," );
+    fprintf( stderr, " count=" );
+    dump_file_pos( &req->count );
 }
 
 static void dump_create_socket_request( const struct create_socket_request *req )
@@ -1691,8 +1699,9 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " attributes=%08x,", req->attributes );
     fprintf( stderr, " rootdir=%p,", req->rootdir );
-    fprintf( stderr, " size_high=%d,", req->size_high );
-    fprintf( stderr, " size_low=%d,", req->size_low );
+    fprintf( stderr, " size=" );
+    dump_file_pos( &req->size );
+    fprintf( stderr, "," );
     fprintf( stderr, " protect=%d,", req->protect );
     fprintf( stderr, " file_handle=%p,", req->file_handle );
     fprintf( stderr, " name=" );
@@ -1725,14 +1734,14 @@
 
 static void dump_get_mapping_info_reply( const struct get_mapping_info_reply *req )
 {
-    fprintf( stderr, " size_high=%d,", req->size_high );
-    fprintf( stderr, " size_low=%d,", req->size_low );
+    fprintf( stderr, " size=" );
+    dump_file_pos( &req->size );
+    fprintf( stderr, "," );
     fprintf( stderr, " protect=%d,", req->protect );
     fprintf( stderr, " header_size=%d,", req->header_size );
     fprintf( stderr, " base=%p,", req->base );
     fprintf( stderr, " mapping=%p,", req->mapping );
-    fprintf( stderr, " shared_file=%p,", req->shared_file );
-    fprintf( stderr, " shared_size=%d", req->shared_size );
+    fprintf( stderr, " shared_file=%p", req->shared_file );
 }
 
 static void dump_create_snapshot_request( const struct create_snapshot_request *req )
diff --git a/tools/make_requests b/tools/make_requests
index e735de6..2dcac16 100755
--- a/tools/make_requests
+++ b/tools/make_requests
@@ -47,6 +47,7 @@
     "async_data_t"  => "&dump_async_data",
     "luid_t"        => "&dump_luid",
     "ioctl_code_t"  => "&dump_ioctl_code",
+    "file_pos_t"    => "&dump_file_pos",
 );
 
 my @requests = ();
