#[repr(transparent)]pub struct HandleOrInvalid(_);
Available on Windows only.
Expand description
返回值或输出参数句柄的 FFI 类型,其中 INVALID_HANDLE_VALUE
用作哨兵值以指示错误,例如在 CreateFileW
的返回值中。
这使用 repr(transparent)
并具有主机句柄的表示,因此它可以用于此类 FFI 声明。
您可以对 HandleOrInvalid
做的唯一有用的事情是使用其 TryFrom
实现将其转换为 OwnedHandle
; 此转换负责检查 INVALID_HANDLE_VALUE
。
这可确保此类 FFI 调用在未先检查 INVALID_HANDLE_VALUE
的情况下无法开始使用句柄。
此类型可以保存 OwnedHandle
可能保存的任何句柄值,但当它保存 -1
时,该值被解释为表示 INVALID_HANDLE_VALUE
。
如果持有 INVALID_HANDLE_VALUE
以外的句柄,它将在丢弃时关闭句柄。
Implementations§
source§impl HandleOrInvalid
impl HandleOrInvalid
sourcepub unsafe fn from_raw_handle(handle: RawHandle) -> Self
pub unsafe fn from_raw_handle(handle: RawHandle) -> Self
根据从 Windows API 返回的给定 RawHandle
构造 Self
的新实例,该 API 使用 INVALID_HANDLE_VALUE
指示失败,例如 CreateFileW
。
对于使用 null 表示失败的 API,使用 HandleOrNull
而不是 HandleOrInvalid
。
Safety
传递的 handle
值必须满足 FromRawHandle::from_raw_handle
的安全要求,或者是 INVALID_HANDLE_VALUE
(-1)。
请注意,并非所有 Windows API 都使用 INVALID_HANDLE_VALUE
来处理错误; 有关完整故事,请参见 这个。
Trait Implementations§
source§impl Debug for HandleOrInvalid
impl Debug for HandleOrInvalid
source§impl TryFrom<HandleOrInvalid> for OwnedHandle
impl TryFrom<HandleOrInvalid> for OwnedHandle
§type Error = InvalidHandleError
type Error = InvalidHandleError
发生转换错误时返回的类型。
source§fn try_from(
handle_or_invalid: HandleOrInvalid
) -> Result<Self, InvalidHandleError>
fn try_from( handle_or_invalid: HandleOrInvalid ) -> Result<Self, InvalidHandleError>
执行转换。