zxvmo_write

摘要

向 VMO 写入字节。

声明

#include <zircon/syscalls.h>

zx_status_t zx_vmo_write(zx_handle_t handle,
                         const void* buffer,
                         uint64_t offset,
                         size_t buffer_size);

说明

zx_vmo_write() 尝试正好将 buffer_size 字节写入虚拟内存 对象 (VMO) 设为 offset

指向要从中写入字节的用户缓冲区的 buffer 指针。

buffer_size:要尝试写入的字节数。

权限

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

返回值

zx_vmo_write() 会在成功时返回 ZX_OK,而恰好 buffer_size 字节 缓冲区的数据。 如果失败,则返回负的错误值以及 从 buffer 写入的字节未定义。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

ZX_ERR_WRONG_TYPE handle 不是 VMO 句柄。

ZX_ERR_ACCESS_DENIED 标识名没有相应的 ZX_RIGHT_WRITE 权限 或 [buffer, buffer + buffer_size) 无法读取。

ZX_ERR_INVALID_ARGS buffer 是无效的指针或 NULL。

ZX_ERR_NOT_FOUND buffer 地址不会映射到地址空间中的地址。

ZX_ERR_NO_MEMORY 未能分配系统内存以完成写入。

ZX_ERR_OUT_OF_RANGE 偏移量 + buffer_size 大于 VMO。

ZX_ERR_BAD_STATE VMO 已标记为未缓存,无法直接写入。

另请参阅