zx_handle_duplicate

总结

复制标识名。

声明

#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 句柄不是有效的句柄。

ZX_ERR_INVALID_ARGS 请求的权利不是处理权限的子集,或者“出”是无效的指针。

ZX_ERR_ACCESS_DENIED 标识名没有 ZX_RIGHT_DUPLICATE,因此不能重复。

ZX_ERR_NO_MEMORY 由于内存不足而失败。 用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。

另请参阅