zx_process_write_memory
名称
process_write_memory —— 写入数据到给定进程的地址空间中。
概要
#include <zircon/syscalls.h>
zx_status_t zx_process_write_memory(zx_handle_t handle, zx_vaddr_t vaddr,
const void* buffer, size_t length, size_t* actual);
描述
zx_process_write_memory() 的功能是尝试写入数据到指定进程的内存中。
该函数最终会被一些以vmo
为中心的函数功能所取代。
vaddr:将写入的内存块地址。
buffer:指向用户要写入的字节的缓冲区的指针。
length是尝试写入的字节数。 buffer必须至少有length字节的空间。 length必须大于零且不超过64MB。
写入的实际字节数存储在actual_size中。 如果vaddr+length超出进程中映射的内存,则可能会返回比请求的字节数少的字节。
权限
TODO(ZX-2399)
返回值
zx_process_write_memory() 调用成功则返回ZX_OK。如果调用失败,则返回负的错误码,并且写入buffer到内存的字节数是不确定的。
错误码
ZX_ERR_ACCESS_DENIED:handle没有ZX_RIGHT_WRITE。
ZX_ERR_BAD_HANDLE:handle是无效句柄。
ZX_ERR_BAD_STATE:进程的内存不可访问(例如,进程正在终止过程中),或者请求的内存区域不可被缓存。
ZX_ERR_INVALID_ARGS:buffer是无效指针或为NULL,或length为零或大于64MB。
ZX_ERR_NO_MEMORY:进程在请求的地址参数上没有映射的内存。
ZX_ERR_WRONG_TYPE:handle不是进程类型的句柄。