3 releases
0.1.2 | Sep 2, 2023 |
---|---|
0.1.1 | Sep 2, 2023 |
0.1.0 | Sep 2, 2023 |
#44 in #handle
44 downloads per month
7KB
62 lines
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:
Simple Smart Pointer, calling an unsafe Function on Drop
use windows_safe_handle::safe_handle;
use windows::Win32::Foundation::{HANDLE, CloseHandle};
safe_handle!(pub Handle(HANDLE), CloseHandle);
If you do not need to export the Handle
type, simply omit the pub
keyword.
Smart Pointer with additional Drop
logic
You can use a closure-based syntax:
use windows_safe_handle::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.
Example
Refer to tests/bcrypt_hash.rs
to see how to safely wrap Windows Cryptography Next Generation (CNG) APIs for calculating MD5 hashes.
Dependencies
~151MB
~2.5M SLoC