Condividi tramite


Funzione CallNamedPipeA (winbase.h)

Si connette a una pipe di tipo messaggio (e attende se un'istanza della pipe non è disponibile), scrive e legge dalla pipe e quindi chiude la pipe.

Sintassi

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

Parametri

[in] lpNamedPipeName

Nome della pipe.

[in] lpInBuffer

Dati da scrivere nella pipe.

[in] nInBufferSize

Dimensioni del buffer di scrittura, in byte.

[out] lpOutBuffer

Puntatore al buffer che riceve i dati letti dalla pipe.

[in] nOutBufferSize

Dimensioni del buffer di lettura, in byte.

[out] lpBytesRead

Puntatore a una variabile che riceve il numero di byte letti dalla pipe.

[in] nTimeOut

Numero di millisecondi da attendere che la pipe denominata sia disponibile. Oltre ai valori numerici, è possibile specificare i valori speciali seguenti.

Valore Significato
NMPWAIT_NOWAIT
0x00000001
Non attende la pipe denominata. Se la pipe denominata non è disponibile, la funzione restituisce un errore.
NMPWAIT_WAIT_FOREVER
0xffffffff
Attende indefinito.
NMPWAIT_USE_DEFAULT_WAIT
0x00000000
Usa il timeout predefinito specificato in una chiamata alla funzione CreateNamedPipe .

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Se il messaggio scritto nella pipe dal processo del server è più lungo di nOutBufferSize, CallNamedPipe restituisce FALSE e GetLastError restituisce ERROR_MORE_DATA. Il resto del messaggio viene rimosso, perché CallNamedPipe chiude l'handle alla pipe prima di restituire.

Commenti

La chiamata a CallNamedPipe equivale a chiamare le funzioni CreateFile (o WaitNamedPipe, se CreateFile non può aprire immediatamente la pipe), Le funzioni TransactNamedPipe e CloseHandle. CreateFile viene chiamato con un flag di accesso di GENERIC_READ | GENERIC_WRITE e un flag di handle ereditato di FALSE.

CallNamedPipe ha esito negativo se la pipe è una pipe di tipo byte.

Windows 10 versione 1709: i pipe sono supportati solo all'interno di un contenitore di app, ovvero da un processo UWP a un altro processo UWP che fa parte della stessa app. Inoltre, i pipe denominati devono usare la sintassi \\.\pipe\LOCAL\ per il nome della pipe.

Esempio

Per un esempio, vedere Transazioni in Named Pipe.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Closehandle

CreateFile

CreateNamedPipe

Funzioni pipe

Panoramica di Pipe

TransactNamedPipe

WaitNamedPipe