The handle returned by the CreateNamedPipe function always has SYNCHRONIZE access. It also has GENERIC_READ, GENERIC_WRITE, or both, depending on the open mode of the pipe. The following are the access rights for each open mode.
Open mode | Access rights |
PIPE_ACCESS_DUPLEX | GENERIC_READ, GENERIC_WRITE, and SYNCHRONIZE |
PIPE_ACCESS_INBOUND | GENERIC_READ and SYNCHRONIZE |
PIPE_ACCESS_OUTBOUND | GENERIC_WRITE and SYNCHRONIZE |
GENERIC_READ access for a named pipe combines STANDARD_RIGHTS_READ access with rights that allow the process to read data from the named pipe and to read named-pipe attributes.
GENERIC_WRITE access for a named pipe combines STANDARD_RIGHTS_WRITE with rights that allow the process to write data to the named pipe and to write named-pipe attributes.