gpt4 book ai didi

c# - 来自非托管世界的 C# 结构可以更新为 "live"吗?

转载 作者:行者123 更新时间:2023-11-30 15:41:51 24 4
gpt4 key购买 nike

假设我从一个非托管库中得到一个指向结构的IntPtr 指针。在 C# 中,有什么方法可以从此指针获取“实时”结构,以便如果我进行修改非托管结构的调用,我的“实时”结构会立即反射(reflect)这一点?

我认为标准方法是使用编码构建数据副本,由于各种原因(结构布局、数据类型兼容性、不驻留在 .NET 托管内存中),它不能像这样“实时”。但是我找不到任何明确的证据表明“实时”结构在 C# 中是不可能的。是吗?

在不使用 C++/CLI 的情况下,我最接近这种“实时”结构的是什么?

最佳答案

尝试使用 UnmanagedMemoryStream :

This class supports access to unmanaged memory using the existing stream-based model and does not require that the contents in the unmanaged memory be copied to the heap.

这意味着您将寻找/阅读/重置流,但这避免了编码。从您希望将这些访问包装在 .NET 属性中的意义上来说,它仍然存在

另一种选择:也许你可以使用 System.Buffer ,在获得非托管指针之后。您可能需要进行一些巧妙的转换。

关于c# - 来自非托管世界的 C# 结构可以更新为 "live"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com