I've implemented some custom marshalling for an external call so that the parameters
being sent gets massaged as required by the external routine. In addition, it is
supposed to massage data after the call. However, while it will do so on the way out,
it's not being driven the other way. I found that if I specified "ref" on the
parameters being passed then the MarshalManagedToNative method will not be driven, if
I specify nothing or "out" then neither the ToNative or ToManaged methods are being
called.
[DllImport(libname, EntryPoint = "scumbag")]
private unsafe static extern void scumbag (ref XXXCB cb,
[MarshalAs(UnmanagedType.CustomMarshaler,
MarshalTypeRef = typeof (AdaByteBuffer))] XXXBuffer fb,
[MarshalAs(UnmanagedType.CustomMarshaler,
MarshalTypeRef = typeof (AdaByteBuffer))] XXXBuffer rb,
[MarshalAs(UnmanagedType.CustomMarshaler,
MarshalTypeRef = typeof (AdaByteBuffer))] XXXBuffer sb,
[MarshalAs(UnmanagedType.CustomMarshaler,
MarshalTypeRef = typeof (AdaByteBuffer))] XXXBuffer vb,
[MarshalAs(UnmanagedType.CustomMarshaler,
MarshalTypeRef = typeof (AdaIntBuffer))] XXXIB ib);
Neale
_______________________________________________
Mono-list maillist - [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list