HandleOrInvalid in std::os::windows::io - Rust (original) (raw)
Struct HandleOrInvalid
1.63.0 · Source
pub struct HandleOrInvalid(/* private fields */);
Available on Windows only.
Expand description
FFI type for handles in return values or out parameters, where INVALID_HANDLE_VALUE
is used as a sentry value to indicate errors, such as in the return value of CreateFileW
. This usesrepr(transparent)
and has the representation of a host handle, so that it can be used in such FFI declarations.
The only thing you can usefully do with a HandleOrInvalid
is to convert it into anOwnedHandle
using its TryFrom implementation; this conversion takes care of the check forINVALID_HANDLE_VALUE
. This ensures that such FFI calls cannot start using the handle without checking for INVALID_HANDLE_VALUE
first.
This type may hold any handle value that OwnedHandle may hold, except that when it holds-1
, that value is interpreted to mean INVALID_HANDLE_VALUE
.
If holds a handle other than INVALID_HANDLE_VALUE
, it will close the handle on drop.
1.63.0 · Source
Constructs a new instance of Self
from the given RawHandle
returned from a Windows API that uses INVALID_HANDLE_VALUE
to indicate failure, such as CreateFileW
.
Use HandleOrNull
instead of HandleOrInvalid
for APIs that use null to indicate failure.
§Safety
The passed handle
value must either satisfy the safety requirements of FromRawHandle::from_raw_handle, or beINVALID_HANDLE_VALUE
(-1). Note that not all Windows APIs useINVALID_HANDLE_VALUE
for errors; see here for the full story.