CallNamedPipeA-Funktion (winbase.h)

Stellt eine Verbindung mit einer Pipe vom Typ Nachrichten her (und wartet, wenn ein instance der Pipe nicht verfügbar ist), schreibt in die Pipe und liest sie aus, und schließt dann die Pipe.

Syntax

BOOL CallNamedPipeA(
  [in]  LPCSTR  lpNamedPipeName,
  [in]  LPVOID  lpInBuffer,
  [in]  DWORD   nInBufferSize,
  [out] LPVOID  lpOutBuffer,
  [in]  DWORD   nOutBufferSize,
  [out] LPDWORD lpBytesRead,
  [in]  DWORD   nTimeOut
);

Parameter

[in] lpNamedPipeName

Der Pipename.

[in] lpInBuffer

Die Daten, die in die Pipe geschrieben werden sollen.

[in] nInBufferSize

Die Größe des Schreibpuffers in Bytes.

[out] lpOutBuffer

Ein Zeiger auf den Puffer, der die aus der Pipe gelesenen Daten empfängt.

[in] nOutBufferSize

Die Größe des Lesepuffers in Bytes.

[out] lpBytesRead

Ein Zeiger auf eine Variable, die die Anzahl der aus der Pipe gelesenen Bytes empfängt.

[in] nTimeOut

Die Anzahl der Millisekunden, die warten, bis die benannte Pipe verfügbar ist. Zusätzlich zu numerischen Werten können die folgenden speziellen Werte angegeben werden.

Wert Bedeutung
NMPWAIT_NOWAIT
0x00000001
Wartet nicht auf die benannte Pipe. Wenn die benannte Pipe nicht verfügbar ist, gibt die Funktion einen Fehler zurück.
NMPWAIT_WAIT_FOREVER
0xffffffff
Wartet unbegrenzt.
NMPWAIT_USE_DEFAULT_WAIT
0x00000000
Verwendet das Standardtimeout, das in einem Aufruf der CreateNamedPipe-Funktion angegeben ist.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Wenn die vom Serverprozess in die Pipe geschriebene Nachricht länger als nOutBufferSize ist, gibt CallNamedPipeFALSE zurück, und GetLastError gibt ERROR_MORE_DATA zurück. Der Rest der Nachricht wird verworfen, da CallNamedPipe das Handle vor der Rückgabe an die Pipe schließt.

Hinweise

Das Aufrufen von CallNamedPipe entspricht dem Aufrufen der Funktionen CreateFile (oder WaitNamedPipe, wenn CreateFile die Pipe nicht sofort öffnen kann), TransactNamedPipe und CloseHandle . CreateFile wird mit dem Zugriffsflag GENERIC_READ aufgerufen | GENERIC_WRITE und ein erbenes Handleflag von FALSE.

CallNamedPipe schlägt fehl, wenn es sich bei der Pipe um eine Pipe vom Typ Byte handelt.

Windows 10, Version 1709: Pipes werden nur in einem App-Container unterstützt, d. h. von einem UWP-Prozess zu einem anderen UWP-Prozess, der Teil derselben App ist. Außerdem müssen Named Pipes die Syntax \\.\pipe\LOCAL\ für den Pipenamen verwenden.

Beispiele

Ein Beispiel finden Sie unter Transaktionen in Named Pipes.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winbase.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CloseHandle

CreateFile

CreateNamedPipe

Pipefunktionen

Übersicht über Rohre

TransactNamedPipe

WaitNamedPipe