Hi Huw,
thanks for the review!
Huw Davies huw@codeweavers.com wrote:
diff --git a/programs/dllhost/dllhost.c b/programs/dllhost/dllhost.c index 691f233906a..681a20a6bb5 100644 --- a/programs/dllhost/dllhost.c +++ b/programs/dllhost/dllhost.c @@ -98,8 +98,14 @@ static ULONG WINAPI factory_Release(IClassFactory *iface) static HRESULT WINAPI factory_CreateInstance(IClassFactory *iface, IUnknown *punkouter, REFIID iid, void **ppv) {
- FIXME("(%p,%p,%s,%p): stub\n", iface, punkouter, wine_dbgstr_guid(iid), ppv);
- return E_NOTIMPL;
- struct factory *factory = impl_from_IClassFactory(iface);
- TRACE("(%p,%p,%s,%p)\n", iface, punkouter, wine_dbgstr_guid(iid), ppv);
- if (punkouter)
return CLASS_E_NOAGGREGATION;
- return CoGetClassObject(&factory->clsid, CLSCTX_INPROC_SERVER, NULL, iid, ppv);
Shouldn't this ask for IID_IClassFactory, from which CreateInstance is called? You can also pass punkouter to the inproc CreateInstance; see the link you sent me:
https://docs.microsoft.com/en-us/windows/win32/com/writing-a-custom-surrogat...
Actually this patch could be dropped because according to the results I get with this patch set IClassFactory::CreateInstance() is never called under Wine during the surrogate invocation, and if really necessary could be implemented the way you (and MSDN) suggest. Other patches in the series should apply cleanly without this patch.