Generate smart pointers for windows raw handles with ergonomic APIs.
This crate doesn't offer pre-defined smart pointers. Instead, it provides a single [safe_handle!
] macro for generation:
Drop
```rust use windowssafehandle::safe_handle; use windows::Win32::Foundation::{HANDLE, CloseHandle};
safe_handle!(pub Handle(HANDLE), CloseHandle);
``
If you do not need to export the
Handletype, simply omit the
pub` keyword.
Drop
logicYou can use a closure-based syntax: ```rust use windowssafehandle::safe_handle; use windows::Win32::Foundation::{HANDLE, CloseHandle};
safe_handle!(pub Handle(HANDLE), |h| {
// Place your code here
unsafe { CloseHandle(h) }
});
``
Note that in this case you have to explicitly use
unsafe` block.
Refer to tests/bcrypt_hash.rs
to see how to safely wrap Windows Cryptography Next Generation (CNG) APIs for calculating MD5 hashes.