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
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 |