zx_stream_writev

摘要

在当前定位偏移量处将数据写入流。

声明

#include <zircon/syscalls.h>

zx_status_t zx_stream_writev(zx_handle_t handle,
                             uint32_t options,
                             const zx_iovec_t* vectors,
                             size_t num_vectors,
                             size_t* actual);

说明

zx_stream_writev() 尝试向数据流中写入字节,从 当前定位偏移量,与由 vectors 和 num_vectors 指定的缓冲区之间的距离。 如果成功,将通过 actual 返回实际写入的字节数。

如果 options 包含 ZX_STREAM_APPEND 或流处于附加模式,则 音频流的跳转偏移量以原子方式设置为音频流的内容大小 然后再写入数据。

如果写入操作会写入流的末尾,则函数 将尝试增大音频流的内容大小,以便接收 使用零字节填充任何未写入的新内容。

如果在向 该函数就会成功返回结果。如果没有写入字节 流,操作将返回 ZX_ERR_FILE_BIGZX_ERR_NO_SPACE, 视情况而定。

如果传入 NULL actual,则将忽略它。

将流的寻道偏移量快进写入的实际字节数。 如果写入失败,则定位偏移量可能保持不变, 已更改为未指定的值。

如果矢量的内容在此操作期间发生更改(如果任何缓冲区) 重叠,或者如果任何缓冲区与矢量重叠,则该行为未指定。

权限

handle 的类型必须为 ZX_OBJ_TYPE_STREAM 且包含 ZX_RIGHT_WRITE

返回值

zx_stream_writev() 会在成功时返回 ZX_OK,并写入 实际(如果为非 NULL)写入的确切字节数。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是流句柄。

ZX_ERR_ACCESS_DENIED 句柄没有 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,表示底层存储媒介没有足够的空间。

另请参阅