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