#智能指针 #句柄 #Windows #winapi #raw #api #generate

windows_safe_handle

使用舒适的API为https://crates.io/crates/windows原生句柄生成智能指针

4个版本

0.2.0 2024年7月17日
0.1.2 2023年9月2日
0.1.1 2023年9月2日
0.1.0 2023年9月2日

60Windows API

每月50次下载

MIT/Apache

8KB
76

windows_safe_handle

使用舒适的API为windows原生句柄生成智能指针。

安全句柄!

这个crate不提供预定义的智能指针。相反,它提供了一个用于生成的单个safe_handle!宏。

简单的智能指针,在Drop上调用不安全函数

use windows_safe_handle::safe_handle;
use windows::Win32::Foundation::{HANDLE, CloseHandle};

safe_handle!(pub Handle(HANDLE), CloseHandle);

如果你不需要导出Handle类型,只需省略pub关键字。

具有额外Drop逻辑的智能指针

你可以使用基于闭包的语法

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) }
});

请注意,在这种情况下,你必须明确使用unsafe块。

版本

  • v0.1.*:与windows v0.48.0兼容。
  • v0.2.*:与windows v0.58.0兼容。

示例

参考tests/bcrypt_hash.rs了解如何安全地包装Windows Cryptography Next Generation (CNG) API以计算MD5哈希。

依赖关系

~128MB
~2M SLoC