摘要
以给定偏移量将数据写入数据流。
声明
#include <zircon/syscalls.h>
zx_status_t zx_stream_writev_at(zx_handle_t handle,
uint32_t options,
zx_off_t offset,
const zx_iovec_t* vectors,
size_t num_vectors,
size_t* actual);
说明
zx_stream_writev_at()
尝试向数据流中写入字节,从
给定 offset,从由 vectors 和 num_vectors 指定的缓冲区中移除。
如果成功,将通过 actual 返回实际写入的字节数。
如果写入操作会写入流的末尾,则函数 将尝试增大音频流的内容大小,以便接收 使用零字节填充任何未写入的新内容。
如果在向
该函数就会成功返回结果。如果没有写入字节
流,操作将返回 ZX_ERR_FILE_BIG
或 ZX_ERR_NO_SPACE
,
视情况而定。
如果传入 NULL actual,则将忽略它。
不将流的跳转偏移量提前。
如果矢量的内容在此操作期间发生更改(如果任何缓冲区) 重叠,或者如果任何缓冲区与矢量重叠,则该行为未指定。
options 留待将来使用,并且必须为 0。
权限
handle 的类型必须为 ZX_OBJ_TYPE_STREAM
且包含 ZX_RIGHT_WRITE
。
返回值
zx_stream_writev_at()
会在成功时返回 ZX_OK
,并写入
实际(如果为非 NULL)写入的确切字节数。
错误
ZX_ERR_BAD_HANDLE
handle 不是有效的句柄。
ZX_ERR_WRONG_TYPE
handle 不是流句柄。
ZX_ERR_ACCESS_DENIED
handle 不具备 ZX_RIGHT_WRITE 权限。
ZX_ERR_INVALID_ARGS
矢量是无效的 zx_iovec_t,或者 options 的
设置为 1。
ZX_ERR_NOT_FOUND
:矢量地址或
矢量不会映射到地址空间中的地址。
ZX_ERR_BAD_STATE
:表示无法写入底层数据源。
ZX_ERR_FILE_BIG
,则数据流已超出预定义的大小上限。
ZX_ERR_NO_SPACE
,表示底层存储媒介没有足够的空间。