Receive a message from a
Channel, if one is waiting to be received.
A maximum of 4 handles can be transferred by each message. The maximum number of bytes is currently 4096.
a- the handle to the
Channelend that is receiving the message. The handle must have the
b- a pointer to the array of bytes to put the message into
c- the size of the bytes buffer
d- a pointer to the array of handle entries to transfer. This may be
0x0if the receiver does not expect to receive any handles.
e- the size of the handles buffer (in handles)
0..16 are a status code:
0if the message was received successfully. The rest of the return value is valid.
Channelhandle is invalid.
Channelhandle does not point to a
3if there was no message to receive.
4if the address of the bytes buffer is invalid.
5if the bytes buffer is too small to contain the message.
6if the address of the handles buffer is invalid, or if
0x0was passed and the message does contain handles.
7if the handles buffer is too small to contain the handles transferred with the message.
If the status code is
0 (i.e. a valid message was written into the bytes and handles buffers), the return value
also contains the number of valid entries in both the byte and handle buffers:
16..32contain the length of the valid byte buffer (in bytes). If the passed buffer was larger than this, the remaining bytes have not been written by the kernel.
32..48contain the length of the valid handles buffer (in handles). If the passed buffer was larger than this, the remaining bytes have not been written by the kernel.