Commit 6d4ee739 authored by Alexandre Julliard's avatar Alexandre Julliard

Added get/set_handle_info request.

parent fb02ee91
......@@ -175,6 +175,26 @@ struct close_handle_request
};
/* Get information about a handle */
struct get_handle_info_request
{
int handle; /* handle we are interested in */
};
struct get_handle_info_reply
{
int flags; /* handle flags */
};
/* Set a handle information */
struct set_handle_info_request
{
int handle; /* handle we are interested in */
int flags; /* new handle flags */
int mask; /* mask for flags to set */
};
/* Duplicate a handle */
struct dup_handle_request
{
......@@ -639,10 +659,6 @@ struct _THDB;
extern int CLIENT_NewThread( struct _THDB *thdb, int *thandle, int *phandle );
extern int CLIENT_SetDebug( int level );
extern int CLIENT_InitThread(void);
extern int CLIENT_CloseHandle( int handle );
extern int CLIENT_DuplicateHandle( int src_process, int src_handle, int dst_process,
int dst_handle, DWORD access, BOOL32 inherit, DWORD options );
extern int CLIENT_OpenProcess( void *pid, DWORD access, BOOL32 inherit );
#endif /* __WINE_SERVER__ */
#endif /* __WINE_SERVER_H */
......@@ -18,6 +18,8 @@ enum request
REQ_RESUME_THREAD,
REQ_QUEUE_APC,
REQ_CLOSE_HANDLE,
REQ_GET_HANDLE_INFO,
REQ_SET_HANDLE_INFO,
REQ_DUP_HANDLE,
REQ_OPEN_PROCESS,
REQ_SELECT,
......@@ -76,6 +78,8 @@ DECL_HANDLER(suspend_thread);
DECL_HANDLER(resume_thread);
DECL_HANDLER(queue_apc);
DECL_HANDLER(close_handle);
DECL_HANDLER(get_handle_info);
DECL_HANDLER(set_handle_info);
DECL_HANDLER(dup_handle);
DECL_HANDLER(open_process);
DECL_HANDLER(select);
......@@ -131,6 +135,8 @@ static const struct handler {
{ (void(*)())req_resume_thread, sizeof(struct resume_thread_request) },
{ (void(*)())req_queue_apc, sizeof(struct queue_apc_request) },
{ (void(*)())req_close_handle, sizeof(struct close_handle_request) },
{ (void(*)())req_get_handle_info, sizeof(struct get_handle_info_request) },
{ (void(*)())req_set_handle_info, sizeof(struct set_handle_info_request) },
{ (void(*)())req_dup_handle, sizeof(struct dup_handle_request) },
{ (void(*)())req_open_process, sizeof(struct open_process_request) },
{ (void(*)())req_select, sizeof(struct select_request) },
......
......@@ -198,6 +198,21 @@ DECL_HANDLER(close_handle)
send_reply( current, -1, 0 );
}
/* get information about a handle */
DECL_HANDLER(get_handle_info)
{
struct get_handle_info_reply reply;
reply.flags = set_handle_info( current->process, req->handle, 0, 0 );
send_reply( current, -1, 1, &reply, sizeof(reply) );
}
/* set a handle information */
DECL_HANDLER(set_handle_info)
{
set_handle_info( current->process, req->handle, req->mask, req->flags );
send_reply( current, -1, 0 );
}
/* duplicate a handle */
DECL_HANDLER(dup_handle)
{
......
......@@ -134,6 +134,26 @@ static int dump_close_handle_request( struct close_handle_request *req, int len
return (int)sizeof(*req);
}
static int dump_get_handle_info_request( struct get_handle_info_request *req, int len )
{
fprintf( stderr, " handle=%d", req->handle );
return (int)sizeof(*req);
}
static int dump_get_handle_info_reply( struct get_handle_info_reply *req, int len )
{
fprintf( stderr, " flags=%d", req->flags );
return (int)sizeof(*req);
}
static int dump_set_handle_info_request( struct set_handle_info_request *req, int len )
{
fprintf( stderr, " handle=%d,", req->handle );
fprintf( stderr, " flags=%d,", req->flags );
fprintf( stderr, " mask=%d", req->mask );
return (int)sizeof(*req);
}
static int dump_dup_handle_request( struct dup_handle_request *req, int len )
{
fprintf( stderr, " src_process=%d,", req->src_process );
......@@ -603,6 +623,10 @@ static const struct dumper dumpers[REQ_NB_REQUESTS] =
(void(*)())0 },
{ (int(*)(void *,int))dump_close_handle_request,
(void(*)())0 },
{ (int(*)(void *,int))dump_get_handle_info_request,
(void(*)())dump_get_handle_info_reply },
{ (int(*)(void *,int))dump_set_handle_info_request,
(void(*)())0 },
{ (int(*)(void *,int))dump_dup_handle_request,
(void(*)())dump_dup_handle_reply },
{ (int(*)(void *,int))dump_open_process_request,
......@@ -694,6 +718,8 @@ static const char * const req_names[REQ_NB_REQUESTS] =
"resume_thread",
"queue_apc",
"close_handle",
"get_handle_info",
"set_handle_info",
"dup_handle",
"open_process",
"select",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment