Hello,

We are migrating a product from VB6 to VB.NET and facing an issue.
This product interacts with a function defined in VC++ component (.ocx).

1. VB6 & VB.NET function call:

result = TestFunc(Param1, Param2, Param3)

2. VC++:
a) Function definition in .CPP file:
long TestFunc(long FAR* Param1, const VARIANT FAR& Param2, long Param3)
{
...
}

b) Function signature in .ODL file:
long TestFunc(long* Param1, VARIANT Param2, long Param3);

c) Function signature in .h(header) file:
afx_msg long TestFunc(long FAR* Param1, const VARIANT FAR& Param2, long Param3);


"Param2" in above "TestFunc" is defined as byte array in VB6 & VB.NET.

In VC++, the corresponding type for "Param2" in "TestFunc" is - "const VARIANT FAR& Param2".

In VB6, the byte array values passed gets modified in VC++ "TestFunc" & the modified values are received in VB6 "Param2" variable.

Issue in VB.NET:

In VB.NET, the byte array values passed gets modified in VC++ "TestFunc".
However, the modified values are not transferred from VC++ to VB.NET. The "Param2" variable still has the original values & not the modified values.

Could you please provide us information on how to obtain the modified byte array values in VB.NET from the Variant variable in VC++ component?

Thanks in advance.