zx_process_read_memory
名称
process_read_memory —— 从给定的进程地址空间中读取数据。
概要
#include <zircon/syscalls.h>
zx_status_t zx_process_read_memory(zx_handle_t process, zx_vaddr_t vaddr,
void* buffer, size_t length, size_t* actual);
描述
zx_process_read_memory() 的功能是尝试读取指定进程的内存数据。
该函数最终会被一些以vmo
为中心的函数功能所取代。
vaddr:需要读取的内存块地址。 buffer:指向用户要读取的字节的缓冲区的指针。
length是尝试读取的字节数。 buffer必须至少有length字节的空间。 length必须大于零且不超过64MB。
读取的实际字节数存储在actual_size中。 如果vaddr+length超出进程中映射的内存,则可能会返回比请求的字节数少的字节。
权限
TODO(ZX-2399)
返回值
zx_process_read_memory() 调用成功则返回ZX_OK。如果调用失败,则返回负的错误码,并且写入到buffer的字节数是不确定的。
错误码
ZX_ERR_ACCESS_DENIED:handle没有ZX_RIGHT_READ权限或因历史原因需要的ZX_WRITE_RIGHT。
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不是进程类型的句柄。