在C ++ / CLI中从非托管结构序列化为Stream

时间:2010-06-23 09:49:46

标签: .net pointers c++-cli

我正在学习C ++ / CLI并遇到问题。 我有一个看起来像

的头文件
     typedef struct _DATA_INFO {     
       WORD ONE
       WORD TWO
       WORD THREE
      } DATA_INFO

    public ref class ManagedDataInfo
    {
     DATA_INFO* info;
     public ManagedDataInfo()
    {
     info=new DATA_INFO();
    }
    public void Write(Stream^ stream)
    {
//       stream.Write(content of info)
     // here i want to write content of info to stream
    }

}

在这里,我想将信息的内容复制到Write方法中的流中,但仍然坚持如何做到这一点。

2 个答案:

答案 0 :(得分:2)

您需要这种方法:Marshal.StructureToPtr。此方法将结构转换为字节序列。然后你可以使用Stream.Write方法之一编写。

答案 1 :(得分:1)

Stream提供了一系列字节的通用视图。 这意味着您需要将info对象序列化为一系列字节。 使字节数组使用Marshal.Copy方法。 希望这会有所帮助。