Export (0) Print
Expand All

AnonymousPipeClientStream Class

Exposes the client side of an anonymous pipe stream, which supports both synchronous and asynchronous read and write operations.

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.IO.Pipes.PipeStream
        System.IO.Pipes.AnonymousPipeClientStream

Namespace:  System.IO.Pipes
Assembly:  System.Core (in System.Core.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class AnonymousPipeClientStream : PipeStream

The AnonymousPipeClientStream type exposes the following members.

  NameDescription
Public methodAnonymousPipeClientStream(String)Initializes a new instance of the AnonymousPipeClientStream class with the specified string representation of the pipe handle.
Public methodAnonymousPipeClientStream(PipeDirection, SafePipeHandle)Initializes a new instance of the AnonymousPipeClientStream class from the specified handle.
Public methodAnonymousPipeClientStream(PipeDirection, String)Initializes a new instance of the AnonymousPipeClientStream class with the specified pipe direction and a string representation of the pipe handle.
Top

  NameDescription
Public propertyCanReadGets a value indicating whether the current stream supports read operations. (Inherited from PipeStream.)
Public propertyCanSeekGets a value indicating whether the current stream supports seek operations. (Inherited from PipeStream.)
Public propertyCanTimeoutGets a value that determines whether the current stream can time out. (Inherited from Stream.)
Public propertyCanWriteGets a value indicating whether the current stream supports write operations. (Inherited from PipeStream.)
Public propertyInBufferSizeGets the size, in bytes, of the inbound buffer for a pipe. (Inherited from PipeStream.)
Public propertyIsAsyncGets a value indicating whether a PipeStream object was opened asynchronously or synchronously. (Inherited from PipeStream.)
Public propertyIsConnectedGets or sets a value indicating whether a PipeStream object is connected. (Inherited from PipeStream.)
Public propertyIsMessageCompleteGets a value indicating whether there is more data in the message returned from the most recent read operation. (Inherited from PipeStream.)
Public propertyLengthGets the length of a stream, in bytes. (Inherited from PipeStream.)
Public propertyOutBufferSizeGets the size, in bytes, of the outbound buffer for a pipe. (Inherited from PipeStream.)
Public propertyPositionGets or sets the current position of the current stream. (Inherited from PipeStream.)
Public propertyReadModeSets the reading mode for the AnonymousPipeClientStream object. (Overrides PipeStream.ReadMode.)
Public propertyReadTimeoutGets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out. (Inherited from Stream.)
Public propertySafePipeHandleGets the safe handle for the local end of the pipe that the current PipeStream object encapsulates. (Inherited from PipeStream.)
Public propertyTransmissionModeGets the pipe transmission mode supported by the current pipe. (Overrides PipeStream.TransmissionMode.)
Public propertyWriteTimeoutGets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out. (Inherited from Stream.)
Top

  NameDescription
Public methodBeginReadBegins an asynchronous read operation. (Inherited from PipeStream.)
Public methodBeginWriteBegins an asynchronous write operation. (Inherited from PipeStream.)
Protected methodCheckPipePropertyOperationsInfrastructure. Verifies that the pipe is in a proper state for getting or setting properties. (Inherited from PipeStream.)
Protected methodCheckReadOperationsInfrastructure. Verifies that the pipe is in a connected state for read operations. (Inherited from PipeStream.)
Protected methodCheckWriteOperationsInfrastructure. Verifies that the pipe is in a connected state for write operations. (Inherited from PipeStream.)
Public methodCloseCloses the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Instead of calling this method, ensure that the stream is properly disposed. (Inherited from Stream.)
Public methodCopyTo(Stream)Reads the bytes from the current stream and writes them to another stream. (Inherited from Stream.)
Public methodCopyTo(Stream, Int32)Reads the bytes from the current stream and writes them to another stream, using a specified buffer size. (Inherited from Stream.)
Public methodCopyToAsync(Stream)Asynchronously reads the bytes from the current stream and writes them to another stream. (Inherited from Stream.)
Public methodCopyToAsync(Stream, Int32)Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size. (Inherited from Stream.)
Public methodCopyToAsync(Stream, Int32, CancellationToken)Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token. (Inherited from Stream.)
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodDispose()Releases all resources used by the Stream. (Inherited from Stream.)
Public methodEndReadEnds a pending asynchronous read request. (Inherited from PipeStream.)
Public methodEndWriteEnds a pending asynchronous write request. (Inherited from PipeStream.)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodFlushClears the buffer for the current stream and causes any buffered data to be written to the underlying device. (Inherited from PipeStream.)
Public methodFlushAsync()Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device. (Inherited from Stream.)
Public methodFlushAsync(CancellationToken)Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests. (Inherited from Stream.)
Public methodGetAccessControlGets a PipeSecurity object that encapsulates the access control list (ACL) entries for the pipe described by the current PipeStream object. (Inherited from PipeStream.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodReadReads a block of bytes from a stream and writes the data to a specified buffer. (Inherited from PipeStream.)
Public methodReadAsync(Byte[], Int32, Int32)Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. (Inherited from Stream.)
Public methodReadAsync(Byte[], Int32, Int32, CancellationToken)Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests. (Inherited from Stream.)
Public methodReadByteReads a byte from a pipe. (Inherited from PipeStream.)
Public methodSeekSets the current position of the current stream to the specified value. (Inherited from PipeStream.)
Public methodSetAccessControlApplies the access control list (ACL) entries specified by a PipeSecurity object to the pipe specified by the current PipeStream object. (Inherited from PipeStream.)
Public methodSetLengthSets the length of the current stream to the specified value. (Inherited from PipeStream.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodWaitForPipeDrainWaits for the other end of the pipe to read all sent bytes. (Inherited from PipeStream.)
Public methodWriteWrites a block of bytes to the current stream using data from a buffer. (Inherited from PipeStream.)
Public methodWriteAsync(Byte[], Int32, Int32)Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. (Inherited from Stream.)
Public methodWriteAsync(Byte[], Int32, Int32, CancellationToken)Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests. (Inherited from Stream.)
Public methodWriteByteWrites a byte to the current stream. (Inherited from PipeStream.)
Top

  NameDescription
Public Extension MethodAsInputStreamConverts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime. (Defined by WindowsRuntimeStreamExtensions.)
Public Extension MethodAsOutputStreamConverts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime. (Defined by WindowsRuntimeStreamExtensions.)
Top

Anonymous pipes help provide safe and secure interprocess communication between child and parent processes. The AnonymousPipeClientStream class enables a child process to connect to and exchange information with a parent process.

Anonymous pipes are unnamed, one-way pipes that typically transfer data between parent and child processes. Anonymous pipes are always local; they cannot be used over a network. A PipeDirection value of InOut is not supported because anonymous pipes are defined to be one-way.

Anonymous pipes do not support Message read modes.

The client side of an anonymous pipe must be created from a pipe handle provided by the server side by calling the GetClientHandleAsString method. The string is then passed as a parameter when creating the client process. From the client process, it is passed to the AnonymousPipeClientStream constructor as the pipeHandleAsString parameter.

NoteNote

For Windows XP Professional and Windows 2000 Server, a maximum of 10 pipes can simultaneously connect over the network.

NoteNote

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: MayLeakOnAbort. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

The following example demonstrates a way to send a string from a parent process to a child process by using anonymous pipes. This example creates an AnonymousPipeServerStream object in a parent process with a PipeDirection value of Out. It also creates an AnonymousPipeClientStream object in a child process with a PipeDirection value of In. The parent process then sends a user-supplied string to the child process. The string is displayed to the console.

This example is for the client process, which is started by the server process. Name the resulting executable from the client code pipeClient.exe and copy it to the same directory as the server executable when you run this example. For the entire code example, including the code for both the pipe client and server, see How to: Use Anonymous Pipes for Local Interprocess Communication.

using System;
using System.IO;
using System.IO.Pipes;

class PipeClient
{
    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            using (PipeStream pipeClient =
                new AnonymousPipeClientStream(PipeDirection.In, args[0]))
            {
                // Show that anonymous Pipes do not support Message mode. 
                try
                {
                    Console.WriteLine("[CLIENT] Setting ReadMode to \"Message\".");
                    pipeClient.ReadMode = PipeTransmissionMode.Message;
                }
                catch (NotSupportedException e)
                {
                    Console.WriteLine("[CLIENT] Execption:\n    {0}", e.Message);
                }

                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.",
                   pipeClient.TransmissionMode);

                using (StreamReader sr = new StreamReader(pipeClient))
                {
                    // Display the read text to the console 
                    string temp;

                    // Wait for 'sync message' from the server. 
                    do
                    {
                        Console.WriteLine("[CLIENT] Wait for sync...");
                        temp = sr.ReadLine();
                    }
                    while (!temp.StartsWith("SYNC"));

                    // Read the server data and echo to the console. 
                    while ((temp = sr.ReadLine()) != null)
                    {
                        Console.WriteLine("[CLIENT] Echo: " + temp);
                    }
                }
            }
        }
        Console.Write("[CLIENT] Press Enter to continue...");
        Console.ReadLine();
    }
}

.NET Framework

Supported in: 4.5, 4, 3.5

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft