zx_handle_duplicate


英文原文快照


名称

handle_duplicate —— 复制句柄

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_handle_duplicate(zx_handle_t handle, zx_rights_t rights, zx_handle_t* out);

描述

handle_duplicate() 创建handle的副本,并引用相同的底层对象,以及具有新的访问权限rights

为了与原始句柄具有相同的权限,请使用ZX_RIGHT_SAME_RIGHTS。如果需要不同的权限,那么它们必须严格是原始句柄权限的子集。可以使用0来指定无权限的句柄。

权限

handle必须具有ZX_RIGHT_DUPLICATE权限。

返回值

handle_duplicate() 执行成功,则返回ZX_OK,并通过out返回复制后的句柄。

错误码

ZX_ERR_BAD_HANDLEhandle是无效句柄。

ZX_ERR_INVALID_ARGS:请求的权限rights不是handle权限的子集,或out是无效指针。

ZX_ERR_ACCESS_DENIEDhandle没有ZX_RIGHT_DUPLICATE权限,即不可被复制。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。

另见

handle_closehandle_close_manyhandle_replacerights(英文原文)