A named pipe can be accessed much like a file.
Win32 SDK functions CreateFile, ReadFile, WriteFile and CloseHandle open, read from, write to, and close a pipe, respectively. Unlike Unix, there is no
command line interface, except for
PowerShell. Named pipes cannot be created as files within a normal filesystem, unlike in Unix. Also unlike their Unix counterparts, named pipes are volatile (removed after the last reference to them is closed). Every pipe is placed in the root directory of the named pipe filesystem (NPFS), mounted under the special path \\.\pipe\ (that is, a pipe named "
foo" would have a full path name of \\.\pipe\foo). Anonymous pipes used in pipelining are actually named pipes with a random name. They are very rarely seen by users, but there are notable exceptions. The
VMware Workstation PC hardware
virtualization tool, for instance, can expose emulated
serial ports to the host system as named pipes, and the
WinDbg kernel mode
debugger from
Microsoft supports named pipes as a transport for debugging sessions (in fact, VMware and WinDbg can be coupled together – as WinDbg normally requires a serial connection to the target computer – letting
driver developers do their development and testing on a single computer). Both programs require the user to enter names in the \\.\pipe\
name form. Windows NT named pipes can inherit a security context. Summary of named pipes on Microsoft Windows: • Intermachine and intramachine IPC •
Half-duplex or
full-duplex •
Byte-oriented or
packet-oriented •
Reliable •
Connection-oriented communication • Blocking or Nonblocking read and write (choosable) • Standard device I/O handles (ReadFile, WriteFile) •
Namespace used to create handles • Inefficient WAN traffic (explicit data transfer request, unlike e.g. TCP/IP sliding window, etc.) • Peekable reads (read without removing from pipe's input buffer) The
.NET Framework 3.5 has added named pipe support. Named pipes can also be used as an endpoint in
Microsoft SQL Server. Named pipes are also a networking protocol in the
Server Message Block (SMB) suite, based on the use of a special
inter-process communication (IPC) share. SMB's IPC can seamlessly and transparently pass the authentication context of the user across to Named Pipes. Windows NT's entire
NT Domain protocol suite of services are implemented as
DCE/RPC service over Named Pipes, as are the Exchange 5.5 Administrative applications. == See also ==