DosSetNmPHandState: Difference between revisions
Appearance
mNo edit summary |
mNo edit summary |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
==Parameters== | ==Parameters== | ||
;Handle (HPIPE) - input : | ;Handle (HPIPE) - input: Handle of the named pipe returned by [[DosMakeNmPipe]] or DosOpen. | ||
;PipeHandleState (USHORT) - input : Named pipe handle state, consists of the following bit fields: | ;PipeHandleState (USHORT) - input: Named pipe handle state, consists of the following bit fields: | ||
:15 - Blocking flag: | :15 - Blocking flag: | ||
::0 = Reads /Writes block if no data available. | ::0 = Reads /Writes block if no data available. | ||
::1 = Reads/Writes return immediately if no data available. | ::1 = Reads/Writes return immediately if no data available. | ||
::Reads normally block until at least partial data can be returned. Writes by default block until all bytes requested have been written. | ::Reads normally block until at least partial data can be returned. Writes by default block until all bytes requested have been written. | ||
::Non-blocking mode (B = 1) changes this | ::Non-blocking mode (B = 1) changes this behaviour as follows: | ||
::*DosRead - Returns BytesRead = 0 if no data is available. | ::*DosRead - Returns BytesRead = 0 if no data is available. | ||
::*DosWrite - Returns BytesWritten = 0 if there is not enough buffer space available in the pipe. Otherwise, the entire data area is transferred. | ::*DosWrite - Returns BytesWritten = 0 if there is not enough buffer space available in the pipe. Otherwise, the entire data area is transferred. | ||
:14-10 - Reserved and must be set to zero. | :14 - Reserved and must be set to zero. | ||
:13-11 - timer (values approximate from 0 to 14 seconds in 2 second increments) | |||
:10 - Reserved and must be set to zero. | |||
:9-8 - Read Mode flag: | :9-8 - Read Mode flag: | ||
::00 = Read pipe as byte stream. | ::00 = Read pipe as byte stream. | ||
::01 = Read pipe as a message stream. | ::01 = Read pipe as a message stream. | ||
:7-0 - Reserved and must be set to zero. | :7-0 - Reserved and must be set to zero. | ||
==Return Code== | ==Return Code== | ||
;rc (USHORT) - return:Return code descriptions are: | |||
Return code descriptions are: | *0 NO_ERROR | ||
* 0 | *87 ERROR_INVALID_PARAMETER | ||
* 87 | *230 ERROR_BAD_PIPE | ||
* 230 | *231 ERROR_PIPE_BUSY | ||
* 231 | *233 ERROR_PIPE_NOT_CONNECTED | ||
* 233 | |||
==Remarks== | ==Remarks== | ||
The read mode and blocking/non-blocking mode of a named pipe can be changed. The pipe mode can not be changed to non-blocking when another thread is blocked on an I/O to the same end of the pipe. | The read mode and blocking/non-blocking mode of a named pipe can be changed. The pipe mode can not be changed to non-blocking when another thread is blocked on an I/O to the same end of the pipe. | ||
== | ==Bindings== | ||
=== C | === C === | ||
<PRE> | <PRE> | ||
#define INCL_DOSNMPIPES | #define INCL_DOSNMPIPES | ||
Line 39: | Line 40: | ||
USHORT rc = DosSetNmPHandState(Handle, PipeHandleState); | USHORT rc = DosSetNmPHandState(Handle, PipeHandleState); | ||
HPIPE | HPIPE Handle; /* Pipe handle */ | ||
USHORT | USHORT PipeHandleState; /* Pipe handle state */ | ||
USHORT | USHORT rc; /* return code */ | ||
</PRE> | </PRE> | ||
===MASM | |||
===MASM=== | |||
<PRE> | <PRE> | ||
EXTRN DosSetNmPHandState:FAR | EXTRN DosSetNmPHandState:FAR | ||
Line 55: | Line 57: | ||
Returns WORD | Returns WORD | ||
</PRE> | </PRE> | ||
==Related Functions== | ==Related Functions== | ||
* | * [[DosRead]] | ||
[[Category: | [[Category:Dos16]] |
Latest revision as of 07:50, 26 January 2020
This call sets the read and blocking modes of a named pipe.
Syntax
DosSetNmPHandState (Handle, PipeHandleState)
Parameters
- Handle (HPIPE) - input
- Handle of the named pipe returned by DosMakeNmPipe or DosOpen.
- PipeHandleState (USHORT) - input
- Named pipe handle state, consists of the following bit fields:
- 15 - Blocking flag:
- 0 = Reads /Writes block if no data available.
- 1 = Reads/Writes return immediately if no data available.
- Reads normally block until at least partial data can be returned. Writes by default block until all bytes requested have been written.
- Non-blocking mode (B = 1) changes this behaviour as follows:
- DosRead - Returns BytesRead = 0 if no data is available.
- DosWrite - Returns BytesWritten = 0 if there is not enough buffer space available in the pipe. Otherwise, the entire data area is transferred.
- 14 - Reserved and must be set to zero.
- 13-11 - timer (values approximate from 0 to 14 seconds in 2 second increments)
- 10 - Reserved and must be set to zero.
- 9-8 - Read Mode flag:
- 00 = Read pipe as byte stream.
- 01 = Read pipe as a message stream.
- 7-0 - Reserved and must be set to zero.
Return Code
- rc (USHORT) - return
- Return code descriptions are:
- 0 NO_ERROR
- 87 ERROR_INVALID_PARAMETER
- 230 ERROR_BAD_PIPE
- 231 ERROR_PIPE_BUSY
- 233 ERROR_PIPE_NOT_CONNECTED
Remarks
The read mode and blocking/non-blocking mode of a named pipe can be changed. The pipe mode can not be changed to non-blocking when another thread is blocked on an I/O to the same end of the pipe.
Bindings
C
#define INCL_DOSNMPIPES USHORT rc = DosSetNmPHandState(Handle, PipeHandleState); HPIPE Handle; /* Pipe handle */ USHORT PipeHandleState; /* Pipe handle state */ USHORT rc; /* return code */
MASM
EXTRN DosSetNmPHandState:FAR INCL_DOSNMPIPES EQU 1 PUSH WORD Handle ;Pipe handle PUSH WORD PipeHandleState ;Pipe handle state CALL DosSetNmPHandState Returns WORD