ntdll,
server: Send whole OBJECT_ATTRIBUTES.Attributes to the server not
just an inherit flag
Vitaliy Margolen
wine-patch at kievinfo.com
Thu Sep 29 10:33:02 CDT 2005
This will allow server to handle other attributes like case-insensitive flag.
Changes from previous versions:
- Include winternl.h instead of redefining OBJ_xxx flags
- Get rid of IS_INHERIT macro.
- Pass whole all attributes to the open_object function.
- Pass DesiredAcccess rights to the server in create_mailslot (along the same
lines as the committed patch to create_named_pipe).
- Several cosmetic changes (put access and attributes at the top of a server
call and in protocol.def, use attr for OBJECT_ATTRIBUTES to stay consistent
with the rest of the ntdll/file.c).
Vitaliy Margolen
changelog:
ntdll, server
Send whole OBJECT_ATTRIBUTES.Attributes to the server not just an inherit flag.
Pass DesiredAccess to the server when creating mailslot.
-------------- next part --------------
Index: server/protocol.def
===================================================================
RCS file: /home/wine/wine/server/protocol.def,v
retrieving revision 1.157
diff -u -p -r1.157 protocol.def
--- server/protocol.def 27 Sep 2005 10:52:10 -0000 1.157
+++ server/protocol.def 29 Sep 2005 15:06:50 -0000
@@ -495,9 +495,9 @@ enum apc_type { APC_NONE, APC_USER, APC_
/* Create an event */
@REQ(create_event)
unsigned int access; /* wanted access rights */
+ unsigned int attributes; /* object attributes */
int manual_reset; /* manual reset event */
int initial_state; /* initial state of the event */
- int inherit; /* inherit flag */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the event */
@@ -514,7 +514,7 @@ enum event_op { PULSE_EVENT, SET_EVENT,
/* Open an event */
@REQ(open_event)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the event */
@@ -524,8 +524,8 @@ enum event_op { PULSE_EVENT, SET_EVENT,
/* Create a mutex */
@REQ(create_mutex)
unsigned int access; /* wanted access rights */
+ unsigned int attributes; /* object attributes */
int owned; /* initially owned? */
- int inherit; /* inherit flag */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the mutex */
@@ -543,7 +543,7 @@ enum event_op { PULSE_EVENT, SET_EVENT,
/* Open a mutex */
@REQ(open_mutex)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the mutex */
@@ -553,9 +553,9 @@ enum event_op { PULSE_EVENT, SET_EVENT,
/* Create a semaphore */
@REQ(create_semaphore)
unsigned int access; /* wanted access rights */
+ unsigned int attributes; /* object attributes */
unsigned int initial; /* initial count */
unsigned int max; /* maximum count */
- int inherit; /* inherit flag */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the semaphore */
@@ -574,7 +574,7 @@ enum event_op { PULSE_EVENT, SET_EVENT,
/* Open a semaphore */
@REQ(open_semaphore)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the semaphore */
@@ -1037,11 +1037,11 @@ enum char_info_mode
/* Create a file mapping */
@REQ(create_mapping)
+ unsigned int access; /* wanted access rights */
+ unsigned int attributes; /* object attributes */
int size_high; /* mapping size */
int size_low; /* mapping size */
int protect; /* protection flags (see below) */
- unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
obj_handle_t file_handle; /* file handle */
VARARG(name,unicode_str); /* object name */
@REPLY
@@ -1061,7 +1061,7 @@ enum char_info_mode
/* Open a mapping */
@REQ(open_mapping)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the mapping */
@@ -1354,7 +1354,7 @@ enum char_info_mode
/* Create a waitable timer */
@REQ(create_timer)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
int manual; /* manual reset */
VARARG(name,unicode_str); /* object name */
@REPLY
@@ -1365,7 +1365,7 @@ enum char_info_mode
/* Open a waitable timer */
@REQ(open_timer)
unsigned int access; /* wanted access rights */
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
VARARG(name,unicode_str); /* object name */
@REPLY
obj_handle_t handle; /* handle to the timer */
@@ -1680,13 +1680,13 @@ enum message_type
/* Create a named pipe */
@REQ(create_named_pipe)
unsigned int access;
+ unsigned int attributes; /* object attributes */
unsigned int options;
unsigned int flags;
unsigned int maxinstances;
unsigned int outsize;
unsigned int insize;
unsigned int timeout;
- int inherit; /* inherit flag */
VARARG(name,unicode_str); /* pipe name */
@REPLY
obj_handle_t handle; /* handle to the pipe */
@@ -1701,8 +1701,8 @@ enum message_type
/* Open an existing named pipe */
@REQ(open_named_pipe)
unsigned int access;
+ unsigned int attributes; /* object attributes */
unsigned int flags; /* file flags */
- int inherit; /* inherit flag */
VARARG(name,unicode_str); /* pipe name */
@REPLY
obj_handle_t handle; /* handle to the pipe */
@@ -2471,9 +2471,10 @@ enum message_type
/* Create a mailslot */
@REQ(create_mailslot)
+ unsigned int access; /* wanted access rights */
+ unsigned int attributes; /* object attributes */
unsigned int max_msgsize;
unsigned int read_timeout;
- int inherit;
VARARG(name,unicode_str); /* mailslot name */
@REPLY
obj_handle_t handle; /* handle to the mailslot */
@@ -2483,7 +2484,7 @@ enum message_type
/* Open an existing mailslot */
@REQ(open_mailslot)
unsigned int access;
- int inherit; /* inherit flag */
+ unsigned int attributes; /* object attributes */
unsigned int sharing; /* sharing mode */
VARARG(name,unicode_str); /* mailslot name */
@REPLY
Index: server/event.c
===================================================================
RCS file: /home/wine/wine/server/event.c,v
retrieving revision 1.31
diff -u -p -r1.31 event.c
--- server/event.c 9 Jun 2005 15:39:52 -0000 1.31
+++ server/event.c 29 Sep 2005 15:06:49 -0000
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include "windef.h"
+#include "winternl.h"
#include "handle.h"
#include "thread.h"
@@ -149,7 +150,8 @@ DECL_HANDLER(create_event)
if ((event = create_event( get_req_data(), get_req_data_size(),
req->manual_reset, req->initial_state )))
{
- reply->handle = alloc_handle( current->process, event, req->access, req->inherit );
+ reply->handle = alloc_handle( current->process, event, req->access,
+ req->attributes & OBJ_INHERIT );
release_object( event );
}
}
@@ -158,7 +160,7 @@ DECL_HANDLER(create_event)
DECL_HANDLER(open_event)
{
reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
- &event_ops, req->access, req->inherit );
+ &event_ops, req->access, req->attributes );
}
/* do an event operation */
Index: server/handle.c
===================================================================
RCS file: /home/wine/wine/server/handle.c,v
retrieving revision 1.39
diff -u -p -r1.39 handle.c
--- server/handle.c 27 Sep 2005 09:36:54 -0000 1.39
+++ server/handle.c 29 Sep 2005 15:06:49 -0000
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include "windef.h"
+#include "winternl.h"
#include "handle.h"
#include "process.h"
@@ -521,7 +522,7 @@ obj_handle_t duplicate_handle( struct pr
/* open a new handle to an existing object */
obj_handle_t open_object( const struct namespace *namespace, const WCHAR *name, size_t len,
- const struct object_ops *ops, unsigned int access, int inherit )
+ const struct object_ops *ops, unsigned int access, unsigned int attr )
{
obj_handle_t handle = 0;
struct object *obj = find_object( namespace, name, len );
@@ -530,7 +531,7 @@ obj_handle_t open_object( const struct n
if (ops && obj->ops != ops)
set_error( STATUS_OBJECT_TYPE_MISMATCH );
else
- handle = alloc_handle( current->process, obj, access, inherit );
+ handle = alloc_handle( current->process, obj, access, attr & OBJ_INHERIT );
release_object( obj );
}
else
Index: server/handle.h
===================================================================
RCS file: /home/wine/wine/server/handle.h,v
retrieving revision 1.17
diff -u -p -r1.17 handle.h
--- server/handle.h 24 Aug 2005 18:33:50 -0000 1.17
+++ server/handle.h 29 Sep 2005 15:06:49 -0000
@@ -44,7 +44,7 @@ extern int set_handle_unix_fd( struct pr
extern obj_handle_t duplicate_handle( struct process *src, obj_handle_t src_handle, struct process *dst,
unsigned int access, int inherit, int options );
extern obj_handle_t open_object( const struct namespace *namespace, const WCHAR *name, size_t len,
- const struct object_ops *ops, unsigned int access, int inherit );
+ const struct object_ops *ops, unsigned int access, unsigned int attr );
extern obj_handle_t find_inherited_handle( struct process *process, const struct object_ops *ops );
extern struct handle_table *alloc_handle_table( struct process *process, int count );
extern struct handle_table *copy_handle_table( struct process *process, struct process *parent );
Index: server/mailslot.c
===================================================================
RCS file: /home/wine/wine/server/mailslot.c,v
retrieving revision 1.9
diff -u -p -r1.9 mailslot.c
--- server/mailslot.c 14 Jul 2005 12:18:05 -0000 1.9
+++ server/mailslot.c 29 Sep 2005 15:06:49 -0000
@@ -43,6 +43,7 @@
#include <sys/filio.h>
#endif
#include "windef.h"
+#include "winternl.h"
#include "file.h"
#include "handle.h"
@@ -356,7 +354,7 @@ DECL_HANDLER(create_mailslot)
if (mailslot)
{
reply->handle = alloc_handle( current->process, mailslot,
- GENERIC_READ, req->inherit );
+ req->access, req->attributes & OBJ_INHERIT );
release_object( mailslot );
}
}
@@ -384,7 +382,7 @@ DECL_HANDLER(open_mailslot)
if (writer)
{
reply->handle = alloc_handle( current->process, writer,
- req->access, req->inherit );
+ req->access, req->attributes & OBJ_INHERIT );
release_object( writer );
}
release_object( mailslot );
Index: server/mapping.c
===================================================================
RCS file: /home/wine/wine/server/mapping.c,v
retrieving revision 1.56
diff -u -p -r1.56 mapping.c
--- server/mapping.c 15 Aug 2005 14:50:06 -0000 1.56
+++ server/mapping.c 29 Sep 2005 15:06:49 -0000
@@ -29,6 +29,7 @@
#include <unistd.h>
#include "windef.h"
+#include "winternl.h"
#include "file.h"
#include "handle.h"
@@ -379,7 +380,8 @@ DECL_HANDLER(create_mapping)
if ((obj = create_mapping( size, req->protect, req->file_handle,
get_req_data(), get_req_data_size() )))
{
- reply->handle = alloc_handle( current->process, obj, req->access, req->inherit );
+ reply->handle = alloc_handle( current->process, obj, req->access,
+ req->attributes & OBJ_INHERIT );
release_object( obj );
}
}
@@ -388,7 +390,7 @@ DECL_HANDLER(create_mapping)
DECL_HANDLER(open_mapping)
{
reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
- &mapping_ops, req->access, req->inherit );
+ &mapping_ops, req->access, req->attributes );
}
/* get a mapping information */
Index: server/mutex.c
===================================================================
RCS file: /home/wine/wine/server/mutex.c,v
retrieving revision 1.29
diff -u -p -r1.29 mutex.c
--- server/mutex.c 9 Jun 2005 15:39:52 -0000 1.29
+++ server/mutex.c 29 Sep 2005 15:06:49 -0000
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include "windef.h"
+#include "winternl.h"
#include "handle.h"
#include "thread.h"
@@ -173,7 +174,8 @@ DECL_HANDLER(create_mutex)
reply->handle = 0;
if ((mutex = create_mutex( get_req_data(), get_req_data_size(), req->owned )))
{
- reply->handle = alloc_handle( current->process, mutex, req->access, req->inherit );
+ reply->handle = alloc_handle( current->process, mutex, req->access,
+ req->attributes & OBJ_INHERIT );
release_object( mutex );
}
}
@@ -182,7 +184,7 @@ DECL_HANDLER(create_mutex)
DECL_HANDLER(open_mutex)
{
reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
- &mutex_ops, req->access, req->inherit );
+ &mutex_ops, req->access, req->attributes );
}
/* release a mutex */
Index: server/named_pipe.c
===================================================================
RCS file: /home/wine/wine/server/named_pipe.c,v
retrieving revision 1.48
diff -u -p -r1.48 named_pipe.c
--- server/named_pipe.c 26 Sep 2005 11:02:45 -0000 1.48
+++ server/named_pipe.c 29 Sep 2005 15:06:49 -0000
@@ -583,7 +583,7 @@ DECL_HANDLER(create_named_pipe)
if (server)
{
reply->handle = alloc_handle( current->process, server,
- req->access, req->inherit );
+ req->access, req->attributes & OBJ_INHERIT );
server->pipe->instances++;
release_object( server );
}
@@ -645,7 +645,7 @@ DECL_HANDLER(open_named_pipe)
server->client = client;
client->server = server;
reply->handle = alloc_handle( current->process, client,
- req->access, req->inherit );
+ req->access, req->attributes & OBJ_INHERIT );
}
}
else
Index: server/semaphore.c
===================================================================
RCS file: /home/wine/wine/server/semaphore.c,v
retrieving revision 1.29
diff -u -p -r1.29 semaphore.c
--- server/semaphore.c 9 Jun 2005 15:39:52 -0000 1.29
+++ server/semaphore.c 29 Sep 2005 15:06:50 -0000
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include "windef.h"
+#include "winternl.h"
#include "handle.h"
#include "thread.h"
@@ -149,7 +150,8 @@ DECL_HANDLER(create_semaphore)
if ((sem = create_semaphore( get_req_data(), get_req_data_size(),
req->initial, req->max )))
{
- reply->handle = alloc_handle( current->process, sem, req->access, req->inherit );
+ reply->handle = alloc_handle( current->process, sem, req->access,
+ req->attributes & OBJ_INHERIT );
release_object( sem );
}
}
@@ -158,7 +160,7 @@ DECL_HANDLER(create_semaphore)
DECL_HANDLER(open_semaphore)
{
reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
- &semaphore_ops, req->access, req->inherit );
+ &semaphore_ops, req->access, req->attributes );
}
/* release a semaphore */
Index: server/timer.c
===================================================================
RCS file: /home/wine/wine/server/timer.c,v
retrieving revision 1.28
diff -u -p -r1.28 timer.c
--- server/timer.c 9 Jun 2005 15:39:52 -0000 1.28
+++ server/timer.c 29 Sep 2005 15:06:50 -0000
@@ -28,6 +28,7 @@
#include <sys/types.h>
#include "windef.h"
+#include "winternl.h"
#include "file.h"
#include "handle.h"
@@ -206,7 +207,8 @@ DECL_HANDLER(create_timer)
reply->handle = 0;
if ((timer = create_timer( get_req_data(), get_req_data_size(), req->manual )))
{
- reply->handle = alloc_handle( current->process, timer, req->access, req->inherit );
+ reply->handle = alloc_handle( current->process, timer, req->access,
+ req->attributes & OBJ_INHERIT );
release_object( timer );
}
}
@@ -215,7 +217,7 @@ DECL_HANDLER(create_timer)
DECL_HANDLER(open_timer)
{
reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
- &timer_ops, req->access, req->inherit );
+ &timer_ops, req->access, req->attributes );
}
/* set a waitable timer */
Index: server/winstation.c
===================================================================
RCS file: /home/wine/wine/server/winstation.c,v
retrieving revision 1.10
diff -u -p -r1.10 winstation.c
--- server/winstation.c 11 Jul 2005 18:05:50 -0000 1.10
+++ server/winstation.c 29 Sep 2005 15:06:50 -0000
@@ -27,6 +27,7 @@
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
+#include "winternl.h"
#include "object.h"
#include "handle.h"
@@ -322,7 +323,7 @@ DECL_HANDLER(open_winstation)
{
if (winstation_namespace)
reply->handle = open_object( winstation_namespace, get_req_data(), get_req_data_size(),
- &winstation_ops, req->access, req->inherit );
+ &winstation_ops, req->access, (req->inherit) ? OBJ_INHERIT:0 );
else
set_error( STATUS_OBJECT_NAME_NOT_FOUND );
}
@@ -396,7 +397,8 @@ DECL_HANDLER(open_desktop)
winstation, &full_len )))
{
reply->handle = open_object( winstation_namespace, full_name, full_len,
- &desktop_ops, req->access, req->inherit );
+ &desktop_ops, req->access,
+ (req->inherit) ? OBJ_INHERIT:0 );
free( full_name );
}
release_object( winstation );
Index: dlls/ntdll/file.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/file.c,v
retrieving revision 1.100
diff -u -p -r1.100 file.c
--- dlls/ntdll/file.c 26 Sep 2005 11:02:45 -0000 1.100
+++ dlls/ntdll/file.c 29 Sep 2005 15:06:49 -0000
@@ -164,8 +164,8 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE ha
SERVER_START_REQ( open_named_pipe )
{
req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->flags = options;
- req->inherit = (attr->Attributes & OBJ_INHERIT) != 0;
wine_server_add_data( req, attr->ObjectName->Buffer + 4,
attr->ObjectName->Length - 4*sizeof(WCHAR) );
io->u.Status = wine_server_call( req );
@@ -183,8 +183,8 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE ha
SERVER_START_REQ( open_mailslot )
{
req->access = access & GENERIC_WRITE;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->sharing = sharing;
- req->inherit = (attr->Attributes & OBJ_INHERIT) != 0;
wine_server_add_data( req, attr->ObjectName->Buffer + 4,
attr->ObjectName->Length - 4*sizeof(WCHAR) );
io->u.Status = wine_server_call( req );
@@ -1915,7 +1915,7 @@ NTSTATUS WINAPI NtUnlockFile( HANDLE hFi
*
*/
NTSTATUS WINAPI NtCreateNamedPipeFile( PHANDLE handle, ULONG access,
- POBJECT_ATTRIBUTES oa, PIO_STATUS_BLOCK iosb,
+ POBJECT_ATTRIBUTES attr, PIO_STATUS_BLOCK iosb,
ULONG sharing, ULONG dispo, ULONG options,
ULONG pipe_type, ULONG read_mode,
ULONG completion_mode, ULONG max_inst,
@@ -1926,12 +1926,12 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( P
static const WCHAR leadin[] = {'\\','?','?','\\','P','I','P','E','\\'};
TRACE("(%p %lx %s %p %lx %ld %lx %ld %ld %ld %ld %ld %ld %p)\n",
- handle, access, debugstr_w(oa->ObjectName->Buffer), iosb, sharing, dispo,
+ handle, access, debugstr_w(attr->ObjectName->Buffer), iosb, sharing, dispo,
options, pipe_type, read_mode, completion_mode, max_inst, inbound_quota,
outbound_quota, timeout);
- if (oa->ObjectName->Length < sizeof(leadin) ||
- strncmpiW( oa->ObjectName->Buffer,
+ if (attr->ObjectName->Length < sizeof(leadin) ||
+ strncmpiW( attr->ObjectName->Buffer,
leadin, sizeof(leadin)/sizeof(leadin[0]) ))
return STATUS_OBJECT_NAME_INVALID;
/* assume we only get relative timeout, and storable in a DWORD as ms */
@@ -1941,6 +1941,7 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( P
SERVER_START_REQ( create_named_pipe )
{
req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->options = options;
req->flags =
(pipe_type) ? NAMED_PIPE_MESSAGE_STREAM_WRITE : 0 |
@@ -1950,9 +1951,8 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( P
req->outsize = outbound_quota;
req->insize = inbound_quota;
req->timeout = timeout->QuadPart / -10000;
- req->inherit = (oa->Attributes & OBJ_INHERIT) != 0;
- wine_server_add_data( req, oa->ObjectName->Buffer + 4,
- oa->ObjectName->Length - 4 * sizeof(WCHAR) );
+ wine_server_add_data( req, attr->ObjectName->Buffer + 4,
+ attr->ObjectName->Length - 4 * sizeof(WCHAR) );
status = wine_server_call( req );
if (!status) *handle = reply->handle;
}
@@ -2045,9 +2045,10 @@ NTSTATUS WINAPI NtCreateMailslotFile(PHA
SERVER_START_REQ( create_mailslot )
{
+ req->access = DesiredAccess;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->max_msgsize = MaxMessageSize;
req->read_timeout = TimeOut->QuadPart / -10000;
- req->inherit = (attr->Attributes & OBJ_INHERIT) != 0;
wine_server_add_data( req, attr->ObjectName->Buffer + 4,
attr->ObjectName->Length - 4*sizeof(WCHAR) );
ret = wine_server_call( req );
Index: dlls/ntdll/sync.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/sync.c,v
retrieving revision 1.51
diff -u -p -r1.51 sync.c
--- dlls/ntdll/sync.c 21 Jun 2005 09:52:41 -0000 1.51
+++ dlls/ntdll/sync.c 29 Sep 2005 15:06:49 -0000
@@ -82,9 +82,9 @@ NTSTATUS WINAPI NtCreateSemaphore( OUT P
SERVER_START_REQ( create_semaphore )
{
req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->initial = InitialCount;
req->max = MaximumCount;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
ret = wine_server_call( req );
*SemaphoreHandle = reply->handle;
@@ -108,7 +108,7 @@ NTSTATUS WINAPI NtOpenSemaphore( OUT PHA
SERVER_START_REQ( open_semaphore )
{
req->access = access;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
+ req->attributes = (attr) ? attr->Attributes : 0;
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
ret = wine_server_call( req );
*SemaphoreHandle = reply->handle;
@@ -174,9 +174,9 @@ NTSTATUS WINAPI NtCreateEvent(
SERVER_START_REQ( create_event )
{
req->access = DesiredAccess;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->manual_reset = ManualReset;
req->initial_state = InitialState;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
ret = wine_server_call( req );
*EventHandle = reply->handle;
@@ -202,7 +202,7 @@ NTSTATUS WINAPI NtOpenEvent(
SERVER_START_REQ( open_event )
{
req->access = DesiredAccess;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
+ req->attributes = (attr) ? attr->Attributes : 0;
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
ret = wine_server_call( req );
*EventHandle = reply->handle;
@@ -321,8 +321,8 @@ NTSTATUS WINAPI NtCreateMutant(OUT HANDL
SERVER_START_REQ( create_mutex )
{
req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->owned = InitialOwner;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
status = wine_server_call( req );
*MutantHandle = reply->handle;
@@ -347,7 +347,7 @@ NTSTATUS WINAPI NtOpenMutant(OUT HANDLE*
SERVER_START_REQ( open_mutex )
{
req->access = access;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
+ req->attributes = (attr) ? attr->Attributes : 0;
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
status = wine_server_call( req );
*MutantHandle = reply->handle;
@@ -413,8 +413,8 @@ NTSTATUS WINAPI NtCreateTimer(OUT HANDLE
SERVER_START_REQ( create_timer )
{
req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->manual = (timer_type == NotificationTimer) ? TRUE : FALSE;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
status = wine_server_call( req );
*handle = reply->handle;
@@ -440,7 +440,7 @@ NTSTATUS WINAPI NtOpenTimer(OUT PHANDLE
SERVER_START_REQ( open_timer )
{
req->access = access;
- req->inherit = attr && (attr->Attributes & OBJ_INHERIT);
+ req->attributes = (attr) ? attr->Attributes : 0;
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
status = wine_server_call( req );
*handle = reply->handle;
Index: dlls/ntdll/virtual.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/virtual.c,v
retrieving revision 1.71
diff -u -p -r1.71 virtual.c
--- dlls/ntdll/virtual.c 26 Sep 2005 09:57:38 -0000 1.71
+++ dlls/ntdll/virtual.c 29 Sep 2005 15:06:49 -0000
@@ -1654,12 +1654,12 @@ NTSTATUS WINAPI NtCreateSection( HANDLE
SERVER_START_REQ( create_mapping )
{
+ req->access = access;
+ req->attributes = (attr) ? attr->Attributes : 0;
req->file_handle = file;
req->size_high = size ? size->u.HighPart : 0;
req->size_low = size ? size->u.LowPart : 0;
req->protect = vprot;
- req->access = access;
- req->inherit = (attr && (attr->Attributes & OBJ_INHERIT) != 0);
if (len) wine_server_add_data( req, attr->ObjectName->Buffer, len );
ret = wine_server_call( req );
*handle = reply->handle;
@@ -1683,7 +1683,7 @@ NTSTATUS WINAPI NtOpenSection( HANDLE *h
SERVER_START_REQ( open_mapping )
{
req->access = access;
- req->inherit = (attr->Attributes & OBJ_INHERIT) != 0;
+ req->attributes = (attr) ? attr->Attributes : 0;
wine_server_add_data( req, attr->ObjectName->Buffer, len );
if (!(ret = wine_server_call( req ))) *handle = reply->handle;
}
More information about the wine-patches
mailing list