Partager via


CreatePipe, fonction (namedpipeapi.h)

Crée un canal anonyme et retourne des handles aux extrémités de lecture et d’écriture du canal.

Syntaxe

BOOL CreatePipe(
  [out]          PHANDLE               hReadPipe,
  [out]          PHANDLE               hWritePipe,
  [in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
  [in]           DWORD                 nSize
);

Paramètres

[out] hReadPipe

Pointeur vers une variable qui reçoit le handle de lecture du canal.

[out] hWritePipe

Pointeur vers une variable qui reçoit le handle d’écriture pour le canal.

[in, optional] lpPipeAttributes

Pointeur vers une structure SECURITY_ATTRIBUTES qui détermine si le handle retourné peut être hérité par les processus enfants. Si lpPipeAttributes est NULL, le handle ne peut pas être hérité.

Le lpSecurityDescriptor membre de la structure spécifie un descripteur de sécurité pour le nouveau canal. Si lpPipeAttributes est NULL, le canal obtient un descripteur de sécurité par défaut. Les listes de contrôle d’accès dans le descripteur de sécurité par défaut pour un canal proviennent du jeton principal ou d’emprunt d’identité du créateur.

[in] nSize

Taille de la mémoire tampon pour le canal, en octets. La taille n’est qu’une suggestion ; le système utilise la valeur pour calculer un mécanisme de mise en mémoire tampon approprié. Si ce paramètre est égal à zéro, le système utilise la taille de mémoire tampon par défaut.

Valeur de retour

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

CreatePipe crée le canal, en affectant la taille de canal spécifiée à la mémoire tampon de stockage. CreatePipe crée également des handles que le processus utilise pour lire et écrire dans la mémoire tampon dans les appels suivants aux fonctions readFile et WriteFile.

Pour lire à partir du canal, un processus utilise le handle de lecture dans un appel à la fonction readFile . ReadFile retourne lorsque l’une des opérations suivantes est vraie : une opération d’écriture se termine sur la fin d’écriture du canal, le nombre d’octets demandés a été lu ou une erreur se produit.

Lorsqu’un processus utilise writeFile pour écrire dans un canal anonyme, l’opération d’écriture n’est pas terminée tant que tous les octets ne sont pas écrits. Si la mémoire tampon du canal est pleine avant l’écriture de tous les octets, writeFile ne retourne pas tant qu’un autre processus ou thread n’utilise ReadFile pour rendre plus d’espace tampon disponible.

Les canaux anonymes sont implémentés à l’aide d’un canal nommé avec un nom unique. Par conséquent, vous pouvez souvent passer un handle à un canal anonyme vers une fonction qui nécessite un handle vers un canal nommé.

Si CreatePipe échoue, le contenu des paramètres de sortie est indéterminé. Aucune hypothèse ne doit être faite sur leur contenu dans cet événement.

Pour libérer des ressources utilisées par un canal, l’application doit toujours fermer les handles lorsqu’elles ne sont plus nécessaires, ce qui est accompli soit en appelant la fonction CloseHandle, soit lorsque le processus associé aux handles d’instance se termine. Notez qu’une instance d’un canal peut avoir plusieurs handles associés. Une instance d’un canal est toujours supprimée lorsque le dernier handle vers l’instance du canal nommé est fermé.

Exemples

Pour obtenir un exemple, consultez Création d’un processus enfant avec desd’entrée et de sortie redirigées.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête namedpipeapi.h
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

fonctions de canal

Vue d’ensemble des canaux

readFile

SECURITY_ATTRIBUTES

writeFile