Complicated output parameter in WIN32OLE

Hello,

I have a somewhat “complicated” output parameter I need to get via
WIN32OLE and I’m having trouble getting it correct. The method signature
is as follows:

void GetDescription (out VirtualSystemDescriptionType[] aTypes, out
wstring[] aRefs, out wstring[] aOvfValues, out wstring[] aVBoxValues,
out wstring[] aExtraConfigValues)

I’m able to get basic string output parameters fine, but as soon as I
hit this method, I was stumped. How am I supposed to query this method
via the ‘win32ole’ library. My initial attempts were failures:

object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
object.GetDescription([], [], [], [], []) # Errors type mismatch

I’m fairly certain I’ll have to use object._invoke directly here but I’m
not sure what types to put into the types array. I have the win32ole.c
file open and I’m looking at the various types which are defined but I’m
not sure which to try.

Some guidance would be greatly appreciated. How would I call this
function?

Thank you,
Mitchell H.

On Apr 7, 2010, at 8:05 PM, Mitchell H. wrote:

I’m able to get basic string output parameters fine, but as soon as I
hit this method, I was stumped. How am I supposed to query this method
via the ‘win32ole’ library. My initial attempts were failures:

object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
object.GetDescription([], [], [], [], []) # Errors type mismatch

I’m fairly certain I’ll have to use object._invoke directly here but I’m
not sure what types to put into the types array. I have the win32ole.c
file open and I’m looking at the various types which are defined but I’m
not sure which to try.

I’m not sure what to do here either. Have you tried retrieving the
WIN32OLE_METHOD and then looping through each param and asking its
#ole_type?

Check out WIN32OLE_PARAM.ole_type for the general idea.

cr

Chuck R. wrote:

I’m not sure what to do here either. Have you tried retrieving the
WIN32OLE_METHOD and then looping through each param and asking its
#ole_type?

Check out WIN32OLE_PARAM.ole_type for the general idea.

Chuck,

Thanks for the response. I looped through each to print out the ole_type
and got the following:

VirtualSystemDescription,VirtualSystemDescription
BSTR,BSTR
BSTR,BSTR
BSTR,BSTR

I’m not sure why there are two for each? Besides that, do these types
mean something useful for the refs (for arrays)?

Mitchell

On Apr 7, 2010, at 11:33 PM, Mitchell H. wrote:

and got the following:

VirtualSystemDescription,VirtualSystemDescription
BSTR,BSTR
BSTR,BSTR
BSTR,BSTR

I’m not sure why there are two for each? Besides that, do these types
mean something useful for the refs (for arrays)?

I don’t really know how to deal with the VirtualSystemDescription but at
least we know the BSTR maps to VT_BSTR in WIN32OLE::VARIANT. That’s a
good start.

So for BSTR use WIN32OLE::VARIANT::BSTR and for VirtualSystemDescription
try WIN32OLE::VARIANT::VT_VARIANT. See what happens when you invoke the
method with that argument list.

cr