摘要
從 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()
會嘗試讀取虛擬記憶體中剛好讀取的 buffer_size 個位元組
物件 (VMO) 位置。
buffer 指標指向使用者緩衝區,以便讀取位元組。
buffer_size 要讀取的位元組數量。buffer 緩衝區應該較大 足以應付至少這個位元組數
權限
handle 必須是 ZX_OBJ_TYPE_VMO
類型,且包含 ZX_RIGHT_READ
。
傳回值
zx_vmo_read()
會在成功時傳回 ZX_OK
,而剛好 buffer_size 個位元組
已寫入 buffer。
失敗時,系統會傳回負錯誤值,以及
寫入 buffer 的位元組未定義。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
帳號代碼不是 VMO 控制代碼。
ZX_ERR_ACCESS_DENIED
帳號代碼沒有 ZX_RIGHT_READ
的權利或
或 [buffer、buffer + buffer_size) 支付
無法寫入
ZX_ERR_INVALID_ARGS
buffer 為無效的指標或 NULL。
ZX_ERR_NOT_FOUND
buffer 位址未對應到位址空間中的位址。
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 是由呼叫器支援,以及讀取器中讀取的內容
Pager 毀損。
另請參閱
zx_vmo_create()
zx_vmo_create_child()
zx_vmo_get_size()
zx_vmo_op_range()
zx_vmo_set_cache_policy()
zx_vmo_set_size()
zx_vmo_write()