lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Jei-Wen Teng wrote:
I am trying to call a COM method from Lua by using LuaCOM.
The signature is as follow:
HRESULT GetAPEncodedData(
                     VARIANT* APName,
                     VARIANT* Realm,
                     VARIANT* EncodedData,
                     [out, retval] long* pVal);

Directional attribute [in], [out] is not specified.
EncodedData is the parameter that this method will store its result in.

That is wrong, see below.

My question is:

1. Will LuaCOM return all the values of VARIANT* type parameters?

No, because when no directional attribute is present, [in] is assumed [1]

2. If not, is there any way in LuaCOM to get the result value of EncodedData?

Unless you can change your method declaration, or add a new method with [in,out] parameters, you can't. Also, you could create a new COM interface and wrap the calls to GetAPEncodedData

However, by not specifying [in,out] and changing EncodedData you're relying on not crossing apartments or worst, process boundaries. In the former, things may work under certain circumstances. In the latter, they won't work at all.

Regards,
Ignacio Burgueño

[1] http://msdn.microsoft.com/en-us/library/aa367051(VS.85).aspx