Crates.io | windows_safe_handle |
lib.rs | windows_safe_handle |
version | 0.2.0 |
source | src |
created_at | 2023-09-02 05:26:10.490175 |
updated_at | 2024-07-17 18:35:47.009326 |
description | Generate smart pointers for https://crates.io/crates/windows raw handles with ergonomic APIs. |
homepage | |
repository | https://github.com/vsrs/windows_safe_handle |
max_upload_size | |
id | 961542 |
size | 12,089 |
windows_safe_handle
Generate smart pointers for windows raw handles with ergonomic APIs.
safe_handle!
This crate doesn't offer pre-defined smart pointers. Instead, it provides a single safe_handle!
macro for generation:
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.
Drop
logicYou 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.
v0.1.*
: Compatible with windows
v0.48.0
.v0.2.*
: Compatible with windows
v0.58.0
.Refer to tests/bcrypt_hash.rs
to see how to safely wrap Windows Cryptography Next Generation (CNG) APIs for calculating MD5 hashes.