Jacek Caban : ole32: Use generic class factory for StdComponentCategoriesMgr object.

Alexandre Julliard julliard at winehq.org
Tue Feb 21 16:56:13 CST 2017


Module: wine
Branch: master
Commit: fd09c37b4938826732b460e7e0a09606ccb4f2a6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fd09c37b4938826732b460e7e0a09606ccb4f2a6

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Feb 21 13:20:18 2017 +0100

ole32: Use generic class factory for StdComponentCategoriesMgr object.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 eb5a927..d43c3af 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));
@@ -765,36 +719,6 @@ static HRESULT WINAPI COMCAT_IClassFactory_CreateInstance(
 }
 
 /**********************************************************************
- * 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
  *
  * This implementation is not thread-safe.  The manager itself is, but
diff --git a/dlls/ole32/moniker.h b/dlls/ole32/moniker.h
index 7438fe0..eaeed54 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 faceced..bc8e1ea 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))




More information about the wine-cvs mailing list