zx_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 buffer_size,
                                    size_t* actual);

說明

zx_process_write_memory() 會嘗試寫入指定程序的記憶體。

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

vaddr 待寫入記憶體區塊的位址。

buffer 指標指向使用者緩衝區,裡麵包含要寫入的位元組。

buffer_size 要寫入的位元組數量。buffer 緩衝區 至少要能處理這麼多位元組buffer_size 必須大於 且小於或等於 64 MB

「actual_size」actual_size儲存的實際寫入位元組數。較少位元組 如果 vaddr+buffer_size 延伸超過 會對應程序對應的記憶體

如要使用 zx_process_write_memory() 函式,您必須指定 kernel.enable-debugging-syscalls=true 執行。否則 這個函式會傳回 ZX_ERR_NOT_SUPPORTED

權限

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

傳回值

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

錯誤

ZX_ERR_ACCESS_DENIED 帳號代碼沒有 ZX_RIGHT_WRITE 的權利或 要寫入的位址範圍屬於 vDSO 等受保護的區域。

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_NOT_SUPPORTED kernel.enable-debugging-syscalls未設為 true 執行指令碼

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

另請參閱