DosMakePipe

This call creates a pipe.

Syntax
DosMakePipe (ReadHandle, WriteHandle, PipeSize)

Parameters

 * ReadHandle (PHFILE) - output: Address of the read handle of the pipe.
 * WriteHandle (PHFILE) - output: Address of the write handle of the pipe.
 * PipeSize (USHORT) - input: Storage size, in bytes, to reserve for the pipe.

Return Code

 * rc (USHORT) - return:Return code descriptions are:
 * 0 NO_ERROR
 * 4 ERROR_TOO_MANY_OPEN_FILES
 * 8 ERROR_NOT_ENOUGH_MEMORY
 * 109 ERROR_BROKEN_PIPE

Remarks
Pipes are mechanisms used within a closely related group of processes. There are no control, permission mechanisms, or checks performed on operations to pipes.

When there is insufficient space in a pipe for the data being written, a requesting thread blocks until enough data is removed to allow the write request to be satisfied. If the PipeSize parameter is 0, then the pipe is created with a default size of 512 bytes.

When all users close the handles, a pipe is deleted. If two processes are communicating by a pipe and the process reading the pipe ends, the next write gets the "ERROR_BROKEN_PIPE" error code.

C

 * 1) define INCL_DOSQUEUES

USHORT rc = DosMakePipe(ReadHandle, WriteHandle, PipeSize);

PHFILE ReadHandle;    /* Address to put read handle (returned) */ PHFILE WriteHandle;   /* Address to put write handle (returned) */ USHORT PipeSize;      /* Size to reserve for the pipe */

USHORT rc;            /* return code */ 

MASM
 EXTRN DosMakePipe:FAR INCL_DOSQUEUES     EQU 1

PUSH@ WORD    ReadHandle    ;Read handle (returned) PUSH@ WORD    WriteHandle   ;Write handle (returned) PUSH  WORD    PipeSize      ;Size to reserve for the pipe CALL  DosMakePipe

Returns WORD 