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
7350682a
Commit
7350682a
authored
Jan 15, 2016
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Store the attributes in the object_attributes structure.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
3198fb0c
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
57 additions
and
88 deletions
+57
-88
file.c
dlls/ntdll/file.c
+0
-2
sync.c
dlls/ntdll/sync.c
+1
-5
virtual.c
dlls/ntdll/virtual.c
+0
-1
server_protocol.h
include/wine/server_protocol.h
+5
-14
event.c
server/event.c
+9
-6
file.c
server/file.c
+1
-1
mapping.c
server/mapping.c
+5
-3
mutex.c
server/mutex.c
+4
-3
named_pipe.c
server/named_pipe.c
+2
-2
process.c
server/process.c
+4
-3
protocol.def
server/protocol.def
+1
-8
request.h
server/request.h
+20
-28
semaphore.c
server/semaphore.c
+4
-3
trace.c
server/trace.c
+1
-9
No files found.
dlls/ntdll/file.c
View file @
7350682a
...
@@ -232,7 +232,6 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
...
@@ -232,7 +232,6 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
SERVER_START_REQ
(
create_file
)
SERVER_START_REQ
(
create_file
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
attr
->
Attributes
;
req
->
sharing
=
sharing
;
req
->
sharing
=
sharing
;
req
->
create
=
disposition
;
req
->
create
=
disposition
;
req
->
options
=
options
;
req
->
options
=
options
;
...
@@ -3522,7 +3521,6 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( PHANDLE handle, ULONG access,
...
@@ -3522,7 +3521,6 @@ NTSTATUS WINAPI NtCreateNamedPipeFile( PHANDLE handle, ULONG access,
SERVER_START_REQ
(
create_named_pipe
)
SERVER_START_REQ
(
create_named_pipe
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
attr
->
Attributes
;
req
->
options
=
options
;
req
->
options
=
options
;
req
->
sharing
=
sharing
;
req
->
sharing
=
sharing
;
req
->
flags
=
req
->
flags
=
...
...
dlls/ntdll/sync.c
View file @
7350682a
...
@@ -121,6 +121,7 @@ NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct object_a
...
@@ -121,6 +121,7 @@ NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct object_a
if
(
!*
ret
)
return
STATUS_NO_MEMORY
;
if
(
!*
ret
)
return
STATUS_NO_MEMORY
;
(
*
ret
)
->
rootdir
=
wine_server_obj_handle
(
attr
->
RootDirectory
);
(
*
ret
)
->
rootdir
=
wine_server_obj_handle
(
attr
->
RootDirectory
);
(
*
ret
)
->
attributes
=
attr
->
Attributes
;
if
(
attr
->
SecurityDescriptor
)
if
(
attr
->
SecurityDescriptor
)
{
{
...
@@ -180,7 +181,6 @@ NTSTATUS WINAPI NtCreateSemaphore( OUT PHANDLE SemaphoreHandle,
...
@@ -180,7 +181,6 @@ NTSTATUS WINAPI NtCreateSemaphore( OUT PHANDLE SemaphoreHandle,
SERVER_START_REQ
(
create_semaphore
)
SERVER_START_REQ
(
create_semaphore
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
(
attr
)
?
attr
->
Attributes
:
0
;
req
->
initial
=
InitialCount
;
req
->
initial
=
InitialCount
;
req
->
max
=
MaximumCount
;
req
->
max
=
MaximumCount
;
wine_server_add_data
(
req
,
objattr
,
len
);
wine_server_add_data
(
req
,
objattr
,
len
);
...
@@ -289,7 +289,6 @@ NTSTATUS WINAPI NtCreateEvent( PHANDLE EventHandle, ACCESS_MASK DesiredAccess,
...
@@ -289,7 +289,6 @@ NTSTATUS WINAPI NtCreateEvent( PHANDLE EventHandle, ACCESS_MASK DesiredAccess,
SERVER_START_REQ
(
create_event
)
SERVER_START_REQ
(
create_event
)
{
{
req
->
access
=
DesiredAccess
;
req
->
access
=
DesiredAccess
;
req
->
attributes
=
(
attr
)
?
attr
->
Attributes
:
0
;
req
->
manual_reset
=
(
type
==
NotificationEvent
);
req
->
manual_reset
=
(
type
==
NotificationEvent
);
req
->
initial_state
=
InitialState
;
req
->
initial_state
=
InitialState
;
wine_server_add_data
(
req
,
objattr
,
len
);
wine_server_add_data
(
req
,
objattr
,
len
);
...
@@ -459,7 +458,6 @@ NTSTATUS WINAPI NtCreateMutant(OUT HANDLE* MutantHandle,
...
@@ -459,7 +458,6 @@ NTSTATUS WINAPI NtCreateMutant(OUT HANDLE* MutantHandle,
SERVER_START_REQ
(
create_mutex
)
SERVER_START_REQ
(
create_mutex
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
(
attr
)
?
attr
->
Attributes
:
0
;
req
->
owned
=
InitialOwner
;
req
->
owned
=
InitialOwner
;
wine_server_add_data
(
req
,
objattr
,
len
);
wine_server_add_data
(
req
,
objattr
,
len
);
status
=
wine_server_call
(
req
);
status
=
wine_server_call
(
req
);
...
@@ -549,7 +547,6 @@ NTSTATUS WINAPI NtCreateJobObject( PHANDLE handle, ACCESS_MASK access, const OBJ
...
@@ -549,7 +547,6 @@ NTSTATUS WINAPI NtCreateJobObject( PHANDLE handle, ACCESS_MASK access, const OBJ
SERVER_START_REQ
(
create_job
)
SERVER_START_REQ
(
create_job
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
attr
?
attr
->
Attributes
:
0
;
wine_server_add_data
(
req
,
objattr
,
len
);
wine_server_add_data
(
req
,
objattr
,
len
);
ret
=
wine_server_call
(
req
);
ret
=
wine_server_call
(
req
);
*
handle
=
wine_server_ptr_handle
(
reply
->
handle
);
*
handle
=
wine_server_ptr_handle
(
reply
->
handle
);
...
@@ -1080,7 +1077,6 @@ NTSTATUS WINAPI NtCreateKeyedEvent( HANDLE *handle, ACCESS_MASK access,
...
@@ -1080,7 +1077,6 @@ NTSTATUS WINAPI NtCreateKeyedEvent( HANDLE *handle, ACCESS_MASK access,
SERVER_START_REQ
(
create_keyed_event
)
SERVER_START_REQ
(
create_keyed_event
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
attr
?
attr
->
Attributes
:
0
;
wine_server_add_data
(
req
,
objattr
,
len
);
wine_server_add_data
(
req
,
objattr
,
len
);
ret
=
wine_server_call
(
req
);
ret
=
wine_server_call
(
req
);
*
handle
=
wine_server_ptr_handle
(
reply
->
handle
);
*
handle
=
wine_server_ptr_handle
(
reply
->
handle
);
...
...
dlls/ntdll/virtual.c
View file @
7350682a
...
@@ -2477,7 +2477,6 @@ NTSTATUS WINAPI NtCreateSection( HANDLE *handle, ACCESS_MASK access, const OBJEC
...
@@ -2477,7 +2477,6 @@ NTSTATUS WINAPI NtCreateSection( HANDLE *handle, ACCESS_MASK access, const OBJEC
SERVER_START_REQ
(
create_mapping
)
SERVER_START_REQ
(
create_mapping
)
{
{
req
->
access
=
access
;
req
->
access
=
access
;
req
->
attributes
=
(
attr
)
?
attr
->
Attributes
:
0
;
req
->
file_handle
=
wine_server_obj_handle
(
file
);
req
->
file_handle
=
wine_server_obj_handle
(
file
);
req
->
size
=
size
?
size
->
QuadPart
:
0
;
req
->
size
=
size
?
size
->
QuadPart
:
0
;
req
->
protect
=
vprot
;
req
->
protect
=
vprot
;
...
...
include/wine/server_protocol.h
View file @
7350682a
...
@@ -377,6 +377,7 @@ struct security_descriptor
...
@@ -377,6 +377,7 @@ struct security_descriptor
struct
object_attributes
struct
object_attributes
{
{
obj_handle_t
rootdir
;
obj_handle_t
rootdir
;
unsigned
int
attributes
;
data_size_t
sd_len
;
data_size_t
sd_len
;
data_size_t
name_len
;
data_size_t
name_len
;
...
@@ -1157,11 +1158,9 @@ struct create_event_request
...
@@ -1157,11 +1158,9 @@ struct create_event_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
int
manual_reset
;
int
manual_reset
;
int
initial_state
;
int
initial_state
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
char
__pad_28
[
4
];
};
};
struct
create_event_reply
struct
create_event_reply
{
{
...
@@ -1218,9 +1217,7 @@ struct create_keyed_event_request
...
@@ -1218,9 +1217,7 @@ struct create_keyed_event_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
char
__pad_20
[
4
];
};
};
struct
create_keyed_event_reply
struct
create_keyed_event_reply
{
{
...
@@ -1251,9 +1248,9 @@ struct create_mutex_request
...
@@ -1251,9 +1248,9 @@ struct create_mutex_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
int
owned
;
int
owned
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
char
__pad_20
[
4
];
};
};
struct
create_mutex_reply
struct
create_mutex_reply
{
{
...
@@ -1299,11 +1296,9 @@ struct create_semaphore_request
...
@@ -1299,11 +1296,9 @@ struct create_semaphore_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
initial
;
unsigned
int
initial
;
unsigned
int
max
;
unsigned
int
max
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
char
__pad_28
[
4
];
};
};
struct
create_semaphore_reply
struct
create_semaphore_reply
{
{
...
@@ -1362,14 +1357,12 @@ struct create_file_request
...
@@ -1362,14 +1357,12 @@ struct create_file_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
sharing
;
unsigned
int
sharing
;
int
create
;
int
create
;
unsigned
int
options
;
unsigned
int
options
;
unsigned
int
attrs
;
unsigned
int
attrs
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
/* VARARG(filename,string); */
/* VARARG(filename,string); */
char
__pad_36
[
4
];
};
};
struct
create_file_reply
struct
create_file_reply
{
{
...
@@ -2105,8 +2098,8 @@ struct create_mapping_request
...
@@ -2105,8 +2098,8 @@ struct create_mapping_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
protect
;
unsigned
int
protect
;
char
__pad_20
[
4
];
mem_size_t
size
;
mem_size_t
size
;
obj_handle_t
file_handle
;
obj_handle_t
file_handle
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
...
@@ -3267,12 +3260,12 @@ struct create_named_pipe_request
...
@@ -3267,12 +3260,12 @@ struct create_named_pipe_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
options
;
unsigned
int
options
;
unsigned
int
sharing
;
unsigned
int
sharing
;
unsigned
int
maxinstances
;
unsigned
int
maxinstances
;
unsigned
int
outsize
;
unsigned
int
outsize
;
unsigned
int
insize
;
unsigned
int
insize
;
char
__pad_36
[
4
];
timeout_t
timeout
;
timeout_t
timeout
;
unsigned
int
flags
;
unsigned
int
flags
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
...
@@ -5271,9 +5264,7 @@ struct create_job_request
...
@@ -5271,9 +5264,7 @@ struct create_job_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
access
;
unsigned
int
attributes
;
/* VARARG(objattr,object_attributes); */
/* VARARG(objattr,object_attributes); */
char
__pad_20
[
4
];
};
};
struct
create_job_reply
struct
create_job_reply
{
{
...
@@ -6180,6 +6171,6 @@ union generic_reply
...
@@ -6180,6 +6171,6 @@ union generic_reply
struct
terminate_job_reply
terminate_job_reply
;
struct
terminate_job_reply
terminate_job_reply
;
};
};
#define SERVER_PROTOCOL_VERSION 49
2
#define SERVER_PROTOCOL_VERSION 49
3
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/event.c
View file @
7350682a
...
@@ -301,12 +301,14 @@ DECL_HANDLER(create_event)
...
@@ -301,12 +301,14 @@ DECL_HANDLER(create_event)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
return
;
if
((
event
=
create_event
(
root
,
&
name
,
req
->
attributes
,
req
->
manual_reset
,
req
->
initial_state
,
sd
)))
if
((
event
=
create_event
(
root
,
&
name
,
objattr
->
attributes
,
req
->
manual_reset
,
req
->
initial_state
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
event
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
event
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
event
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
event
,
req
->
access
,
objattr
->
attributes
);
release_object
(
event
);
release_object
(
event
);
}
}
...
@@ -386,12 +388,13 @@ DECL_HANDLER(create_keyed_event)
...
@@ -386,12 +388,13 @@ DECL_HANDLER(create_keyed_event)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
if
((
event
=
create_keyed_event
(
root
,
&
name
,
req
->
attributes
,
sd
)))
if
((
event
=
create_keyed_event
(
root
,
&
name
,
objattr
->
attributes
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
event
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
event
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
event
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
event
,
req
->
access
,
objattr
->
attributes
);
release_object
(
event
);
release_object
(
event
);
}
}
if
(
root
)
release_object
(
root
);
if
(
root
)
release_object
(
root
);
...
...
server/file.c
View file @
7350682a
...
@@ -721,7 +721,7 @@ DECL_HANDLER(create_file)
...
@@ -721,7 +721,7 @@ DECL_HANDLER(create_file)
if
((
file
=
create_file
(
root_fd
,
name
,
name_len
,
req
->
access
,
req
->
sharing
,
if
((
file
=
create_file
(
root_fd
,
name
,
name_len
,
req
->
access
,
req
->
sharing
,
req
->
create
,
req
->
options
,
req
->
attrs
,
sd
)))
req
->
create
,
req
->
options
,
req
->
attrs
,
sd
)))
{
{
reply
->
handle
=
alloc_handle
(
current
->
process
,
file
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
file
,
req
->
access
,
objattr
->
attributes
);
release_object
(
file
);
release_object
(
file
);
}
}
if
(
root_fd
)
release_object
(
root_fd
);
if
(
root_fd
)
release_object
(
root_fd
);
...
...
server/mapping.c
View file @
7350682a
...
@@ -678,12 +678,14 @@ DECL_HANDLER(create_mapping)
...
@@ -678,12 +678,14 @@ DECL_HANDLER(create_mapping)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
return
;
if
((
obj
=
create_mapping
(
root
,
&
name
,
req
->
attributes
,
req
->
size
,
req
->
protect
,
req
->
file_handle
,
sd
)))
if
((
obj
=
create_mapping
(
root
,
&
name
,
objattr
->
attributes
,
req
->
size
,
req
->
protect
,
req
->
file_handle
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
obj
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
obj
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
obj
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
obj
,
req
->
access
,
objattr
->
attributes
);
release_object
(
obj
);
release_object
(
obj
);
}
}
...
...
server/mutex.c
View file @
7350682a
...
@@ -225,12 +225,13 @@ DECL_HANDLER(create_mutex)
...
@@ -225,12 +225,13 @@ DECL_HANDLER(create_mutex)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
return
;
if
((
mutex
=
create_mutex
(
root
,
&
name
,
req
->
attributes
,
req
->
owned
,
sd
)))
if
((
mutex
=
create_mutex
(
root
,
&
name
,
objattr
->
attributes
,
req
->
owned
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
mutex
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
mutex
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
mutex
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
mutex
,
req
->
access
,
objattr
->
attributes
);
release_object
(
mutex
);
release_object
(
mutex
);
}
}
...
...
server/named_pipe.c
View file @
7350682a
...
@@ -944,7 +944,7 @@ DECL_HANDLER(create_named_pipe)
...
@@ -944,7 +944,7 @@ DECL_HANDLER(create_named_pipe)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
return
;
pipe
=
create_named_pipe
(
root
,
&
name
,
req
->
attributes
|
OBJ_OPENIF
,
sd
);
pipe
=
create_named_pipe
(
root
,
&
name
,
objattr
->
attributes
|
OBJ_OPENIF
,
sd
);
if
(
root
)
release_object
(
root
);
if
(
root
)
release_object
(
root
);
if
(
!
pipe
)
return
;
if
(
!
pipe
)
return
;
...
@@ -982,7 +982,7 @@ DECL_HANDLER(create_named_pipe)
...
@@ -982,7 +982,7 @@ DECL_HANDLER(create_named_pipe)
server
=
create_pipe_server
(
pipe
,
req
->
options
,
req
->
flags
);
server
=
create_pipe_server
(
pipe
,
req
->
options
,
req
->
flags
);
if
(
server
)
if
(
server
)
{
{
reply
->
handle
=
alloc_handle
(
current
->
process
,
server
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
server
,
req
->
access
,
objattr
->
attributes
);
server
->
pipe
->
instances
++
;
server
->
pipe
->
instances
++
;
if
(
sd
)
default_set_sd
(
&
server
->
obj
,
sd
,
OWNER_SECURITY_INFORMATION
|
if
(
sd
)
default_set_sd
(
&
server
->
obj
,
sd
,
OWNER_SECURITY_INFORMATION
|
GROUP_SECURITY_INFORMATION
|
GROUP_SECURITY_INFORMATION
|
...
...
server/process.c
View file @
7350682a
...
@@ -1549,12 +1549,13 @@ DECL_HANDLER(create_job)
...
@@ -1549,12 +1549,13 @@ DECL_HANDLER(create_job)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
if
((
job
=
create_job_object
(
root
,
&
name
,
req
->
attributes
,
sd
)))
if
((
job
=
create_job_object
(
root
,
&
name
,
objattr
->
attributes
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
job
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
job
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
job
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
job
,
req
->
access
,
objattr
->
attributes
);
release_object
(
job
);
release_object
(
job
);
}
}
if
(
root
)
release_object
(
root
);
if
(
root
)
release_object
(
root
);
...
...
server/protocol.def
View file @
7350682a
...
@@ -393,6 +393,7 @@ struct security_descriptor
...
@@ -393,6 +393,7 @@ struct security_descriptor
struct object_attributes
struct object_attributes
{
{
obj_handle_t rootdir; /* root directory */
obj_handle_t rootdir; /* root directory */
unsigned int attributes; /* object attributes */
data_size_t sd_len; /* length of security_descriptor data. may be 0 */
data_size_t sd_len; /* length of security_descriptor data. may be 0 */
data_size_t name_len; /* length of the name string. may be 0 */
data_size_t name_len; /* length of the name string. may be 0 */
/* VARARG(sd,security_descriptor); */
/* VARARG(sd,security_descriptor); */
...
@@ -1012,7 +1013,6 @@ struct rawinput_device
...
@@ -1012,7 +1013,6 @@ struct rawinput_device
/* Create an event */
/* Create an event */
@REQ(create_event)
@REQ(create_event)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
int manual_reset; /* manual reset event */
int manual_reset; /* manual reset event */
int initial_state; /* initial state of the event */
int initial_state; /* initial state of the event */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
...
@@ -1048,7 +1048,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
...
@@ -1048,7 +1048,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
/* Create a keyed event */
/* Create a keyed event */
@REQ(create_keyed_event)
@REQ(create_keyed_event)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
@REPLY
@REPLY
obj_handle_t handle; /* handle to the event */
obj_handle_t handle; /* handle to the event */
...
@@ -1068,7 +1067,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
...
@@ -1068,7 +1067,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
/* Create a mutex */
/* Create a mutex */
@REQ(create_mutex)
@REQ(create_mutex)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
int owned; /* initially owned? */
int owned; /* initially owned? */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
@REPLY
@REPLY
...
@@ -1098,7 +1096,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
...
@@ -1098,7 +1096,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
/* Create a semaphore */
/* Create a semaphore */
@REQ(create_semaphore)
@REQ(create_semaphore)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
unsigned int initial; /* initial count */
unsigned int initial; /* initial count */
unsigned int max; /* maximum count */
unsigned int max; /* maximum count */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
...
@@ -1136,7 +1133,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
...
@@ -1136,7 +1133,6 @@ enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
/* Create a file */
/* Create a file */
@REQ(create_file)
@REQ(create_file)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
unsigned int sharing; /* sharing flags */
unsigned int sharing; /* sharing flags */
int create; /* file create action */
int create; /* file create action */
unsigned int options; /* file options */
unsigned int options; /* file options */
...
@@ -1636,7 +1632,6 @@ enum char_info_mode
...
@@ -1636,7 +1632,6 @@ enum char_info_mode
/* Create a file mapping */
/* Create a file mapping */
@REQ(create_mapping)
@REQ(create_mapping)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
unsigned int protect; /* protection flags (see below) */
unsigned int protect; /* protection flags (see below) */
mem_size_t size; /* mapping size */
mem_size_t size; /* mapping size */
obj_handle_t file_handle; /* file handle */
obj_handle_t file_handle; /* file handle */
...
@@ -2372,7 +2367,6 @@ enum message_type
...
@@ -2372,7 +2367,6 @@ enum message_type
/* Create a named pipe */
/* Create a named pipe */
@REQ(create_named_pipe)
@REQ(create_named_pipe)
unsigned int access;
unsigned int access;
unsigned int attributes; /* object attributes */
unsigned int options;
unsigned int options;
unsigned int sharing;
unsigned int sharing;
unsigned int maxinstances;
unsigned int maxinstances;
...
@@ -3643,7 +3637,6 @@ struct handle_info
...
@@ -3643,7 +3637,6 @@ struct handle_info
/* Create a new job object */
/* Create a new job object */
@REQ(create_job)
@REQ(create_job)
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(objattr,object_attributes); /* object attributes */
@REPLY
@REPLY
obj_handle_t handle; /* handle to the job */
obj_handle_t handle; /* handle to the job */
...
...
server/request.h
View file @
7350682a
...
@@ -868,10 +868,9 @@ C_ASSERT( FIELD_OFFSET(struct select_reply, call) == 16 );
...
@@ -868,10 +868,9 @@ C_ASSERT( FIELD_OFFSET(struct select_reply, call) == 16 );
C_ASSERT
(
FIELD_OFFSET
(
struct
select_reply
,
apc_handle
)
==
56
);
C_ASSERT
(
FIELD_OFFSET
(
struct
select_reply
,
apc_handle
)
==
56
);
C_ASSERT
(
sizeof
(
struct
select_reply
)
==
64
);
C_ASSERT
(
sizeof
(
struct
select_reply
)
==
64
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
manual_reset
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
manual_reset
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
initial_state
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_request
,
initial_state
)
==
24
);
C_ASSERT
(
sizeof
(
struct
create_event_request
)
==
24
);
C_ASSERT
(
sizeof
(
struct
create_event_request
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_event_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_event_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_event_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
event_op_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
event_op_request
,
handle
)
==
12
);
...
@@ -889,8 +888,7 @@ C_ASSERT( sizeof(struct open_event_request) == 24 );
...
@@ -889,8 +888,7 @@ C_ASSERT( sizeof(struct open_event_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
open_event_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_event_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
open_event_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
open_event_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_keyed_event_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_keyed_event_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_keyed_event_request
,
attributes
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_keyed_event_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_keyed_event_request
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_keyed_event_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_keyed_event_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_keyed_event_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_keyed_event_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_keyed_event_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_keyed_event_request
,
access
)
==
12
);
...
@@ -900,8 +898,7 @@ C_ASSERT( sizeof(struct open_keyed_event_request) == 24 );
...
@@ -900,8 +898,7 @@ C_ASSERT( sizeof(struct open_keyed_event_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
open_keyed_event_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_keyed_event_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
open_keyed_event_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
open_keyed_event_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_request
,
owned
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_request
,
owned
)
==
20
);
C_ASSERT
(
sizeof
(
struct
create_mutex_request
)
==
24
);
C_ASSERT
(
sizeof
(
struct
create_mutex_request
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mutex_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_mutex_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_mutex_reply
)
==
16
);
...
@@ -916,10 +913,9 @@ C_ASSERT( sizeof(struct open_mutex_request) == 24 );
...
@@ -916,10 +913,9 @@ C_ASSERT( sizeof(struct open_mutex_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
open_mutex_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_mutex_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
open_mutex_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
open_mutex_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
initial
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
initial
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
max
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_request
,
max
)
==
24
);
C_ASSERT
(
sizeof
(
struct
create_semaphore_request
)
==
24
);
C_ASSERT
(
sizeof
(
struct
create_semaphore_request
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_semaphore_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_semaphore_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_semaphore_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
release_semaphore_request
,
handle
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
release_semaphore_request
,
handle
)
==
12
);
...
@@ -939,12 +935,11 @@ C_ASSERT( sizeof(struct open_semaphore_request) == 24 );
...
@@ -939,12 +935,11 @@ C_ASSERT( sizeof(struct open_semaphore_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
open_semaphore_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_semaphore_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
open_semaphore_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
open_semaphore_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
sharing
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
sharing
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
create
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
create
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
options
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
options
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
attrs
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_request
,
attrs
)
==
32
);
C_ASSERT
(
sizeof
(
struct
create_file_request
)
==
32
);
C_ASSERT
(
sizeof
(
struct
create_file_request
)
==
40
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_file_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_file_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_file_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_file_object_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
open_file_object_request
,
access
)
==
12
);
...
@@ -1194,8 +1189,7 @@ C_ASSERT( FIELD_OFFSET(struct read_change_request, handle) == 12 );
...
@@ -1194,8 +1189,7 @@ C_ASSERT( FIELD_OFFSET(struct read_change_request, handle) == 12 );
C_ASSERT
(
sizeof
(
struct
read_change_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
read_change_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
read_change_reply
)
==
8
);
C_ASSERT
(
sizeof
(
struct
read_change_reply
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
protect
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
protect
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
size
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
size
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
file_handle
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_mapping_request
,
file_handle
)
==
32
);
C_ASSERT
(
sizeof
(
struct
create_mapping_request
)
==
40
);
C_ASSERT
(
sizeof
(
struct
create_mapping_request
)
==
40
);
...
@@ -1581,12 +1575,11 @@ C_ASSERT( sizeof(struct get_irp_result_request) == 24 );
...
@@ -1581,12 +1575,11 @@ C_ASSERT( sizeof(struct get_irp_result_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
get_irp_result_reply
,
size
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
get_irp_result_reply
,
size
)
==
8
);
C_ASSERT
(
sizeof
(
struct
get_irp_result_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
get_irp_result_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
options
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
options
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
sharing
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
sharing
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
maxinstances
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
maxinstances
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
outsize
)
==
28
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
outsize
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
insize
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
insize
)
==
36
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
timeout
)
==
40
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
timeout
)
==
40
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
flags
)
==
48
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_named_pipe_request
,
flags
)
==
48
);
C_ASSERT
(
sizeof
(
struct
create_named_pipe_request
)
==
56
);
C_ASSERT
(
sizeof
(
struct
create_named_pipe_request
)
==
56
);
...
@@ -2279,8 +2272,7 @@ C_ASSERT( sizeof(struct get_suspend_context_request) == 16 );
...
@@ -2279,8 +2272,7 @@ C_ASSERT( sizeof(struct get_suspend_context_request) == 16 );
C_ASSERT
(
sizeof
(
struct
get_suspend_context_reply
)
==
8
);
C_ASSERT
(
sizeof
(
struct
get_suspend_context_reply
)
==
8
);
C_ASSERT
(
sizeof
(
struct
set_suspend_context_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
set_suspend_context_request
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_job_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_job_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_job_request
,
attributes
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_job_request
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_job_request
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_job_reply
,
handle
)
==
8
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_job_reply
,
handle
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_job_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
create_job_reply
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
assign_job_request
,
job
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
assign_job_request
,
job
)
==
12
);
...
...
server/semaphore.c
View file @
7350682a
...
@@ -193,12 +193,13 @@ DECL_HANDLER(create_semaphore)
...
@@ -193,12 +193,13 @@ DECL_HANDLER(create_semaphore)
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
if
(
objattr
->
rootdir
&&
!
(
root
=
get_directory_obj
(
current
->
process
,
objattr
->
rootdir
,
0
)))
return
;
return
;
if
((
sem
=
create_semaphore
(
root
,
&
name
,
req
->
attributes
,
req
->
initial
,
req
->
max
,
sd
)))
if
((
sem
=
create_semaphore
(
root
,
&
name
,
objattr
->
attributes
,
req
->
initial
,
req
->
max
,
sd
)))
{
{
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
if
(
get_error
()
==
STATUS_OBJECT_NAME_EXISTS
)
reply
->
handle
=
alloc_handle
(
current
->
process
,
sem
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
sem
,
req
->
access
,
objattr
->
attributes
);
else
else
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
sem
,
req
->
access
,
req
->
attributes
);
reply
->
handle
=
alloc_handle_no_access_check
(
current
->
process
,
sem
,
req
->
access
,
objattr
->
attributes
);
release_object
(
sem
);
release_object
(
sem
);
}
}
...
...
server/trace.c
View file @
7350682a
...
@@ -1077,7 +1077,7 @@ static void dump_varargs_object_attributes( const char *prefix, data_size_t size
...
@@ -1077,7 +1077,7 @@ static void dump_varargs_object_attributes( const char *prefix, data_size_t size
if
(
size
>=
sizeof
(
struct
object_attributes
))
if
(
size
>=
sizeof
(
struct
object_attributes
))
{
{
const
WCHAR
*
str
;
const
WCHAR
*
str
;
fprintf
(
stderr
,
"rootdir=%04x
"
,
objattr
->
rootdir
);
fprintf
(
stderr
,
"rootdir=%04x
,attributes=%08x"
,
objattr
->
rootdir
,
objattr
->
attributes
);
if
(
objattr
->
sd_len
>
size
-
sizeof
(
*
objattr
)
||
if
(
objattr
->
sd_len
>
size
-
sizeof
(
*
objattr
)
||
objattr
->
name_len
>
size
-
sizeof
(
*
objattr
)
-
objattr
->
sd_len
)
objattr
->
name_len
>
size
-
sizeof
(
*
objattr
)
-
objattr
->
sd_len
)
return
;
return
;
...
@@ -1496,7 +1496,6 @@ static void dump_select_reply( const struct select_reply *req )
...
@@ -1496,7 +1496,6 @@ static void dump_select_reply( const struct select_reply *req )
static
void
dump_create_event_request
(
const
struct
create_event_request
*
req
)
static
void
dump_create_event_request
(
const
struct
create_event_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", manual_reset=%d"
,
req
->
manual_reset
);
fprintf
(
stderr
,
", manual_reset=%d"
,
req
->
manual_reset
);
fprintf
(
stderr
,
", initial_state=%d"
,
req
->
initial_state
);
fprintf
(
stderr
,
", initial_state=%d"
,
req
->
initial_state
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
...
@@ -1540,7 +1539,6 @@ static void dump_open_event_reply( const struct open_event_reply *req )
...
@@ -1540,7 +1539,6 @@ static void dump_open_event_reply( const struct open_event_reply *req )
static
void
dump_create_keyed_event_request
(
const
struct
create_keyed_event_request
*
req
)
static
void
dump_create_keyed_event_request
(
const
struct
create_keyed_event_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
}
}
...
@@ -1565,7 +1563,6 @@ static void dump_open_keyed_event_reply( const struct open_keyed_event_reply *re
...
@@ -1565,7 +1563,6 @@ static void dump_open_keyed_event_reply( const struct open_keyed_event_reply *re
static
void
dump_create_mutex_request
(
const
struct
create_mutex_request
*
req
)
static
void
dump_create_mutex_request
(
const
struct
create_mutex_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", owned=%d"
,
req
->
owned
);
fprintf
(
stderr
,
", owned=%d"
,
req
->
owned
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
}
}
...
@@ -1601,7 +1598,6 @@ static void dump_open_mutex_reply( const struct open_mutex_reply *req )
...
@@ -1601,7 +1598,6 @@ static void dump_open_mutex_reply( const struct open_mutex_reply *req )
static
void
dump_create_semaphore_request
(
const
struct
create_semaphore_request
*
req
)
static
void
dump_create_semaphore_request
(
const
struct
create_semaphore_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", initial=%08x"
,
req
->
initial
);
fprintf
(
stderr
,
", initial=%08x"
,
req
->
initial
);
fprintf
(
stderr
,
", max=%08x"
,
req
->
max
);
fprintf
(
stderr
,
", max=%08x"
,
req
->
max
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
...
@@ -1650,7 +1646,6 @@ static void dump_open_semaphore_reply( const struct open_semaphore_reply *req )
...
@@ -1650,7 +1646,6 @@ static void dump_open_semaphore_reply( const struct open_semaphore_reply *req )
static
void
dump_create_file_request
(
const
struct
create_file_request
*
req
)
static
void
dump_create_file_request
(
const
struct
create_file_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", sharing=%08x"
,
req
->
sharing
);
fprintf
(
stderr
,
", sharing=%08x"
,
req
->
sharing
);
fprintf
(
stderr
,
", create=%d"
,
req
->
create
);
fprintf
(
stderr
,
", create=%d"
,
req
->
create
);
fprintf
(
stderr
,
", options=%08x"
,
req
->
options
);
fprintf
(
stderr
,
", options=%08x"
,
req
->
options
);
...
@@ -2115,7 +2110,6 @@ static void dump_read_change_reply( const struct read_change_reply *req )
...
@@ -2115,7 +2110,6 @@ static void dump_read_change_reply( const struct read_change_reply *req )
static
void
dump_create_mapping_request
(
const
struct
create_mapping_request
*
req
)
static
void
dump_create_mapping_request
(
const
struct
create_mapping_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", protect=%08x"
,
req
->
protect
);
fprintf
(
stderr
,
", protect=%08x"
,
req
->
protect
);
dump_uint64
(
", size="
,
&
req
->
size
);
dump_uint64
(
", size="
,
&
req
->
size
);
fprintf
(
stderr
,
", file_handle=%04x"
,
req
->
file_handle
);
fprintf
(
stderr
,
", file_handle=%04x"
,
req
->
file_handle
);
...
@@ -2878,7 +2872,6 @@ static void dump_get_irp_result_reply( const struct get_irp_result_reply *req )
...
@@ -2878,7 +2872,6 @@ static void dump_get_irp_result_reply( const struct get_irp_result_reply *req )
static
void
dump_create_named_pipe_request
(
const
struct
create_named_pipe_request
*
req
)
static
void
dump_create_named_pipe_request
(
const
struct
create_named_pipe_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", options=%08x"
,
req
->
options
);
fprintf
(
stderr
,
", options=%08x"
,
req
->
options
);
fprintf
(
stderr
,
", sharing=%08x"
,
req
->
sharing
);
fprintf
(
stderr
,
", sharing=%08x"
,
req
->
sharing
);
fprintf
(
stderr
,
", maxinstances=%08x"
,
req
->
maxinstances
);
fprintf
(
stderr
,
", maxinstances=%08x"
,
req
->
maxinstances
);
...
@@ -4260,7 +4253,6 @@ static void dump_set_suspend_context_request( const struct set_suspend_context_r
...
@@ -4260,7 +4253,6 @@ static void dump_set_suspend_context_request( const struct set_suspend_context_r
static
void
dump_create_job_request
(
const
struct
create_job_request
*
req
)
static
void
dump_create_job_request
(
const
struct
create_job_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
dump_varargs_object_attributes
(
", objattr="
,
cur_size
);
}
}
...
...
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