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
f2d7dd64
Commit
f2d7dd64
authored
Dec 09, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Use attributes instead of inherit flag in process and thread requests.
parent
f11d0a37
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
46 additions
and
32 deletions
+46
-32
process.c
dlls/kernel/process.c
+5
-3
process.c
dlls/ntdll/process.c
+3
-3
thread.c
dlls/ntdll/thread.c
+5
-4
server_protocol.h
include/wine/server_protocol.h
+9
-6
process.c
server/process.c
+4
-3
protocol.def
server/protocol.def
+9
-6
thread.c
server/thread.c
+3
-2
trace.c
server/trace.c
+8
-5
No files found.
dlls/kernel/process.c
View file @
f2d7dd64
...
@@ -1603,9 +1603,11 @@ static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPW
...
@@ -1603,9 +1603,11 @@ static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPW
WaitForSingleObject
(
process_info
,
INFINITE
);
WaitForSingleObject
(
process_info
,
INFINITE
);
SERVER_START_REQ
(
get_new_process_info
)
SERVER_START_REQ
(
get_new_process_info
)
{
{
req
->
info
=
process_info
;
req
->
info
=
process_info
;
req
->
pinherit
=
(
psa
&&
(
psa
->
nLength
>=
sizeof
(
*
psa
))
&&
psa
->
bInheritHandle
);
req
->
process_access
=
PROCESS_ALL_ACCESS
;
req
->
tinherit
=
(
tsa
&&
(
tsa
->
nLength
>=
sizeof
(
*
tsa
))
&&
tsa
->
bInheritHandle
);
req
->
process_attr
=
(
psa
&&
(
psa
->
nLength
>=
sizeof
(
*
psa
))
&&
psa
->
bInheritHandle
)
?
OBJ_INHERIT
:
0
;
req
->
thread_access
=
THREAD_ALL_ACCESS
;
req
->
thread_attr
=
(
tsa
&&
(
tsa
->
nLength
>=
sizeof
(
*
tsa
))
&&
tsa
->
bInheritHandle
)
?
OBJ_INHERIT
:
0
;
if
((
ret
=
!
wine_server_call_err
(
req
)))
if
((
ret
=
!
wine_server_call_err
(
req
)))
{
{
info
->
dwProcessId
=
(
DWORD
)
reply
->
pid
;
info
->
dwProcessId
=
(
DWORD
)
reply
->
pid
;
...
...
dlls/ntdll/process.c
View file @
f2d7dd64
...
@@ -375,9 +375,9 @@ NTSTATUS WINAPI NtOpenProcess(PHANDLE handle, ACCESS_MASK access,
...
@@ -375,9 +375,9 @@ NTSTATUS WINAPI NtOpenProcess(PHANDLE handle, ACCESS_MASK access,
SERVER_START_REQ
(
open_process
)
SERVER_START_REQ
(
open_process
)
{
{
req
->
pid
=
(
DWORD
)
cid
->
UniqueProcess
;
req
->
pid
=
(
process_id_t
)
cid
->
UniqueProcess
;
req
->
access
=
access
;
req
->
access
=
access
;
req
->
inherit
=
attr
&&
(
attr
->
Attributes
&
OBJ_INHERIT
)
;
req
->
attributes
=
attr
?
attr
->
Attributes
:
0
;
status
=
wine_server_call
(
req
);
status
=
wine_server_call
(
req
);
if
(
!
status
)
*
handle
=
reply
->
handle
;
if
(
!
status
)
*
handle
=
reply
->
handle
;
}
}
...
...
dlls/ntdll/thread.c
View file @
f2d7dd64
...
@@ -265,8 +265,9 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
...
@@ -265,8 +265,9 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
SERVER_START_REQ
(
new_thread
)
SERVER_START_REQ
(
new_thread
)
{
{
req
->
access
=
THREAD_ALL_ACCESS
;
req
->
attributes
=
0
;
/* FIXME */
req
->
suspend
=
suspended
;
req
->
suspend
=
suspended
;
req
->
inherit
=
0
;
/* FIXME */
req
->
request_fd
=
request_pipe
[
0
];
req
->
request_fd
=
request_pipe
[
0
];
if
(
!
(
status
=
wine_server_call
(
req
)))
if
(
!
(
status
=
wine_server_call
(
req
)))
{
{
...
@@ -362,9 +363,9 @@ NTSTATUS WINAPI NtOpenThread( HANDLE *handle, ACCESS_MASK access,
...
@@ -362,9 +363,9 @@ NTSTATUS WINAPI NtOpenThread( HANDLE *handle, ACCESS_MASK access,
SERVER_START_REQ
(
open_thread
)
SERVER_START_REQ
(
open_thread
)
{
{
req
->
tid
=
(
thread_id_t
)
id
->
UniqueThread
;
req
->
tid
=
(
thread_id_t
)
id
->
UniqueThread
;
req
->
access
=
access
;
req
->
access
=
access
;
req
->
inherit
=
attr
&&
(
attr
->
Attributes
&
OBJ_INHERIT
)
;
req
->
attributes
=
attr
?
attr
->
Attributes
:
0
;
ret
=
wine_server_call
(
req
);
ret
=
wine_server_call
(
req
);
*
handle
=
reply
->
handle
;
*
handle
=
reply
->
handle
;
}
}
...
...
include/wine/server_protocol.h
View file @
f2d7dd64
...
@@ -206,8 +206,10 @@ struct get_new_process_info_request
...
@@ -206,8 +206,10 @@ struct get_new_process_info_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
obj_handle_t
info
;
obj_handle_t
info
;
int
pinherit
;
unsigned
int
process_access
;
int
tinherit
;
unsigned
int
process_attr
;
unsigned
int
thread_access
;
unsigned
int
thread_attr
;
};
};
struct
get_new_process_info_reply
struct
get_new_process_info_reply
{
{
...
@@ -224,8 +226,9 @@ struct get_new_process_info_reply
...
@@ -224,8 +226,9 @@ struct get_new_process_info_reply
struct
new_thread_request
struct
new_thread_request
{
{
struct
request_header
__header
;
struct
request_header
__header
;
unsigned
int
access
;
unsigned
int
attributes
;
int
suspend
;
int
suspend
;
int
inherit
;
int
request_fd
;
int
request_fd
;
};
};
struct
new_thread_reply
struct
new_thread_reply
...
@@ -564,7 +567,7 @@ struct open_process_request
...
@@ -564,7 +567,7 @@ struct open_process_request
struct
request_header
__header
;
struct
request_header
__header
;
process_id_t
pid
;
process_id_t
pid
;
unsigned
int
access
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
};
};
struct
open_process_reply
struct
open_process_reply
{
{
...
@@ -579,7 +582,7 @@ struct open_thread_request
...
@@ -579,7 +582,7 @@ struct open_thread_request
struct
request_header
__header
;
struct
request_header
__header
;
thread_id_t
tid
;
thread_id_t
tid
;
unsigned
int
access
;
unsigned
int
access
;
int
inherit
;
unsigned
int
attributes
;
};
};
struct
open_thread_reply
struct
open_thread_reply
{
{
...
@@ -4316,6 +4319,6 @@ union generic_reply
...
@@ -4316,6 +4319,6 @@ union generic_reply
struct
query_symlink_reply
query_symlink_reply
;
struct
query_symlink_reply
query_symlink_reply
;
};
};
#define SERVER_PROTOCOL_VERSION 21
1
#define SERVER_PROTOCOL_VERSION 21
2
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/process.c
View file @
f2d7dd64
...
@@ -909,9 +909,9 @@ DECL_HANDLER(get_new_process_info)
...
@@ -909,9 +909,9 @@ DECL_HANDLER(get_new_process_info)
reply
->
pid
=
get_process_id
(
info
->
process
);
reply
->
pid
=
get_process_id
(
info
->
process
);
reply
->
tid
=
get_thread_id
(
info
->
thread
);
reply
->
tid
=
get_thread_id
(
info
->
thread
);
reply
->
phandle
=
alloc_handle
(
current
->
process
,
info
->
process
,
reply
->
phandle
=
alloc_handle
(
current
->
process
,
info
->
process
,
PROCESS_ALL_ACCESS
,
req
->
pinherit
);
req
->
process_access
,
req
->
process_attr
&
OBJ_INHERIT
);
reply
->
thandle
=
alloc_handle
(
current
->
process
,
info
->
thread
,
reply
->
thandle
=
alloc_handle
(
current
->
process
,
info
->
thread
,
THREAD_ALL_ACCESS
,
req
->
tinherit
);
req
->
thread_access
,
req
->
thread_attr
&
OBJ_INHERIT
);
reply
->
success
=
is_process_init_done
(
info
->
process
);
reply
->
success
=
is_process_init_done
(
info
->
process
);
release_object
(
info
);
release_object
(
info
);
}
}
...
@@ -1009,7 +1009,8 @@ DECL_HANDLER(open_process)
...
@@ -1009,7 +1009,8 @@ DECL_HANDLER(open_process)
reply
->
handle
=
0
;
reply
->
handle
=
0
;
if
(
process
)
if
(
process
)
{
{
reply
->
handle
=
alloc_handle
(
current
->
process
,
process
,
req
->
access
,
req
->
inherit
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
process
,
req
->
access
,
req
->
attributes
&
OBJ_INHERIT
);
release_object
(
process
);
release_object
(
process
);
}
}
}
}
...
...
server/protocol.def
View file @
f2d7dd64
...
@@ -214,9 +214,11 @@ struct security_descriptor
...
@@ -214,9 +214,11 @@ struct security_descriptor
/* Retrieve information about a newly started process */
/* Retrieve information about a newly started process */
@REQ(get_new_process_info)
@REQ(get_new_process_info)
obj_handle_t info; /* info handle returned from new_process_request */
obj_handle_t info; /* info handle returned from new_process_request */
int pinherit; /* process handle inherit flag */
unsigned int process_access; /* access rights for process object */
int tinherit; /* thread handle inherit flag */
unsigned int process_attr; /* attributes for process object */
unsigned int thread_access; /* access rights for thread object */
unsigned int thread_attr; /* attributes for thread object */
@REPLY
@REPLY
process_id_t pid; /* process id */
process_id_t pid; /* process id */
obj_handle_t phandle; /* process handle (in the current process) */
obj_handle_t phandle; /* process handle (in the current process) */
...
@@ -228,8 +230,9 @@ struct security_descriptor
...
@@ -228,8 +230,9 @@ struct security_descriptor
/* Create a new thread from the context of the parent */
/* Create a new thread from the context of the parent */
@REQ(new_thread)
@REQ(new_thread)
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
int suspend; /* new thread should be suspended on creation */
int suspend; /* new thread should be suspended on creation */
int inherit; /* inherit flag */
int request_fd; /* fd for request pipe */
int request_fd; /* fd for request pipe */
@REPLY
@REPLY
thread_id_t tid; /* thread id */
thread_id_t tid; /* thread id */
...
@@ -462,7 +465,7 @@ enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
...
@@ -462,7 +465,7 @@ enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
@REQ(open_process)
@REQ(open_process)
process_id_t pid; /* process id to open */
process_id_t pid; /* process id to open */
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
int inherit; /* inherit flag
*/
unsigned int attributes; /* object attributes
*/
@REPLY
@REPLY
obj_handle_t handle; /* handle to the process */
obj_handle_t handle; /* handle to the process */
@END
@END
...
@@ -472,7 +475,7 @@ enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
...
@@ -472,7 +475,7 @@ enum apc_type { APC_NONE, APC_USER, APC_TIMER, APC_ASYNC_IO };
@REQ(open_thread)
@REQ(open_thread)
thread_id_t tid; /* thread id to open */
thread_id_t tid; /* thread id to open */
unsigned int access; /* wanted access rights */
unsigned int access; /* wanted access rights */
int inherit; /* inherit flag
*/
unsigned int attributes; /* object attributes
*/
@REPLY
@REPLY
obj_handle_t handle; /* handle to the thread */
obj_handle_t handle; /* handle to the thread */
@END
@END
...
...
server/thread.c
View file @
f2d7dd64
...
@@ -829,7 +829,7 @@ DECL_HANDLER(new_thread)
...
@@ -829,7 +829,7 @@ DECL_HANDLER(new_thread)
if
(
req
->
suspend
)
thread
->
suspend
++
;
if
(
req
->
suspend
)
thread
->
suspend
++
;
reply
->
tid
=
get_thread_id
(
thread
);
reply
->
tid
=
get_thread_id
(
thread
);
if
((
reply
->
handle
=
alloc_handle
(
current
->
process
,
thread
,
if
((
reply
->
handle
=
alloc_handle
(
current
->
process
,
thread
,
THREAD_ALL_ACCESS
,
req
->
inherit
)))
req
->
access
,
req
->
attributes
&
OBJ_INHERIT
)))
{
{
/* thread object will be released when the thread gets killed */
/* thread object will be released when the thread gets killed */
return
;
return
;
...
@@ -931,7 +931,8 @@ DECL_HANDLER(open_thread)
...
@@ -931,7 +931,8 @@ DECL_HANDLER(open_thread)
reply
->
handle
=
0
;
reply
->
handle
=
0
;
if
(
thread
)
if
(
thread
)
{
{
reply
->
handle
=
alloc_handle
(
current
->
process
,
thread
,
req
->
access
,
req
->
inherit
);
reply
->
handle
=
alloc_handle
(
current
->
process
,
thread
,
req
->
access
,
req
->
attributes
&
OBJ_INHERIT
);
release_object
(
thread
);
release_object
(
thread
);
}
}
}
}
...
...
server/trace.c
View file @
f2d7dd64
...
@@ -589,8 +589,10 @@ static void dump_new_process_reply( const struct new_process_reply *req )
...
@@ -589,8 +589,10 @@ static void dump_new_process_reply( const struct new_process_reply *req )
static
void
dump_get_new_process_info_request
(
const
struct
get_new_process_info_request
*
req
)
static
void
dump_get_new_process_info_request
(
const
struct
get_new_process_info_request
*
req
)
{
{
fprintf
(
stderr
,
" info=%p,"
,
req
->
info
);
fprintf
(
stderr
,
" info=%p,"
,
req
->
info
);
fprintf
(
stderr
,
" pinherit=%d,"
,
req
->
pinherit
);
fprintf
(
stderr
,
" process_access=%08x,"
,
req
->
process_access
);
fprintf
(
stderr
,
" tinherit=%d"
,
req
->
tinherit
);
fprintf
(
stderr
,
" process_attr=%08x,"
,
req
->
process_attr
);
fprintf
(
stderr
,
" thread_access=%08x,"
,
req
->
thread_access
);
fprintf
(
stderr
,
" thread_attr=%08x"
,
req
->
thread_attr
);
}
}
static
void
dump_get_new_process_info_reply
(
const
struct
get_new_process_info_reply
*
req
)
static
void
dump_get_new_process_info_reply
(
const
struct
get_new_process_info_reply
*
req
)
...
@@ -604,8 +606,9 @@ static void dump_get_new_process_info_reply( const struct get_new_process_info_r
...
@@ -604,8 +606,9 @@ static void dump_get_new_process_info_reply( const struct get_new_process_info_r
static
void
dump_new_thread_request
(
const
struct
new_thread_request
*
req
)
static
void
dump_new_thread_request
(
const
struct
new_thread_request
*
req
)
{
{
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" attributes=%08x,"
,
req
->
attributes
);
fprintf
(
stderr
,
" suspend=%d,"
,
req
->
suspend
);
fprintf
(
stderr
,
" suspend=%d,"
,
req
->
suspend
);
fprintf
(
stderr
,
" inherit=%d,"
,
req
->
inherit
);
fprintf
(
stderr
,
" request_fd=%d"
,
req
->
request_fd
);
fprintf
(
stderr
,
" request_fd=%d"
,
req
->
request_fd
);
}
}
...
@@ -857,7 +860,7 @@ static void dump_open_process_request( const struct open_process_request *req )
...
@@ -857,7 +860,7 @@ static void dump_open_process_request( const struct open_process_request *req )
{
{
fprintf
(
stderr
,
" pid=%04x,"
,
req
->
pid
);
fprintf
(
stderr
,
" pid=%04x,"
,
req
->
pid
);
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x"
,
req
->
attributes
);
}
}
static
void
dump_open_process_reply
(
const
struct
open_process_reply
*
req
)
static
void
dump_open_process_reply
(
const
struct
open_process_reply
*
req
)
...
@@ -869,7 +872,7 @@ static void dump_open_thread_request( const struct open_thread_request *req )
...
@@ -869,7 +872,7 @@ static void dump_open_thread_request( const struct open_thread_request *req )
{
{
fprintf
(
stderr
,
" tid=%04x,"
,
req
->
tid
);
fprintf
(
stderr
,
" tid=%04x,"
,
req
->
tid
);
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
" access=%08x,"
,
req
->
access
);
fprintf
(
stderr
,
"
inherit=%d"
,
req
->
inherit
);
fprintf
(
stderr
,
"
attributes=%08x"
,
req
->
attributes
);
}
}
static
void
dump_open_thread_reply
(
const
struct
open_thread_reply
*
req
)
static
void
dump_open_thread_reply
(
const
struct
open_thread_reply
*
req
)
...
...
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