[PATCH v2 3/5] ieframe: Add stub implementation of IInternetExplorerManager.
Jacek Caban
jacek at codeweavers.com
Thu Aug 10 09:33:44 CDT 2017
On 09.08.2017 20:12, Zebediah Figura wrote:
> On 08/09/2017 06:07 AM, Jacek Caban wrote:
>> Hi Zebediah,
>>
>> On 08.08.2017 20:04, Zebediah Figura wrote:
>>> HRESULT register_class_object(BOOL do_reg)
>>> {
>>> HRESULT hres;
>>> - static DWORD cookie;
>>> + static DWORD ie_cookie, iem_cookie;
>>> if(do_reg) {
>>> hres = CoRegisterClassObject(&CLSID_InternetExplorer,
>>> (IUnknown*)&InternetExplorerFactory, CLSCTX_SERVER,
>>> - REGCLS_MULTIPLEUSE|REGCLS_SUSPENDED, &cookie);
>>> - if (FAILED(hres)) {
>>> + REGCLS_MULTIPLEUSE, &ie_cookie);
>>> + if (FAILED(hres))
>>> + ERR("failed to register object %08x\n", hres);
>>> + hres = CoRegisterClassObject(&CLSID_InternetExplorerManager,
>>> + (IUnknown*)&InternetExplorerManagerFactory,
>>> CLSCTX_SERVER,
>>> + REGCLS_MULTIPLEUSE, &iem_cookie);
>>> + if (FAILED(hres))
>>> ERR("failed to register object %08x\n", hres);
>>> - return hres;
>>> - }
>>> -
>>> - hres = CoResumeClassObjects();
>>> - if(SUCCEEDED(hres))
>>> - return hres;
>>> -
>>> - ERR("failed to resume object %08x\n", hres);
>>> }
>>> -
>>> - return CoRevokeClassObject(cookie);
>>> + else
>>> + {
>>> + hres = CoRevokeClassObject(ie_cookie);
>>> + if (FAILED(hres))
>>> + ERR("failed to register object %08x\n", hres);
>>> + hres = CoRevokeClassObject(iem_cookie);
>>> + if (FAILED(hres))
>>> + ERR("failed to register object %08x\n", hres);
>>> + }
>>> + return hres;
>>> }
>>
>> Are you sure that's how it's supposed to work? I didn't test it
>> myself, but given how it's registered and documented, I'd expect that
>> CLSID_InternetExplorerManager should live in a different process from
>> CLSID_InternetExplorer. It should be easy to distinguish those
>> processes with -startmanager command line argument.
>>
>
> I'm sorry, I don't understand what you mean. Isn't
> CoRegisterClassObject process-agnostic?
It is in a sense that created proxy/stub abstract where the object
lives, yes. But note that the actual instance of IE object must live in
one process or another. There is a lot of different aspects like
pluggable protocols, script engines, ActiveX objects, document objects
that live in its process and it's quite important for them which process
it is. I did a bit of testing and it seems to be a separated process on
Windows, so we should follow that.
Jacek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20170810/cd99321a/attachment.html>
More information about the wine-devel
mailing list