Invoke with IDispatch* params
Mike Hearn
mike at theoretic.com
Wed Jul 23 05:02:25 CDT 2003
Hi, more questions (i'll master COM yet :)
HRESULT IWebBrowser2::get_Document(IDispatch **ppDisp);
invocation of this method/property fails, for some reason. I'm not sure
why yet, but I don't understand how this is marshalled. Presumably, OLE
Automation provides a ppDisp and then dereferences it back to IDispatch
which is then marshalled. In ITypeInfo::Invoke, there is this code:
if (tdesc->vt == VT_PTR)
tdesc = tdesc->u.lptdesc;
when looping over the arguments (?). So, it seems that this code is
responsible for dereferencing the pointer, but it only does it once.
Shouldn't this be a loop to dereference the arg as many times as needed?
I feel that's wrong even as I write it, but I'm not sure how this part
should work.
As it is, tdesc->vt ends up being (correctly) VT_DISPATCH but pVarResult
doesn't seem to be changed....
More information about the wine-devel
mailing list