Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die CreatePipe-Funktion erstellt eine anonyme Pipe und gibt zwei Ziehpunkte zurück: ein Lesekästchen an die Pfeife und ein Schreibkästchen für die Pfeife. Der Lesepunkt verfügt über schreibgeschützten Zugriff auf die Pipe, und der Schreibpunkt verfügt über schreibgeschützten Zugriff auf die Pipe. Um mit der Pipe zu kommunizieren, muss der Pipeserver einen Pipehandle an einen anderen Prozess übergeben. In der Regel erfolgt dies durch Vererbung; d. h. der Prozess ermöglicht es dem Handle, von einem untergeordneten Prozess geerbt zu werden. Der Prozess kann auch ein Pipehandle mithilfe der DuplicateHandle--Funktion duplizieren und ihn mithilfe einer Form der Interprocess-Kommunikation, z. B. DDE oder freigegebenem Speicher, an einen nicht verknüpften Prozess senden.
Ein Pipeserver kann entweder das Lesehandle oder den Schreibhandle an den Pipeclient senden, je nachdem, ob der Client die anonyme Pipe zum Senden von Informationen oder zum Empfangen von Informationen verwenden soll. Verwenden Sie zum Lesen aus der Pipe den Lesepunkt des Pipes in einem Aufruf der ReadFile--Funktion. Der ReadFile- Aufruf wird zurückgegeben, wenn ein anderer Prozess in die Pipe geschrieben wurde. Der ReadFile- Aufruf kann auch zurückgeben, wenn alle Schreibhandles an die Pipe geschlossen wurden oder ein Fehler auftritt, bevor der Lesevorgang abgeschlossen wurde.
Zum Schreiben in die Pfeife verwenden Sie den Schreibpunkt der Pfeife in einem Aufruf der WriteFile--Funktion. Der WriteFile-aufruf wird erst zurückgegeben, wenn er die angegebene Anzahl von Bytes in die Pipe geschrieben hat oder ein Fehler auftritt. Wenn der Pipepuffer voll ist und mehr Bytes geschrieben werden müssen, wird WriteFile- erst zurückgegeben, wenn ein anderer Prozess aus der Pipe gelesen wird, wodurch mehr Pufferspeicher verfügbar ist. Der Pipeserver gibt die Puffergröße für die Pipe an, wenn sie CreatePipeaufruft.
Asynchrone (überlappende) Lese- und Schreibvorgänge werden von anonymen Rohren nicht unterstützt. Dies bedeutet, dass Sie die ReadFileEx- und WriteFileEx--Funktionen nicht mit anonymen Rohren verwenden können. Darüber hinaus wird der lpOverlapped Parameter von ReadFile und WriteFile- ignoriert, wenn diese Funktionen mit anonymen Pipes verwendet werden.
Es ist eine anonyme Pfeife vorhanden, bis alle Rohrziehpunkte geschlossen wurden, sowohl lese- als auch schreibgeschützt. Ein Prozess kann seine Rohrziehpunkte mithilfe der CloseHandle--Funktion schließen. Alle Rohrziehpunkte werden auch geschlossen, wenn der Prozess beendet wird.
Anonyme Rohre werden mithilfe einer benannten Pipe mit einem eindeutigen Namen implementiert. Daher können Sie häufig ein Handle an eine anonyme Pipe an eine Funktion übergeben, die einen Handle an eine benannte Pfeife erfordert.