From fd09c37b4938826732b460e7e0a09606ccb4f2a6 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 21 Feb 2017 13:20:18 +0100 Subject: [PATCH] ole32: Use generic class factory for StdComponentCategoriesMgr object. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/ole32/comcat.c | 78 +------------------------------------------ dlls/ole32/moniker.h | 2 +- dlls/ole32/oleproxy.c | 13 +++++++- 3 files changed, 14 insertions(+), 79 deletions(-) diff --git a/dlls/ole32/comcat.c b/dlls/ole32/comcat.c index eb5a927e625..d43c3afc0d4 100644 --- a/dlls/ole32/comcat.c +++ b/dlls/ole32/comcat.c @@ -700,53 +700,7 @@ static const ICatInformationVtbl COMCAT_ICatInformation_Vtbl = COMCAT_ICatInformation_EnumReqCategoriesOfClass }; -/********************************************************************** - * COMCAT_IClassFactory_QueryInterface (also IUnknown) - */ -static HRESULT WINAPI COMCAT_IClassFactory_QueryInterface( - LPCLASSFACTORY iface, - REFIID riid, - LPVOID *ppvObj) -{ - TRACE("%s\n",debugstr_guid(riid)); - - if (ppvObj == NULL) return E_POINTER; - - if (IsEqualGUID(riid, &IID_IUnknown) || - IsEqualGUID(riid, &IID_IClassFactory)) - { - *ppvObj = iface; - IClassFactory_AddRef(iface); - return S_OK; - } - - return E_NOINTERFACE; -} - -/********************************************************************** - * COMCAT_IClassFactory_AddRef (also IUnknown) - */ -static ULONG WINAPI COMCAT_IClassFactory_AddRef(LPCLASSFACTORY iface) -{ - return 2; /* non-heap based object */ -} - -/********************************************************************** - * COMCAT_IClassFactory_Release (also IUnknown) - */ -static ULONG WINAPI COMCAT_IClassFactory_Release(LPCLASSFACTORY iface) -{ - return 1; /* non-heap based object */ -} - -/********************************************************************** - * COMCAT_IClassFactory_CreateInstance - */ -static HRESULT WINAPI COMCAT_IClassFactory_CreateInstance( - LPCLASSFACTORY iface, - LPUNKNOWN pUnkOuter, - REFIID riid, - LPVOID *ppvObj) +HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppvObj) { HRESULT res; TRACE("%s\n",debugstr_guid(riid)); @@ -764,36 +718,6 @@ static HRESULT WINAPI COMCAT_IClassFactory_CreateInstance( return CLASS_E_CLASSNOTAVAILABLE; } -/********************************************************************** - * COMCAT_IClassFactory_LockServer - */ -static HRESULT WINAPI COMCAT_IClassFactory_LockServer( - LPCLASSFACTORY iface, - BOOL fLock) -{ - FIXME("(%d), stub!\n",fLock); - return S_OK; -} - -/********************************************************************** - * static ClassFactory instance - */ -static const IClassFactoryVtbl ComCatCFVtbl = -{ - COMCAT_IClassFactory_QueryInterface, - COMCAT_IClassFactory_AddRef, - COMCAT_IClassFactory_Release, - COMCAT_IClassFactory_CreateInstance, - COMCAT_IClassFactory_LockServer -}; - -static const IClassFactoryVtbl *ComCatCF = &ComCatCFVtbl; - -HRESULT ComCatCF_Create(REFIID riid, LPVOID *ppv) -{ - return IClassFactory_QueryInterface((IClassFactory *)&ComCatCF, riid, ppv); -} - /********************************************************************** * IEnumCATEGORYINFO implementation * diff --git a/dlls/ole32/moniker.h b/dlls/ole32/moniker.h index 7438fe0dd79..eaeed54a4e2 100644 --- a/dlls/ole32/moniker.h +++ b/dlls/ole32/moniker.h @@ -36,7 +36,7 @@ HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, HRESULT WINAPI CompositeMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT WINAPI ClassMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT WINAPI PointerMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); -HRESULT ComCatCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; +HRESULT WINAPI ComCat_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); /* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */ int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable) DECLSPEC_HIDDEN; diff --git a/dlls/ole32/oleproxy.c b/dlls/ole32/oleproxy.c index faceceda629..bc8e1ea04d7 100644 --- a/dlls/ole32/oleproxy.c +++ b/dlls/ole32/oleproxy.c @@ -139,6 +139,17 @@ static const IClassFactoryVtbl PointerMonikerCFVtbl = static IClassFactory PointerMonikerCF = { &PointerMonikerCFVtbl }; +static const IClassFactoryVtbl ComCatCFVtbl = +{ + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + ComCat_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory ComCatCF = { &ComCatCFVtbl }; + /*********************************************************************** * DllGetClassObject [OLE32.@] */ @@ -168,7 +179,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) if (IsEqualCLSID(rclsid, &CLSID_PointerMoniker)) return IClassFactory_QueryInterface(&PointerMonikerCF, iid, ppv); if (IsEqualGUID(rclsid, &CLSID_StdComponentCategoriesMgr)) - return ComCatCF_Create(iid, ppv); + return IClassFactory_QueryInterface(&ComCatCF, iid, ppv); hr = OLE32_DllGetClassObject(rclsid, iid, ppv); if (SUCCEEDED(hr))