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