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() 会尝试在 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 已被标记为未缓存,无法直接写入。

另请参阅