Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

AnonymousPipeServerStream-Klasse

Macht einen Stream um eine anonyme Pipe verfügbar, der synchrone und asynchrone Lese- und Schreibvorgänge unterstützt.

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

Namespace:  System.IO.Pipes
Assembly:  System.Core (in System.Core.dll)
[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class AnonymousPipeServerStream : PipeStream

Der AnonymousPipeServerStream-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode AnonymousPipeServerStream() Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse.
Öffentliche Methode AnonymousPipeServerStream(PipeDirection) Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse mit der angegebenen Piperichtung.
Öffentliche Methode AnonymousPipeServerStream(PipeDirection, HandleInheritability) Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse mit der angegebenen Piperichtung und dem angegebenen Vererbbarkeitsmodus.
Öffentliche Methode AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse aus den angegebenen Pipehandles.
Öffentliche Methode AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse mit der angegebenen Piperichtung, dem angegebenen Vererbbarkeitsmodus und der angegebenen Puffergröße.
Öffentliche Methode AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) Initialisiert eine neue Instanz der AnonymousPipeServerStream-Klasse mit der angegebenen Piperichtung, dem angegebenen Vererbbarkeitsmodus, der angegebenen Puffergröße und der angegebenen Pipesicherheit.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft CanRead Ruft einen Wert ab, der angibt, ob der aktuelle Stream Lesevorgänge unterstützt. (Von PipeStream geerbt.)
Öffentliche Eigenschaft CanSeek Ruft einen Wert ab, der angibt, ob der aktuelle Stream Suchvorgänge unterstützt. (Von PipeStream geerbt.)
Öffentliche Eigenschaft CanTimeout Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist. (Von Stream geerbt.)
Öffentliche Eigenschaft CanWrite Ruft einen Wert ab, der angibt, ob der aktuelle Stream Schreibvorgänge unterstützt. (Von PipeStream geerbt.)
Öffentliche Eigenschaft ClientSafePipeHandle Ruft das sichere Handle für das AnonymousPipeClientStream-Objekt ab, das gegenwärtig mit dem AnonymousPipeServerStream-Objekt verbunden ist.
Öffentliche Eigenschaft InBufferSize Ruft die Größe des Eingangspuffers für eine Pipe in Bytes ab. (Von PipeStream geerbt.)
Öffentliche Eigenschaft IsAsync Ruft einen Wert ab, der angibt, ob ein PipeStream-Objekt asynchron oder synchron geöffnet wurde. (Von PipeStream geerbt.)
Öffentliche Eigenschaft IsConnected Ruft einen Wert ab, der angibt, ob ein PipeStream-Objekt verbunden ist, oder legt diesen fest. (Von PipeStream geerbt.)
Geschützte Eigenschaft IsHandleExposed Ruft einen Wert ab, der angibt, ob ein Handle für ein PipeStream-Objekt verfügbar gemacht wurde. (Von PipeStream geerbt.)
Öffentliche Eigenschaft IsMessageComplete Ruft einen Wert ab, der angibt, ob in der vom letzten Lesevorgang zurückgegebenen Meldung weitere Daten vorhanden sind. (Von PipeStream geerbt.)
Öffentliche Eigenschaft Length Ruft die Länge eines Streams in Bytes ab. (Von PipeStream geerbt.)
Öffentliche Eigenschaft OutBufferSize Ruft die Größe des Ausgangspuffers für eine Pipe in Bytes ab. (Von PipeStream geerbt.)
Öffentliche Eigenschaft Position Ruft die aktuelle Position des aktuellen Streams ab oder legt diese fest. (Von PipeStream geerbt.)
Öffentliche Eigenschaft ReadMode Legt den Lesemodus für das AnonymousPipeServerStream-Objekt fest. Für anonyme Pipes muss der Übertragungsmodus Byte sein. (Überschreibt PipeStream.ReadMode.)
Öffentliche Eigenschaft ReadTimeout Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest. (Von Stream geerbt.)
Öffentliche Eigenschaft SafePipeHandle Ruft das sichere Handle für das lokale Ende der Pipe ab, die vom aktuellen PipeStream-Objekt gekapselt wird. (Von PipeStream geerbt.)
Öffentliche Eigenschaft TransmissionMode Ruft den von der aktuellen Pipe unterstützten Pipeübertragungsmodus ab. (Überschreibt PipeStream.TransmissionMode.)
Öffentliche Eigenschaft WriteTimeout Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest. (Von Stream geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode BeginRead Beginnt einen asynchronen Lesevorgang. (Von PipeStream geerbt.)
Öffentliche Methode BeginWrite Beginnt einen asynchronen Schreibvorgang. (Von PipeStream geerbt.)
Geschützte Methode CheckPipePropertyOperations Infrastruktur. Überprüft, ob sich die Pipe in einem ordnungsgemäßen Zustand zum Abrufen oder Festlegen von Eigenschaften befindet. (Von PipeStream geerbt.)
Geschützte Methode CheckReadOperations Infrastruktur. Überprüft, ob die Pipe verbunden ist, um Lesevorgänge auszuführen. (Von PipeStream geerbt.)
Geschützte Methode CheckWriteOperations Infrastruktur. Überprüft, ob die Pipe verbunden ist, um Schreibvorgänge auszuführen. (Von PipeStream geerbt.)
Öffentliche Methode Close Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles). (Von Stream geerbt.)
Öffentliche Methode CopyTo(Stream) Liest alle Bytes aus dem aktuellen Datenstrom und schreibt sie in den Zieldatenstrom. (Von Stream geerbt.)
Öffentliche Methode CopyTo(Stream, Int32) Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen Zieldatenstrom. (Von Stream geerbt.)
Öffentliche Methode CreateObjRef Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Von MarshalByRefObject geerbt.)
Geschützte Methode CreateWaitHandle Veraltet. Reserviert ein WaitHandle-Objekt. (Von Stream geerbt.)
Öffentliche Methode Dispose() Gibt sämtliche vom Stream verwendeten Ressourcen frei. (Von Stream geerbt.)
Geschützte Methode Dispose(Boolean) Gibt die von der PipeStream-Klasse verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei. (Von PipeStream geerbt.)
Öffentliche Methode DisposeLocalCopyOfClientHandle Schließt die lokale Kopie des Handles für das AnonymousPipeClientStream-Objekt.
Öffentliche Methode EndRead Beendet eine ausstehende asynchrone Leseanforderung. (Von PipeStream geerbt.)
Öffentliche Methode EndWrite Beendet eine ausstehende asynchrone Schreibanforderung. (Von PipeStream geerbt.)
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.)
Öffentliche Methode Flush Löscht den Puffer für den aktuellen Stream und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät. (Von PipeStream geerbt.)
Öffentliche Methode GetAccessControl Ruft ein PipeSecurity-Objekt ab, das die Einträge in der Zugriffssteuerungsliste für die Pipe kapselt, die vom aktuellen PipeStream-Objekt beschrieben wird. (Von PipeStream geerbt.)
Öffentliche Methode GetClientHandleAsString Ruft das Handle des verbundenen AnonymousPipeClientStream-Objekts als Zeichenfolge ab.
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetLifetimeService Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode InitializeHandle Initialisiert ein PipeStream-Objekt aus dem angegebenen SafePipeHandle-Objekt. (Von PipeStream geerbt.)
Öffentliche Methode InitializeLifetimeService Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.)
Geschützte Methode MemberwiseClone() Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte Methode MemberwiseClone(Boolean) Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.)
Geschützte Methode ObjectInvariant Infrastruktur. Bietet Unterstützung für das Contract. (Von Stream geerbt.)
Öffentliche Methode Read Liest einen Byteblock aus einem Stream und schreibt die Daten in einen angegebenen Puffer. (Von PipeStream geerbt.)
Öffentliche Methode ReadByte Liest ein Byte aus einer Pipe. (Von PipeStream geerbt.)
Öffentliche Methode Seek Legt die aktuelle Position des aktuellen Streams auf den angegebenen Wert fest. (Von PipeStream geerbt.)
Öffentliche Methode SetAccessControl Wendet von einem PipeSecurity-Objekt angegebene Einträge in Zugriffssteuerungslisten auf die vom aktuellen PipeStream-Objekt angegebene Pipe an. (Von PipeStream geerbt.)
Öffentliche Methode SetLength Legt die Länge des aktuellen Streams auf den angegebenen Wert fest. (Von PipeStream geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche Methode WaitForPipeDrain Wartet, bis das andere Ende der Pipe alle gesendeten Bytes gelesen hat. (Von PipeStream geerbt.)
Öffentliche Methode Write Schreibt einen Byteblock mit den Daten aus einem Puffer in den aktuellen Stream. (Von PipeStream geerbt.)
Öffentliche Methode WriteByte Schreibt ein Byte in den aktuellen Stream. (Von PipeStream geerbt.)
Zum Seitenanfang

Anonyme Pipes tragen zur sicheren prozessübergreifenden Kommunikation zwischen untergeordneten und übergeordneten Prozessen bei. Die AnonymousPipeServerStream-Klasse ermöglicht es einem übergeordneten Prozess, Informationen an einen untergeordneten Prozess zu senden oder von diesem zu empfangen.

Anonyme Pipes sind unbenannte, unidirektionale Pipes, die i. d. R. Daten zwischen übergeordneten und untergeordneten Prozessen übertragen. Anonyme Pipes sind immer lokal. Sie können nicht in einem Netzwerk verwendet werden. Der PipeDirection-Wert InOut wird nicht unterstützt, da anonyme Pipes als unidirektionale Pipes definiert sind.

Anonyme Pipes unterstützen keine Message-Lesemodi.

Die Clientseite einer anonymen Pipe muss über ein Pipehandle erstellt werden, das von der Serverseite durch Aufruf der GetClientHandleAsString-Methode bereitgestellt wird. Die Zeichenfolge wird dann beim Erstellen des Clientprozesses als Parameter übergeben. Anschließend wird sie vom Clientprozess als pipeHandleAsString-Parameter an den AnonymousPipeClientStream-Konstruktor übergeben.

Das AnonymousPipeServerStream-Objekt muss das Clienthandle mit der DisposeLocalCopyOfClientHandle-Methode verfügbar machen, um benachrichtigt zu werden, wenn der Client beendet wird.

Hinweis Hinweis

Für Windows XP Professional und Windows 2000 Server kann ein Maximum von 10 Pipes über das Netzwerk gleichzeitig eine Verbindung herstellen.

Hinweis Hinweis

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftswert: MayLeakOnAbort. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Das folgende Beispiel zeigt, wie eine Zeichenfolge mithilfe von anonymen Pipes von einem übergeordneten Prozess an einen untergeordneten Prozess gesendet werden kann. In diesem Beispiel wird ein AnonymousPipeServerStream-Objekt in einem übergeordneten Prozess mit dem PipeDirection-Wert Out erstellt. Es wird auch ein AnonymousPipeClientStream-Objekt in einem untergeordneten Prozess mit dem PipeDirection-Wert In erstellt. Der übergeordnete Prozess sendet daraufhin eine vom Benutzer bereitgestellte Zeichenfolge an den untergeordneten Prozess. Die Zeichenfolge wird in der Konsole angezeigt.

Dies ist ein Beispiel für den Serverprozess, der die AnonymousPipeServerStream-Klasse verwendet. Das gesamte Codebeispiel, einschließlich des Codes für Pipeclient und -server, finden Sie unter Gewusst wie: Verwenden von anonymen Pipes zur Kommunikation zwischen lokalen Prozessen.


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

class PipeServer
{
    static void Main()
    {
        Process pipeClient = new Process();

        pipeClient.StartInfo.FileName = "pipeClient.exe";

        using (AnonymousPipeServerStream pipeServer =
            new AnonymousPipeServerStream(PipeDirection.Out,
            HandleInheritability.Inheritable))
        {
            // Show that anonymous pipes do not support Message mode.
            try
            {
                Console.WriteLine("[SERVER] Setting ReadMode to \"Message\".");
                pipeServer.ReadMode = PipeTransmissionMode.Message;
            }
            catch (NotSupportedException e)
            {
                Console.WriteLine("[SERVER] Exception:\n    {0}", e.Message);
            }

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

            // Pass the client process a handle to the server.
            pipeClient.StartInfo.Arguments =
                pipeServer.GetClientHandleAsString();
            pipeClient.StartInfo.UseShellExecute = false;
            pipeClient.Start();

            pipeServer.DisposeLocalCopyOfClientHandle();

            try
            {
                // Read user input and send that to the client process.
                using (StreamWriter sw = new StreamWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    // Send a 'sync message' and wait for client to receive it.
                    sw.WriteLine("SYNC");
                    pipeServer.WaitForPipeDrain();
                    // Send the console input to the client process.
                    Console.Write("[SERVER] Enter text: ");
                    sw.WriteLine(Console.ReadLine());
                }
            }
            // Catch the IOException that is raised if the pipe is broken
            // or disconnected.
            catch (IOException e)
            {
                Console.WriteLine("[SERVER] Error: {0}", e.Message);
            }
        }

        pipeClient.WaitForExit();
        pipeClient.Close();
        Console.WriteLine("[SERVER] Client quit. Server terminating.");
    }
}


.NET Framework

Unterstützt in: 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ