[ros-dev] Re: [ros-diffs] [weiden] 18883: fix some flags calculations and access rights in CreateNamedPipe and CreatePipe

Hartmut Birr osexpert at googlemail.com
Mon Oct 31 15:49:36 CET 2005


weiden at svn.reactos.com wrote:
> fix some flags calculations and access rights in CreateNamedPipe and CreatePipe
> Modified: trunk/reactos/lib/kernel32/file/pipe.c
>   
> ------------------------------------------------------------------------
> *Modified: trunk/reactos/lib/kernel32/file/pipe.c*
> --- trunk/reactos/lib/kernel32/file/pipe.c	2005-10-30 13:55:28 UTC (rev 18882)
> +++ trunk/reactos/lib/kernel32/file/pipe.c	2005-10-30 14:51:12 UTC (rev 18883)
> @@ -86,10 +89,10 @@
>   
>       }
>  
>     Status = NtOpenFile(&WritePipeHandle,
>   
> -		       FILE_GENERIC_WRITE,
>   
> +		       FILE_GENERIC_WRITE | SYNCHRONIZE,
>   
>  		       &ObjectAttributes,
>  		       &StatusBlock,
>   
> -		       0,
>   
> +		       FILE_SHARE_READ | FILE_SHARE_WRITE,
>   
>  		       FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE);
>     if (!NT_SUCCESS(Status))
>       {
>   

This change does break the using of pipes which are created by 
CreatePipe. Usually it isn't necessary to open the end of the pipe in 
share mode. Each opening request generates a new instance of a pipe. 
FILE_SHARE_READ doesn't make sense, because this pipe-end is opened for 
write access. If FILE_SHARE_READ|FILE_SHARE_WRITE is used, npfs.sys 
interprets it as a special value and doesn't connect the pipe. This 
breaks compiling ros on ros.

- Hartmut


More information about the Ros-dev mailing list