Funzione CreatePipe (namedpipeapi.h)
Crea una pipe anonima e restituisce handle alle estremità di lettura e scrittura della pipe.
Sintassi
BOOL CreatePipe(
[out] PHANDLE hReadPipe,
[out] PHANDLE hWritePipe,
[in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
[in] DWORD nSize
);
Parametri
[out] hReadPipe
Puntatore a una variabile che riceve l'handle di lettura per la pipe.
[out] hWritePipe
Puntatore a una variabile che riceve l'handle di scrittura per la pipe.
[in, optional] lpPipeAttributes
Puntatore a una struttura di SECURITY_ATTRIBUTES che determina se l'handle restituito può essere ereditato dai processi figlio. Se lpPipeAttributes è NULL, l'handle non può essere ereditato.
Il lpSecurityDescriptor membro della struttura specifica un descrittore di sicurezza per la nuova pipe. Se lpPipeAttributes è NULL, la pipe ottiene un descrittore di sicurezza predefinito. Gli ACL nel descrittore di sicurezza predefinito per una pipe provengono dal token primario o di rappresentazione dell'autore.
[in] nSize
Dimensioni del buffer per la pipe, in byte. La dimensione è solo un suggerimento; il sistema usa il valore per calcolare un meccanismo di buffering appropriato. Se questo parametro è zero, il sistema usa le dimensioni predefinite del buffer.
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 ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
CreatePipe crea la pipe, assegnando le dimensioni della pipe specificate al buffer di archiviazione. CreatePipe crea anche gli handle usati dal processo per leggere e scrivere nel buffer nelle chiamate successive al ReadFile e funzioni writeFile.
Per leggere dalla pipe, un processo usa l'handle di lettura in una chiamata alla funzione ReadFile
Quando un processo usa writeFile per scrivere in una pipe anonima, l'operazione di scrittura non viene completata finché non vengono scritti tutti i byte. Se il buffer della pipe è pieno prima della scrittura di tutti i byte, WriteFile non restituisce finché un altro processo o thread non usa ReadFile per rendere disponibile più spazio nel buffer.
Le pipe anonime vengono implementate usando una named pipe con un nome univoco. Pertanto, è spesso possibile passare un handle a una pipe anonima a una funzione che richiede un handle a una named pipe.
Se CreatePipe ha esito negativo, il contenuto dei parametri di output è indeterminato. Nessun presupposto dovrebbe essere fatto sul loro contenuto in questo evento.
Per liberare le risorse usate da una pipe, l'applicazione deve sempre chiudere gli handle quando non sono più necessari, che viene eseguita chiamando la funzione CloseHandle o quando termina il processo associato agli handle di istanza. Si noti che a un'istanza di una pipe possono essere associati più handle. Un'istanza di una pipe viene sempre eliminata quando l'ultimo handle all'istanza della named pipe viene chiuso.
Esempi
Per un esempio, vedere Creazione di un processo figlio con input reindirizzato e output.
Fabbisogno
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 | Finestre |
intestazione |
namedpipeapi.h |
libreria |
Kernel32.lib |
dll | Kernel32.dll |
Vedere anche
funzioni pipe
panoramica di pipe