Struct std::os::windows::io::HandleOrInvalid

1.63.0 · source ·
#[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

source

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

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

使用给定的格式化程序格式化该值。 Read more
source§

impl TryFrom<HandleOrInvalid> for OwnedHandle

§

type Error = InvalidHandleError

发生转换错误时返回的类型。
source§

fn try_from( handle_or_invalid: HandleOrInvalid ) -> Result<Self, InvalidHandleError>

执行转换。
source§

impl Send for HandleOrInvalid

source§

impl Sync for HandleOrInvalid

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

发生转换错误时返回的类型。
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

发生转换错误时返回的类型。
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。