#memory #io #ffi #memory-address

unsaferawbuf

手动分配内存部分的便捷接口

4个版本

0.1.3 2024年7月26日
0.1.2 2024年5月18日
0.1.1 2024年5月18日
0.1.0 2022年10月12日

#286操作系统

Download history 30/week @ 2024-04-13 1/week @ 2024-04-20 222/week @ 2024-05-18 2/week @ 2024-05-25 85/week @ 2024-07-20 46/week @ 2024-07-27

每月131 次下载

Zlib 许可证

6KB
81

不安全的原始缓冲区

GitHub crates.io badge Docs.rs rustc requirements

unsaferawbuf 提供了对分配的原始内存块的一个接口。旨在与通常只能通过共享内存区域进行通信的库或应用程序一起使用。因此,它非常不安全,并且该crate本身提供的保障非常有限。它只是围绕一个原始内存地址提供了一个容器,并在读取和写入数据时对其进行指针运算。当从任意内存地址进行交易不可避免时,这提供了一些额外的便利。

用法

目前,您只能从原始内存地址初始化一个 UnsafeRawBuf。在未来,您将能够创建一个带有相关接口的新分配内存缓冲区。到目前为止,这是不可能的,因此现在我们必须手动分配内存,然后将它分配给容器。

use std::ffi::c_void;
use unsaferawbuf::UnsafeRawBuf;

pub unsafe extern "C" fn dmp(addr: *mut c_void) {
    let buf = UnsafeRawBuf::from_address(addr as _);
    buf.write(42);
}

依赖关系

~295–740KB
~18K SLoC