Hi,

There is no need to modify the runtime to get the behavior you want. You
simply have to use [In()] and [Out()] attributes. Note that however that for
performace reasons there are types in MS runtime as well that are not copied
even if you specify [In()] attribute thus they can be modified in unamanged
code. This behavior is documented in MSDN library.

As such [In()] and [Out()] attributes only tell the runtime that you need in
and/or out mashaling rather than you want to prevent unmanaged code from
modifying you data. If you want to make sure that you prevent unmanaged code
from modifying your data you have to make a copy in managed code before
passing data to unmanaged code. (This is of course only in case of by-ref
marshaling.)

Kornél

----- Original Message -----
From: "Robert Jordan" <[EMAIL PROTECTED]>
To: <[email protected]>
Cc: <[email protected]>
Sent: Sunday, October 23, 2005 1:28 PM
Subject: Re: [Mono-dev] PInvoke ques


Shankari,

My aim is to prevent an update to a pass-by-ref
value(this is a part of my work in fault isolation).
My idea is to make a copy of the managed type , so
this copy will be updated rather than the original
one.

Well, as Zoltan told you: if the ref parameter is
marked with the [In] attribute, it won't be marshaled
back, at least not with SVN head.

In order to do this , I need the size of the managed
object. Does the instance_size denote  the size of the
"managed object" ??

There is no need to reinvent the wheel. The code
is already there. In order to do this you have to mark
the parameter with the [In] attribute.

If you don't want to do this is your C# code, you may
somehow imply PARAM_ATTRIBUTE_IN to the "attrs" field
of the parameter. You can do this in emit_marshal_vtype,
somewhere after "case MARSHAL_ACTION_CONV_OUT".
Needless to say that you're breaking the runtime's
compatibility.

Rob

_______________________________________________
Mono-devel-list mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/mono-devel-list


_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to