摘要
复制标识名。
声明
#include <zircon/syscalls.h>
zx_status_t zx_handle_duplicate(zx_handle_t handle,
zx_rights_t rights,
zx_handle_t* out);
说明
zx_handle_duplicate() 创建了 handle 的副本,并引用
对同一个基础对象拥有新的访问权限。
如需复制具有相同权利的标识名,请使用 ZX_RIGHT_SAME_RIGHTS。如果不同
权利,但必须严格小于来源句柄的幅度。有可能
使用 ZX_RIGHT_NONE 指定不具有任何权限。若要立即移除ZX_RIGHT_DUPLICATE,请执行以下操作:
通过渠道转移时,请使用 zx_channel_write_etc()。
权限
handle 必须具有 ZX_RIGHT_DUPLICATE。
返回值
如果操作成功,zx_handle_duplicate() 会通过 out 返回 ZX_OK 和重复句柄。
错误
ZX_ERR_BAD_HANDLE handle 不是有效的句柄。
ZX_ERR_INVALID_ARGS 所请求的权限不是标识名权限的子集,或者
out 是无效的指针。
ZX_ERR_ACCESS_DENIED 标识名不含 ZX_RIGHT_DUPLICATE,不能重复。
ZX_ERR_NO_MEMORY 因内存不足而失败。
用户空间没有好办法处理这种(不太可能)错误。
在将来的版本中,此错误不会再发生。