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 |
---|---|
|
Non attende la pipe denominata. Se la pipe denominata non è disponibile, la funzione restituisce un errore. |
|
Attende indefinito. |
|
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 |