Condividi tramite


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 . ReadFile restituisce quando è true una delle operazioni di scrittura seguenti: un'operazione di scrittura viene completata alla fine della scrittura della pipe, il numero di byte richiesti è stata letta o si verifica un errore.

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

ReadFile

SECURITY_ATTRIBUTES

WriteFile