什么是C#';节点ffi中的s Marshal.ptr结构和StructureToPtr?
C#函数描述如下 Marshal.ptr结构: 将数据从非托管内存块封送到托管对象 参数 ptr(IntPtr):指向非托管内存块的指针 结构(对象):要将数据复制到的对象。这必须是格式化类的实例 Marshal.StructureToPtr: 将数据从托管对象封送到非托管内存块 参数 结构(对象):保存要封送的数据的托管对象。此对象必须是格式化类的结构或实例 ptr(IntPtr):指向非托管内存块的指针,在调用此方法之前必须分配该内存块什么是C#';节点ffi中的s Marshal.ptr结构和StructureToPtr?,c#,marshalling,ffi,node-ffi,C#,Marshalling,Ffi,Node Ffi,C#函数描述如下 Marshal.ptr结构: 将数据从非托管内存块封送到托管对象 参数 ptr(IntPtr):指向非托管内存块的指针 结构(对象):要将数据复制到的对象。这必须是格式化类的实例 Marshal.StructureToPtr: 将数据从托管对象封送到非托管内存块 参数 结构(对象):保存要封送的数据的托管对象。此对象必须是格式化类的结构或实例 ptr(IntPtr):指向非托管内存块的指针,在调用此方法之前必须分配该内存块 虽然我不知道有哪一个通用函数像Marshal.PtrT
虽然我不知道有哪一个通用函数像
Marshal.PtrToStructure/StructureToPtr
那样易于使用,但我确实找到了一种较低级别的方法来完成同样的事情:
摘要:查找/创建直接指向非托管内存中结构数据的节点ffi缓冲区,然后:
- 读取:适当设置缓冲区的
字段,然后调用类型
deref()
- 写入:调用
,并提供给定字段的偏移量buffer.writeUInt32LE