zx_process_read_memory

摘要

從指定程序的位址空間讀取資料。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_process_read_memory(zx_handle_t handle,
                                   zx_vaddr_t vaddr,
                                   void* buffer,
                                   size_t buffer_size,
                                   size_t* actual);

說明

zx_process_read_memory() 會嘗試讀取指定程序的記憶體。

這個函式最終會替換為以 VMO 為主的函式。

vaddr 是要讀取的記憶體區塊位址。

buffer 指標指向使用者緩衝區,以便讀取位元組。

buffer_size 要讀取的位元組數量。buffer 緩衝區必須大 足以應付至少這個位元組數buffer_size 必須大於零 且小於或等於 64 MB

「實際」會將實際讀取的位元組數儲存在這裡。小於 (位元組) 如果 vaddr+buffer_size 延伸超過記憶體 對應程序。

權限

handle 必須是 ZX_OBJ_TYPE_PROCESS 類型,且具有 ZX_RIGHT_READ 且包含 ZX_RIGHT_WRITE

傳回值

zx_process_read_memory() 會在成功時傳回 ZX_OK。 失敗時,系統會傳回負錯誤值,以及 寫入 buffer 的位元組未定義。

錯誤

ZX_ERR_ACCESS_DENIED 帳號代碼沒有 ZX_RIGHT_READ 的右側 或 出於歷史原因,需使用 ZX_WRITE_RIGHT

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

ZX_ERR_BAD_STATE:無法存取程序的記憶體 (例如 系統就會終止程序) 或要求的記憶體無法快取

ZX_ERR_INVALID_ARGS buffer 為無效指標或 NULL。 或 buffer_size 為零或大於 64 MB。

ZX_ERR_NOT_FOUND:如果程序在 要求的地址,或 ZX_ERR_OUT_OF_RANGE (如果與 對應 VMO 中的 vaddr 大於或等於 VMO 大小這些錯誤代碼與 由位於相同位址的頁面錯誤 (即 synth_code 該網頁錯誤的例外狀況報告)。

ZX_ERR_WRONG_TYPE 帳號代碼並非處理程序。

另請參閱