C#側でArrayを準備してアンマネージコードで中身を書き換えたいと思っています.
次の様に書いてみましたが実行時に不当な書き込みをしたとエラーが出ます.
public class Hoge
{
[DllImport("Hoge.dll")]
public static extern void Func(IntPtr buf);
}
public class Foo2
{
private Byte[] data;
public Foo2 ()
{
data = new Byte[100];
GCHandle gch = GCHandle.Alloc (data);
Hoge.Func(GCHandle.ToIntPtr (gch));
gch.Free ();
}
}
どのように書くのが正しいのでしょうか?
ちなみにDLL側でのCの宣言は
extern void Func(void * buf);