Compartir a través de


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 . readFile devuelve cuando se cumple una de las siguientes condiciones: una operación de escritura se completa en el final de escritura de la canalización, se ha leído el número de bytes solicitados o se produce un error.

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

ReadFile

SECURITY_ATTRIBUTES

WriteFile