Función CreatePipe (namedpipeapi.h)
Crea una canalización anónima y devuelve identificadores a los extremos de lectura y escritura de la canalización.
Sintaxis
BOOL CreatePipe(
[out] PHANDLE hReadPipe,
[out] PHANDLE hWritePipe,
[in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
[in] DWORD nSize
);
Parámetros
[out] hReadPipe
Puntero a una variable que recibe el identificador de lectura de la canalización.
[out] hWritePipe
Puntero a una variable que recibe el identificador de escritura de la canalización.
[in, optional] lpPipeAttributes
Puntero a una estructura de SECURITY_ATTRIBUTES que determina si los procesos secundarios pueden heredar el identificador devuelto. Si lpPipeAttributes es null, no se puede heredar el identificador.
El miembro lpSecurityDescriptor de la estructura especifica un descriptor de seguridad para la nueva canalización. Si lpPipeAttributes es NULL, la canalización obtiene un descriptor de seguridad predeterminado. Las ACL del descriptor de seguridad predeterminado para una canalización proceden del token principal o de suplantación del creador.
[in] nSize
Tamaño del búfer de la canalización, en bytes. El tamaño es solo una sugerencia; el sistema usa el valor para calcular un mecanismo de almacenamiento en búfer adecuado. Si este parámetro es cero, el sistema usa el tamaño de búfer predeterminado.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero.
Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Observaciones
CreatePipe crea la canalización, asignando el tamaño de canalización especificado al búfer de almacenamiento. createPipe también crea identificadores que el proceso usa para leer y escribir en el búfer en llamadas posteriores al readFile y funciones de WriteFile.
Para leer desde la canalización, un proceso usa el identificador de lectura en una llamada a la función readFile
Cuando un proceso usa writeFile para escribir en una canalización anónima, la operación de escritura no se completa hasta que se escriben todos los bytes. Si el búfer de canalización está lleno antes de escribir todos los bytes, WriteFile no devuelve hasta que otro proceso o subproceso usa ReadFile para que haya más espacio disponible en el búfer.
Las canalizaciones anónimas se implementan mediante una canalización con nombre con un nombre único. Por lo tanto, a menudo puede pasar un identificador a una canalización anónima a una función que requiere un identificador para una canalización con nombre.
Si se produce un error en CreatePipe, el contenido de los parámetros de salida es indeterminado. No se debe realizar ninguna suposición sobre su contenido en este evento.
Para liberar recursos usados por una canalización, la aplicación siempre debe cerrar los identificadores cuando ya no sean necesarios, lo que se logra llamando a la función CloseHandle o cuando finaliza el proceso asociado a los identificadores de instancia. Tenga en cuenta que una instancia de una canalización puede tener más de un identificador asociado. Una instancia de una canalización siempre se elimina cuando se cierra el último identificador de la instancia de la canalización con nombre.
Ejemplos
Para obtener un ejemplo, vea Creación de un proceso secundario con entrada y salida redirigidos.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
namedpipeapi.h |
biblioteca de |
Kernel32.lib |
DLL de |
Kernel32.dll |
Consulte también
funciones de canalización de
de información general de canalizaciones de