CCW COM and Parameters

  • Thread starter Thread starter James
  • Start date Start date
J

James

I am writing a component in C# which is a COM Callable Wrapper. Some of the
methods pass structs across COM. My question is, how does COM pass
parameters such as structs? I know that C# passes structs by value. The
struct data being passed from the Win32 client is never going to be modified,
so I would like to prevent making a copy of the struct across the COM
barrier. In C# The struct is being passed by reference (added ref keyword to
parameter) since I don't want to make a copy there either. I'm going through
enough layers already and I would prefer not to be making multiple copies of
a struct every time it is passed as a parameter.

Thanks!
 
I am writing a component in C# which is a COM Callable Wrapper.  Some of the
methods pass structs across COM.  My question is, how does COM pass
parameters such as structs?

It's up to you, depending on how you define the interface.
 I know that C# passes structs by value.  The
struct data being passed from the Win32 client is never going to be modified,
so I would like to prevent making a copy of the struct across the COM
barrier.  In C# The struct is being passed by reference (added ref keyword to
parameter) since I don't want to make a copy there either.  I'm going through
enough layers already and I would prefer not to be making multiple copiesof
a struct every time it is passed as a parameter.

If your C# code defines the argument as "ref" or "out", there should
be no copy involved during marshaling, unless the struct itself has
some fields that require special marshaling (e.g. strings, or arrays
declared without "fixed" keyword).
 
Back
Top