[Mono-dev] Marshal Variable length structure Array in Mono

Yogendra Thakur YogendraT at ami.com
Fri Sep 2 09:02:50 EDT 2005


Hi ,
 I want to marshal following C structure .
----------------------------
[C]
struct Foo
{
   int First;
   int Second;
};

struct FooList
{
   int Count;
   Foo List[1];
};

void GetFooList(struct * FooList fList);


I am doing it following way
[C#]
--------------------
[StructLayout(LayoutKind.Sequential)]
class Foo
{
  public Int32 First;
  public Int32 Second;
}

[StructLayout(LayoutKind.Sequential)]
class FooList
{
   public Int32 Count;
   private IntPtr list;//pointer to first
   public Foo[] Foos
   {
      //???? HOW TO DO THIS
   }
}


My problem is how to form objects from IntPtr and return as Foo[].
(If i directly use Marshal.PtrToStruct(list,typeof(Foo)); it throws object reference not set to object while access Foo.First.)

I googled about it and I found a solution which uses kernel32.dll and uses GlobalFree, GlobalAlloc API's.

I want to run this on Mono. I am new to Interop Please help.

Thank in Advance.

-YoGi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20050902/fa155ea5/attachment.html 


More information about the Mono-devel-list mailing list