摘要
将字节写入 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 字节写入 offset 处的虚拟内存对象 (VMO)。
指向用户缓冲区的 buffer 指针,用于写入字节。
尝试写入的字节数(buffer_size)。
权限
句柄必须是 ZX_OBJ_TYPE_VMO
类型,并且具有 ZX_RIGHT_WRITE
。
返回值
zx_vmo_write()
在成功时返回 ZX_OK
,并且已从 buffer 写入正好 buffer_size 个字节。
如果失败,则返回负错误值,并且从 buffer 写入的字节数未定义。
错误
ZX_ERR_BAD_HANDLE
句柄不是有效的句柄。
ZX_ERR_WRONG_TYPE
handle 不是 VMO handle。
ZX_ERR_ACCESS_DENIED
句柄不具有 ZX_RIGHT_WRITE
权限,或者 [buffer, buffer + buffer_size) 不可读。
ZX_ERR_NOT_FOUND
buffer 地址未映射到地址空间中的地址。
ZX_ERR_NO_MEMORY
无法分配系统内存来完成写入。
ZX_ERR_OUT_OF_RANGE
offset + buffer_size 大于 VMO 的大小。
ZX_ERR_BAD_STATE
VMO 已标记为未缓存,无法直接写入。