Jump to content

DosMakePipe: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
mNo edit summary
Line 1: Line 1:
==Description==
This call creates a pipe.
This call creates a pipe.


==Syntax==
==Syntax==
<PRE>
  DosMakePipe (ReadHandle, WriteHandle, PipeSize)
  DosMakePipe


    (ReadHandle, WriteHandle, PipeSize)
</PRE>
==Parameters==
==Parameters==
; ReadHandle (PHFILE) - output : Address of the read handle of the pipe.  
;ReadHandle (PHFILE) - output : Address of the read handle of the pipe.  
 
;WriteHandle (PHFILE) - output : Address of the write 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.
 
; PipeSize (USHORT) - input : Storage size, in bytes, to reserve for the pipe.


==Return Code==
==Return Code==
  rc (USHORT) - return
  rc (USHORT) - return
Return code descriptions are:
Return code descriptions are:
* 0        NO_ERROR  
* 0        NO_ERROR  
* 4        ERROR_TOO_MANY_OPEN_FILES  
* 4        ERROR_TOO_MANY_OPEN_FILES  
Line 30: Line 22:
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 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.  
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.
 


==Example Code==
==Example Code==
Line 59: Line 50:
Returns WORD
Returns WORD
</PRE>
</PRE>
==Related Functions==
*


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 07:58, 13 February 2017

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.

Example Code

C Binding

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

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