blob: 45efccff04762ff8733ff22162a7aea77d0790b4 [file] [log] [blame] [view]
# zx_stream_readv
## NAME
<!-- Updated by update-docs-from-fidl, do not edit. -->
Read data from a stream at the current seek offset.
## SYNOPSIS
<!-- Updated by update-docs-from-fidl, do not edit. -->
```c
#include <zircon/syscalls.h>
zx_status_t zx_stream_readv(zx_handle_t handle,
uint32_t options,
zx_iovec_t* vector,
size_t num_vector,
size_t* actual);
```
## DESCRIPTION
`zx_stream_readv()` attempts to read bytes from the stream, starting at the
current seek offset, into the buffers specified by *vector* and *num_vector*.
If successful, the number of bytes actually read are return via *actual*.
If the current seek offset is beyond the end of the stream, `zx_stream_readv()`
will succeed in reading zero bytes.
If a NULL *actual* is passed in, it will be ignored.
Advances the seek offset of the stream by the actual number of bytes read.
If the read fails, the seek offset could either remain the same or have
been changed to an unspecified value.
If the contents of *vector* change during this operation, if any of the buffers
overlap, or if any of the buffers overlap *vector*, the behavior is unspecified.
*options* is reserved for future use and must be 0.
## RIGHTS
<!-- Updated by update-docs-from-fidl, do not edit. -->
*handle* must be of type **ZX_OBJ_TYPE_STREAM** and have **ZX_RIGHT_READ**.
## RETURN VALUE
`zx_stream_readv()` returns **ZX_OK** on success, and writes into
*actual* (if non-NULL) the exact number of bytes read.
## ERRORS
**ZX_ERR_BAD_HANDLE** *handle* is not a valid handle.
**ZX_ERR_WRONG_TYPE** *handle* is not a stream handle.
**ZX_ERR_ACCESS_DENIED** *handle* does not have the **ZX_RIGHT_READ** right.
**ZX_ERR_INVALID_ARGS** *vector* is an invalid `zx_iovec_t` or *options* is
nonzero.
**ZX_ERR_NOT_FOUND** the *vector* address, or an address specified within
*vector* does not map to address in address space.
**ZX_ERR_BAD_STATE** the underlying data source cannot be read.
## SEE ALSO
- [`zx_stream_create()`]
- [`zx_stream_readv_at()`]
- [`zx_stream_seek()`]
- [`zx_stream_writev()`]
- [`zx_stream_writev_at()`]
<!-- References updated by update-docs-from-fidl, do not edit. -->
[`zx_stream_create()`]: stream_create.md
[`zx_stream_readv_at()`]: stream_readv_at.md
[`zx_stream_seek()`]: stream_seek.md
[`zx_stream_writev()`]: stream_writev.md
[`zx_stream_writev_at()`]: stream_writev_at.md