[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.interop

In .net code, how to declare a struct with safearray defined in CO

RobinZhou

8/28/2007 10:48:00 AM

In COM,
struct Data
{
BSTR Name;
SAFEARRAY(struct Point) Points
};
struct Point
{
double X;
double Y;
double Z;
}
HRESTUL test( struct Data)
if I want to pass struct Data to COM, how can declare a simlar struct in
..net code.
my try in .net
[StructLayout(LayoutKind.Sequential)]
struct Data
{
[MarshalAs(UnmanagedType.BStr)]
string Name;
[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_RECORD)]
SAFEARRAY(struct Point) Points
}
[StructLayout(LayoutKind.Sequential)]
struct Point
{
double X;
double Y;
double Z;
}
but I alway encounter a invalid argument exception.
if I change to
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
SAFEARRAY(struct Point) Points
the address of Points is always null in COM sever.

Does any one has any ideas?
Thanks
Robin