mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-06 00:40:42 +00:00
Implemented GetNamedPipeInfo.
This commit is contained in:
parent
329318109f
commit
f2e7ce7f6a
|
@ -746,9 +746,27 @@ BOOL WINAPI GetNamedPipeInfo(
|
||||||
HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutputBufferSize,
|
HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutputBufferSize,
|
||||||
LPDWORD lpInputBufferSize, LPDWORD lpMaxInstances)
|
LPDWORD lpInputBufferSize, LPDWORD lpMaxInstances)
|
||||||
{
|
{
|
||||||
FIXME("%d %p %p %p %p\n", hNamedPipe, lpFlags,
|
BOOL ret;
|
||||||
|
|
||||||
|
TRACE("%d %p %p %p %p\n", hNamedPipe, lpFlags,
|
||||||
lpOutputBufferSize, lpInputBufferSize, lpMaxInstances);
|
lpOutputBufferSize, lpInputBufferSize, lpMaxInstances);
|
||||||
return FALSE;
|
|
||||||
|
SERVER_START_REQ( get_named_pipe_info )
|
||||||
|
{
|
||||||
|
req->handle = hNamedPipe;
|
||||||
|
ret = !SERVER_CALL_ERR();
|
||||||
|
if(lpFlags)
|
||||||
|
*lpFlags = req->flags;
|
||||||
|
if(lpOutputBufferSize)
|
||||||
|
*lpOutputBufferSize = req->outsize;
|
||||||
|
if(lpInputBufferSize)
|
||||||
|
*lpInputBufferSize = req->outsize;
|
||||||
|
if(lpMaxInstances)
|
||||||
|
*lpMaxInstances = req->maxinstances;
|
||||||
|
}
|
||||||
|
SERVER_END_REQ;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|
|
@ -1549,6 +1549,17 @@ struct disconnect_named_pipe_request
|
||||||
handle_t handle;
|
handle_t handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct get_named_pipe_info_request
|
||||||
|
{
|
||||||
|
struct request_header __header;
|
||||||
|
handle_t handle;
|
||||||
|
unsigned int flags;
|
||||||
|
unsigned int maxinstances;
|
||||||
|
unsigned int outsize;
|
||||||
|
unsigned int insize;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum request
|
enum request
|
||||||
{
|
{
|
||||||
|
@ -1674,6 +1685,7 @@ enum request
|
||||||
REQ_connect_named_pipe,
|
REQ_connect_named_pipe,
|
||||||
REQ_wait_named_pipe,
|
REQ_wait_named_pipe,
|
||||||
REQ_disconnect_named_pipe,
|
REQ_disconnect_named_pipe,
|
||||||
|
REQ_get_named_pipe_info,
|
||||||
REQ_NB_REQUESTS
|
REQ_NB_REQUESTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1803,8 +1815,9 @@ union generic_request
|
||||||
struct connect_named_pipe_request connect_named_pipe;
|
struct connect_named_pipe_request connect_named_pipe;
|
||||||
struct wait_named_pipe_request wait_named_pipe;
|
struct wait_named_pipe_request wait_named_pipe;
|
||||||
struct disconnect_named_pipe_request disconnect_named_pipe;
|
struct disconnect_named_pipe_request disconnect_named_pipe;
|
||||||
|
struct get_named_pipe_info_request get_named_pipe_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SERVER_PROTOCOL_VERSION 50
|
#define SERVER_PROTOCOL_VERSION 51
|
||||||
|
|
||||||
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
|
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
|
||||||
|
|
|
@ -237,6 +237,15 @@ DECL_HANDLER(create_named_pipe)
|
||||||
if(!pipe)
|
if(!pipe)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (get_error() != STATUS_OBJECT_NAME_COLLISION)
|
||||||
|
{
|
||||||
|
pipe->insize = req->insize;
|
||||||
|
pipe->outsize = req->outsize;
|
||||||
|
pipe->maxinstances = req->maxinstances;
|
||||||
|
pipe->timeout = req->timeout;
|
||||||
|
pipe->pipemode = req->pipemode;
|
||||||
|
}
|
||||||
|
|
||||||
user = create_pipe_user (pipe, -1);
|
user = create_pipe_user (pipe, -1);
|
||||||
|
|
||||||
if(user)
|
if(user)
|
||||||
|
@ -403,3 +412,20 @@ DECL_HANDLER(disconnect_named_pipe)
|
||||||
}
|
}
|
||||||
release_object(user);
|
release_object(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECL_HANDLER(get_named_pipe_info)
|
||||||
|
{
|
||||||
|
struct pipe_user *user;
|
||||||
|
|
||||||
|
user = get_pipe_user_obj(current->process, req->handle, 0);
|
||||||
|
if(!user)
|
||||||
|
return;
|
||||||
|
|
||||||
|
req->flags = user->pipe->pipemode;
|
||||||
|
req->maxinstances = user->pipe->maxinstances;
|
||||||
|
req->insize = user->pipe->insize;
|
||||||
|
req->outsize = user->pipe->outsize;
|
||||||
|
|
||||||
|
release_object(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1382,3 +1382,13 @@ enum message_type
|
||||||
@REQ(disconnect_named_pipe)
|
@REQ(disconnect_named_pipe)
|
||||||
handle_t handle;
|
handle_t handle;
|
||||||
@END
|
@END
|
||||||
|
|
||||||
|
@REQ(get_named_pipe_info)
|
||||||
|
handle_t handle;
|
||||||
|
@REPLY
|
||||||
|
unsigned int flags;
|
||||||
|
unsigned int maxinstances;
|
||||||
|
unsigned int outsize;
|
||||||
|
unsigned int insize;
|
||||||
|
@END
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,7 @@ DECL_HANDLER(open_named_pipe);
|
||||||
DECL_HANDLER(connect_named_pipe);
|
DECL_HANDLER(connect_named_pipe);
|
||||||
DECL_HANDLER(wait_named_pipe);
|
DECL_HANDLER(wait_named_pipe);
|
||||||
DECL_HANDLER(disconnect_named_pipe);
|
DECL_HANDLER(disconnect_named_pipe);
|
||||||
|
DECL_HANDLER(get_named_pipe_info);
|
||||||
|
|
||||||
#ifdef WANT_REQUEST_HANDLERS
|
#ifdef WANT_REQUEST_HANDLERS
|
||||||
|
|
||||||
|
@ -315,6 +316,7 @@ static const req_handler req_handlers[REQ_NB_REQUESTS] =
|
||||||
(req_handler)req_connect_named_pipe,
|
(req_handler)req_connect_named_pipe,
|
||||||
(req_handler)req_wait_named_pipe,
|
(req_handler)req_wait_named_pipe,
|
||||||
(req_handler)req_disconnect_named_pipe,
|
(req_handler)req_disconnect_named_pipe,
|
||||||
|
(req_handler)req_get_named_pipe_info,
|
||||||
};
|
};
|
||||||
#endif /* WANT_REQUEST_HANDLERS */
|
#endif /* WANT_REQUEST_HANDLERS */
|
||||||
|
|
||||||
|
|
|
@ -1639,6 +1639,19 @@ static void dump_disconnect_named_pipe_request( const struct disconnect_named_pi
|
||||||
fprintf( stderr, " handle=%d", req->handle );
|
fprintf( stderr, " handle=%d", req->handle );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dump_get_named_pipe_info_request( const struct get_named_pipe_info_request *req )
|
||||||
|
{
|
||||||
|
fprintf( stderr, " handle=%d", req->handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dump_get_named_pipe_info_reply( const struct get_named_pipe_info_request *req )
|
||||||
|
{
|
||||||
|
fprintf( stderr, " flags=%08x,", req->flags );
|
||||||
|
fprintf( stderr, " maxinstances=%08x,", req->maxinstances );
|
||||||
|
fprintf( stderr, " outsize=%08x,", req->outsize );
|
||||||
|
fprintf( stderr, " insize=%08x", req->insize );
|
||||||
|
}
|
||||||
|
|
||||||
static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
|
static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
|
||||||
(dump_func)dump_new_process_request,
|
(dump_func)dump_new_process_request,
|
||||||
(dump_func)dump_get_new_process_info_request,
|
(dump_func)dump_get_new_process_info_request,
|
||||||
|
@ -1762,6 +1775,7 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
|
||||||
(dump_func)dump_connect_named_pipe_request,
|
(dump_func)dump_connect_named_pipe_request,
|
||||||
(dump_func)dump_wait_named_pipe_request,
|
(dump_func)dump_wait_named_pipe_request,
|
||||||
(dump_func)dump_disconnect_named_pipe_request,
|
(dump_func)dump_disconnect_named_pipe_request,
|
||||||
|
(dump_func)dump_get_named_pipe_info_request,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
|
static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
|
||||||
|
@ -1887,6 +1901,7 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
|
||||||
(dump_func)0,
|
(dump_func)0,
|
||||||
(dump_func)0,
|
(dump_func)0,
|
||||||
(dump_func)0,
|
(dump_func)0,
|
||||||
|
(dump_func)dump_get_named_pipe_info_reply,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * const req_names[REQ_NB_REQUESTS] = {
|
static const char * const req_names[REQ_NB_REQUESTS] = {
|
||||||
|
@ -2012,6 +2027,7 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
|
||||||
"connect_named_pipe",
|
"connect_named_pipe",
|
||||||
"wait_named_pipe",
|
"wait_named_pipe",
|
||||||
"disconnect_named_pipe",
|
"disconnect_named_pipe",
|
||||||
|
"get_named_pipe_info",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ### make_requests end ### */
|
/* ### make_requests end ### */
|
||||||
|
|
Loading…
Reference in a new issue