IHlink::Navigate mystery value
aeikum at codeweavers.com
Fri Jan 8 13:02:34 CST 2010
Thanks for the suggestions, André, Erich, and Reece. Got a few more
ideas at least, though I still haven't found the answer.
Reece Dunn wrote:
> The code above is using different methods to locate an IHlinkTarget
> object, and then calling the Navigate method on that (and presumably
> returning the HRESULT of that call, although the code listed does not
> return anything).
I found this interesting, so investigated a bit more. I pulled out the
code path from MSDN with no IHlinkSite and no IHlinkBrowseContext (as my
HlinkNavigate call does). The test makes a moniker, binds its object to
an IHlinkTarget, and executes IHlinkTarget::Navigate.
On native, the test succeeds navigating to winehq.org. But
IHlinkTarget::Navigate returns S_OK, not 0x40100. So that probably
eliminates IHlinkTarget::Navigate as the source of the mystery value.
It was a good guess, anyway.
As near as I can tell, the "unwrapped" version in the test should have
all of the same information as the call to HlinkNavigate, but at no
point does 0x40100 appear.
Per Erich's suggestion, I tried a number of different flags to both
HlinkNavigate and IHlinkTarget::Navigate, but was never able to get
either to change their return values at all. On success, HlinkNavigate
always seems to return 0x40100.
> NOTE: The test is incomplete (there are a lot of methods on the
> interfaces that are returning E_NOTIMPL), especially the
> QueryInterface and QueryService methods.
Yeah, I'm aware of that. Native doesn't seem to care, and just removing
the IHlinkSite reference entirely returns 0x40100 from HlinkNavigate anyway.
Finally, I've got a test for this which doesn't require any interaction
from the user, but will leave a browser window open after the test
finishes. Is this acceptable, or should I still leave it in a
"winetest_interactive" if statement?
More information about the wine-devel