Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
a996000a
Commit
a996000a
authored
Oct 27, 2005
by
Vitaliy Margolen
Committed by
Alexandre Julliard
Oct 27, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Send whole OBJECT_ATTRIBUTES.Attributes to the server not just an
inherit flag. - Pass DesiredAccess to the server when creating mailslot.
parent
a0fb8662
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
98 additions
and
80 deletions
+98
-80
file.c
dlls/ntdll/file.c
+5
-4
sync.c
dlls/ntdll/sync.c
+8
-8
virtual.c
dlls/ntdll/virtual.c
+3
-3
server_protocol.h
include/wine/server_protocol.h
+17
-16
event.c
server/event.c
+4
-2
handle.c
server/handle.c
+3
-2
handle.h
server/handle.h
+1
-1
mailslot.c
server/mailslot.c
+3
-2
mapping.c
server/mapping.c
+4
-2
mutex.c
server/mutex.c
+4
-2
named_pipe.c
server/named_pipe.c
+2
-2
protocol.def
server/protocol.def
+16
-15
semaphore.c
server/semaphore.c
+4
-2
timer.c
server/timer.c
+4
-2
trace.c
server/trace.c
+16
-15
winstation.c
server/winstation.c
+4
-2
No files found.
dlls/ntdll/file.c
View file @
a996000a
...
...
@@ -164,8 +164,8 @@ NTSTATUS WINAPI NtCreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATTRIB
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 handle, ACCESS_MASK access, POBJECT_ATTRIB
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
);
...
...
@@ -1941,6 +1941,7 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( PHANDLE handle, ULONG access,
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,7 +1951,6 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( PHANDLE handle, ULONG access,
req
->
outsize
=
outbound_quota
;
req
->
insize
=
inbound_quota
;
req
->
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
)
);
status
=
wine_server_call
(
req
);
...
...
@@ -2045,9 +2045,10 @@ NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE pHandle, ULONG DesiredAccess,
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
);
...
...
dlls/ntdll/sync.c
View file @
a996000a
...
...
@@ -82,9 +82,9 @@ NTSTATUS WINAPI NtCreateSemaphore( OUT PHANDLE SemaphoreHandle,
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 PHANDLE SemaphoreHandle,
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 HANDLE* MutantHandle,
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* MutantHandle,
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 *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 handle,
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
;
...
...
dlls/ntdll/virtual.c
View file @
a996000a
...
...
@@ -1654,12 +1654,12 @@ NTSTATUS WINAPI NtCreateSection( HANDLE *handle, ACCESS_MASK access, const OBJEC
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 *handle, ACCESS_MASK access, const OBJECT_
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
;
}
...
...
include/wine/server_protocol.h
View file @
a996000a
...
...
@@ -613,9 +613,9 @@ struct create_event_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
int
manual_reset
;
int
initial_state
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
create_event_reply
...
...
@@ -643,7 +643,7 @@ struct open_event_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
/* VARARG(name,unicode_str); */
};
struct
open_event_reply
...
...
@@ -658,8 +658,8 @@ struct create_mutex_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
int
owned
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
create_mutex_reply
...
...
@@ -687,7 +687,7 @@ struct open_mutex_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
/* VARARG(name,unicode_str); */
};
struct
open_mutex_reply
...
...
@@ -702,9 +702,9 @@ struct create_semaphore_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
initial
;
unsigned
int
max
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
create_semaphore_reply
...
...
@@ -733,7 +733,7 @@ struct open_semaphore_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
/* VARARG(name,unicode_str); */
};
struct
open_semaphore_reply
...
...
@@ -1399,11 +1399,11 @@ struct next_change_notification_reply
struct
create_mapping_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
int
size_high
;
int
size_low
;
int
protect
;
unsigned
int
access
;
int
inherit
;
obj_handle_t
file_handle
;
/* VARARG(name,unicode_str); */
};
...
...
@@ -1428,7 +1428,7 @@ struct open_mapping_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
/* VARARG(name,unicode_str); */
};
struct
open_mapping_reply
...
...
@@ -1879,7 +1879,7 @@ struct create_timer_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
int
manual
;
/* VARARG(name,unicode_str); */
};
...
...
@@ -1895,7 +1895,7 @@ struct open_timer_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
/* VARARG(name,unicode_str); */
};
struct
open_timer_reply
...
...
@@ -2366,13 +2366,13 @@ struct create_named_pipe_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
options
;
unsigned
int
flags
;
unsigned
int
maxinstances
;
unsigned
int
outsize
;
unsigned
int
insize
;
unsigned
int
timeout
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
create_named_pipe_reply
...
...
@@ -2392,8 +2392,8 @@ struct open_named_pipe_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
flags
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
open_named_pipe_reply
...
...
@@ -3528,9 +3528,10 @@ struct get_token_user_reply
struct
create_mailslot_request
{
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
max_msgsize
;
unsigned
int
read_timeout
;
int
inherit
;
/* VARARG(name,unicode_str); */
};
struct
create_mailslot_reply
...
...
@@ -3545,7 +3546,7 @@ struct open_mailslot_request
{
struct
request_header
__header
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
unsigned
int
sharing
;
/* VARARG(name,unicode_str); */
};
...
...
@@ -4206,6 +4207,6 @@ union generic_reply
struct
set_mailslot_info_reply
set_mailslot_info_reply
;
};
#define SERVER_PROTOCOL_VERSION 19
4
#define SERVER_PROTOCOL_VERSION 19
5
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/event.c
View file @
a996000a
...
...
@@ -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 */
...
...
server/handle.c
View file @
a996000a
...
...
@@ -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 process *src, obj_handle_t src_handle, str
/* 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 namespace *namespace, const WCHAR *name,
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
...
...
server/handle.h
View file @
a996000a
...
...
@@ -44,7 +44,7 @@ extern int set_handle_unix_fd( struct process *process, obj_handle_t handle, int
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
);
...
...
server/mailslot.c
View file @
a996000a
...
...
@@ -43,6 +43,7 @@
#include <sys/filio.h>
#endif
#include "windef.h"
#include "winternl.h"
#include "file.h"
#include "handle.h"
...
...
@@ -356,7 +357,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 +385,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
);
...
...
server/mapping.c
View file @
a996000a
...
...
@@ -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 */
...
...
server/mutex.c
View file @
a996000a
...
...
@@ -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 */
...
...
server/named_pipe.c
View file @
a996000a
...
...
@@ -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
...
...
server/protocol.def
View file @
a996000a
...
...
@@ -495,9 +495,9 @@ enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
/* 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, RESET_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, RESET_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, RESET_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, RESET_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, RESET_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
...
...
server/semaphore.c
View file @
a996000a
...
...
@@ -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 */
...
...
server/timer.c
View file @
a996000a
...
...
@@ -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 */
...
...
server/trace.c
View file @
a996000a
...
...
@@ -890,9 +890,9 @@ static void dump_select_request( const struct select_request *req )
static
void
dump_create_event_request
(
const
struct
create_event_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" manual_reset=%d,"
,
req
->
manual_reset
);
fprintf
(
stderr
,
" initial_state=%d,"
,
req
->
initial_state
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -911,7 +911,7 @@ static void dump_event_op_request( const struct event_op_request *req )
static
void
dump_open_event_request
(
const
struct
open_event_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -924,8 +924,8 @@ static void dump_open_event_reply( const struct open_event_reply *req )
static
void
dump_create_mutex_request
(
const
struct
create_mutex_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" owned=%d,"
,
req
->
owned
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -948,7 +948,7 @@ static void dump_release_mutex_reply( const struct release_mutex_reply *req )
static
void
dump_open_mutex_request
(
const
struct
open_mutex_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -961,9 +961,9 @@ static void dump_open_mutex_reply( const struct open_mutex_reply *req )
static
void
dump_create_semaphore_request
(
const
struct
create_semaphore_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" initial=%08x,"
,
req
->
initial
);
fprintf
(
stderr
,
" max=%08x,"
,
req
->
max
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -987,7 +987,7 @@ static void dump_release_semaphore_reply( const struct release_semaphore_reply *
static
void
dump_open_semaphore_request
(
const
struct
open_semaphore_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -1438,11 +1438,11 @@ static void dump_next_change_notification_request( const struct next_change_noti
static
void
dump_create_mapping_request
(
const
struct
create_mapping_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" size_high=%d,"
,
req
->
size_high
);
fprintf
(
stderr
,
" size_low=%d,"
,
req
->
size_low
);
fprintf
(
stderr
,
" protect=%d,"
,
req
->
protect
);
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" file_handle=%p,"
,
req
->
file_handle
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
...
...
@@ -1456,7 +1456,7 @@ static void dump_create_mapping_reply( const struct create_mapping_reply *req )
static
void
dump_open_mapping_request
(
const
struct
open_mapping_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -1790,7 +1790,7 @@ static void dump_set_registry_notification_request( const struct set_registry_no
static
void
dump_create_timer_request
(
const
struct
create_timer_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" manual=%d,"
,
req
->
manual
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
...
...
@@ -1804,7 +1804,7 @@ static void dump_create_timer_reply( const struct create_timer_reply *req )
static
void
dump_open_timer_request
(
const
struct
open_timer_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -2140,13 +2140,13 @@ static void dump_cancel_async_request( const struct cancel_async_request *req )
static
void
dump_create_named_pipe_request
(
const
struct
create_named_pipe_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" options=%08x,"
,
req
->
options
);
fprintf
(
stderr
,
" flags=%08x,"
,
req
->
flags
);
fprintf
(
stderr
,
" maxinstances=%08x,"
,
req
->
maxinstances
);
fprintf
(
stderr
,
" outsize=%08x,"
,
req
->
outsize
);
fprintf
(
stderr
,
" insize=%08x,"
,
req
->
insize
);
fprintf
(
stderr
,
" timeout=%08x,"
,
req
->
timeout
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -2159,8 +2159,8 @@ static void dump_create_named_pipe_reply( const struct create_named_pipe_reply *
static
void
dump_open_named_pipe_request
(
const
struct
open_named_pipe_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" flags=%08x,"
,
req
->
flags
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -3048,9 +3048,10 @@ static void dump_get_token_user_reply( const struct get_token_user_reply *req )
static
void
dump_create_mailslot_request
(
const
struct
create_mailslot_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" max_msgsize=%08x,"
,
req
->
max_msgsize
);
fprintf
(
stderr
,
" read_timeout=%08x,"
,
req
->
read_timeout
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
}
...
...
@@ -3063,7 +3064,7 @@ static void dump_create_mailslot_reply( const struct create_mailslot_reply *req
static
void
dump_open_mailslot_request
(
const
struct
open_mailslot_request
*
req
)
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" sharing=%08x,"
,
req
->
sharing
);
fprintf
(
stderr
,
" name="
);
dump_varargs_unicode_str
(
cur_size
);
...
...
server/winstation.c
View file @
a996000a
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment