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 realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

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 a las funciones ReadFile y 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: se completa una operación de escritura en el extremo de escritura de la canalización, el número de bytes solicitados se ha leído 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 que se escriban todos los bytes, WriteFile no devuelve hasta que otro proceso o subproceso usa ReadFile para que haya más espacio de búfer disponible.

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 deben realizar suposiciones 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 mediante una llamada a la función CloseHandle o cuando finaliza el proceso asociado con los identificadores de instancia. Tenga en cuenta que una instancia de una canalización puede tener más de un identificador asociado. Siempre se elimina una instancia de una canalización cuando se cierra el último identificador de la instancia de la canalización con nombre.

Ejemplos

Para obtener un ejemplo, vea Crear un proceso secundario con entrada y salida redirigidas.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado namedpipeapi.h
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Funciones de canalización

Información general sobre canalizaciones

ReadFile

SECURITY_ATTRIBUTES

WriteFile