From 9ffce00940e447471034e2523f2e6af2fd5aafb7 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Tue, 24 Feb 2004 01:06:30 +0000 Subject: [PATCH] Pass inherit handle flag properly for CreateNamedPipe. --- dlls/kernel/sync.c | 1 + include/wine/server_protocol.h | 3 ++- server/named_pipe.c | 2 +- server/protocol.def | 1 + server/trace.c | 1 + 5 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c index 6a40c0039ab..316e3d5ec35 100644 --- a/dlls/kernel/sync.c +++ b/dlls/kernel/sync.c @@ -1062,6 +1062,7 @@ HANDLE WINAPI CreateNamedPipeW( LPCWSTR name, DWORD dwOpenMode, req->outsize = nOutBufferSize; req->insize = nInBufferSize; req->timeout = nDefaultTimeOut; + req->inherit = (attr && (attr->nLength>=sizeof(*attr)) && attr->bInheritHandle); wine_server_add_data( req, name, len * sizeof(WCHAR) ); SetLastError(0); if (!wine_server_call_err( req )) ret = reply->handle; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index fa435a47515..9c30d021928 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -2414,6 +2414,7 @@ struct create_named_pipe_request unsigned int outsize; unsigned int insize; unsigned int timeout; + int inherit; /* VARARG(name,unicode_str); */ }; struct create_named_pipe_reply @@ -3762,6 +3763,6 @@ union generic_reply struct set_global_windows_reply set_global_windows_reply; }; -#define SERVER_PROTOCOL_VERSION 131 +#define SERVER_PROTOCOL_VERSION 132 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/named_pipe.c b/server/named_pipe.c index b69eec68986..0ea4e5c0699 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -629,7 +629,7 @@ DECL_HANDLER(create_named_pipe) { server->state = ps_idle_server; reply->handle = alloc_handle( current->process, server, - GENERIC_READ|GENERIC_WRITE, 0 ); + GENERIC_READ|GENERIC_WRITE, req->inherit ); server->pipe->instances++; release_object( server ); } diff --git a/server/protocol.def b/server/protocol.def index f8384782a28..ac8e0d82c54 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -1705,6 +1705,7 @@ enum message_type 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 */ diff --git a/server/trace.c b/server/trace.c index 4319f6dd158..caea2d67af5 100644 --- a/server/trace.c +++ b/server/trace.c @@ -2005,6 +2005,7 @@ static void dump_create_named_pipe_request( const struct create_named_pipe_reque 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 ); }