ZX_vmo_read

摘要

從 VMO 讀取位元組。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_vmo_read(zx_handle_t handle,
                        void* buffer,
                        uint64_t offset,
                        size_t buffer_size);

說明

zx_vmo_read() 會嘗試從 虛擬記憶體物件 (VMO) 的 offset 讀取正好 buffer_size 個位元組。

buffer:使用者緩衝區的指標,用於讀取位元組。

嘗試讀取的位元組數 buffer_sizebuffer 緩衝區應夠大,至少可容納這麼多位元組。

權限

handle 必須是 ZX_OBJ_TYPE_VMO 類型,且具有 ZX_RIGHT_READ

傳回值

zx_vmo_read() 會在成功時傳回 ZX_OK,且系統會將正好 buffer_size 個位元組寫入 buffer。 如果失敗,系統會傳回負數錯誤值,且寫入 buffer 的位元組數未定義。

錯誤

ZX_ERR_BAD_HANDLE handle 不是有效控點。

ZX_ERR_WRONG_TYPE handle 不是 VMO 控制代碼。

ZX_ERR_ACCESS_DENIED handle 沒有 ZX_RIGHT_READ 權限,或 [buffer, buffer + buffer_size) 不可寫入。

ZX_ERR_NOT_FOUND 緩衝區位址未對應至位址空間中的位址。

ZX_ERR_OUT_OF_RANGE offset + buffer_size 大於 VMO 的大小。

ZX_ERR_BAD_STATE VMO 已標示為未快取,且無法直接讀取,或 VMO 由分頁器支援,且分頁器或 VMO 處於不良狀態,導致無法填入所要求的頁面。

ZX_ERR_IO VMO 由分頁器支援,而分頁器在讀取要求的頁面時發生 I/O 錯誤。

ZX_ERR_IO_DATA_INTEGRITY VMO 由分頁器支援,且分頁器讀取的內容已損毀。

另請參閱