【问题标题】:What is the equivalent of C#'s Marshal.PtrToStructure and StructureToPtr in node-ffi?node-ffi 中 C# 的 Marshal.PtrToStructure 和 StructureToPtr 的等价物是什么?
【发布时间】:2019-10-20 13:31:53
【问题描述】:

C# 函数如下所述。

Marshal.PtrToStructure:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.ptrtostructure

将数据从非托管内存块编组到托管对象。

参数 ptr (IntPtr):指向非托管内存块的指针。

结构(对象):数据要复制到的对象。这必须是格式化类的实例。

Marshal.StructureToPtr:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.structuretoptr

将数据从托管对象编组到非托管内存块。

参数 结构(对象):保存要封送的数据的托管对象。此对象必须是格式化类的结构或实例。

ptr(IntPtr):指向非托管内存块的指针,必须在调用此方法之前分配。

【问题讨论】:

    标签: c# marshalling ffi node-ffi


    【解决方案1】:

    虽然我不知道像Marshal.PtrToStructure/StructureToPtr 一样易于使用的通用函数,但我确实找到了完成相同任务的低级方法:https://stackoverflow.com/a/58473299/2441655

    总结:找到/创建一个node-ffi Buffer,直接指向非托管内存中的struct-data,然后:

    • 读取:适当设置缓冲区的type 字段,然后调用deref()。
    • 写入:调用buffer.writeUInt32LE,并提供给定字段的偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-08
      • 2014-05-08
      • 2015-03-30
      • 2023-03-30
      • 2010-09-17
      • 2011-07-26
      • 2011-01-07
      • 1970-01-01
      相关资源
      最近更新 更多