From: Jacek Caban Subject: [PATCH 3/7] ole32: Use generic class factory for anti moniker. Message-Id: <84e7049a-bf95-00b7-81c8-95dbd00e69ff@codeweavers.com> Date: Tue, 21 Feb 2017 13:19:32 +0100 Signed-off-by: Jacek Caban --- dlls/ole32/antimoniker.c | 47 ++--------------------------------------------- dlls/ole32/moniker.h | 2 +- dlls/ole32/oleproxy.c | 13 ++++++++++++- 3 files changed, 15 insertions(+), 47 deletions(-) diff --git a/dlls/ole32/antimoniker.c b/dlls/ole32/antimoniker.c index a99b1b7..f7912fa 100644 --- a/dlls/ole32/antimoniker.c +++ b/dlls/ole32/antimoniker.c @@ -628,30 +628,8 @@ HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk) (void**)ppmk); } -static HRESULT WINAPI AntiMonikerCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv) -{ - *ppv = NULL; - if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory)) - { - *ppv = iface; - IClassFactory_AddRef(iface); - return S_OK; - } - return E_NOINTERFACE; -} - -static ULONG WINAPI AntiMonikerCF_AddRef(LPCLASSFACTORY iface) -{ - return 2; /* non-heap based object */ -} - -static ULONG WINAPI AntiMonikerCF_Release(LPCLASSFACTORY iface) -{ - return 1; /* non-heap based object */ -} - -static HRESULT WINAPI AntiMonikerCF_CreateInstance(LPCLASSFACTORY iface, - LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) +HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, + IUnknown *pUnk, REFIID riid, void **ppv) { IMoniker *pMoniker; HRESULT hr; @@ -674,24 +652,3 @@ static HRESULT WINAPI AntiMonikerCF_CreateInstance(LPCLASSFACTORY iface, return hr; } - -static HRESULT WINAPI AntiMonikerCF_LockServer(LPCLASSFACTORY iface, BOOL fLock) -{ - FIXME("(%d), stub!\n",fLock); - return S_OK; -} - -static const IClassFactoryVtbl AntiMonikerCFVtbl = -{ - AntiMonikerCF_QueryInterface, - AntiMonikerCF_AddRef, - AntiMonikerCF_Release, - AntiMonikerCF_CreateInstance, - AntiMonikerCF_LockServer -}; -static const IClassFactoryVtbl *AntiMonikerCF = &AntiMonikerCFVtbl; - -HRESULT AntiMonikerCF_Create(REFIID riid, LPVOID *ppv) -{ - return IClassFactory_QueryInterface((IClassFactory *)&AntiMonikerCF, riid, ppv); -} diff --git a/dlls/ole32/moniker.h b/dlls/ole32/moniker.h index a811366..8af2d9e 100644 --- a/dlls/ole32/moniker.h +++ b/dlls/ole32/moniker.h @@ -32,7 +32,7 @@ DEFINE_OLEGUID( CLSID_PointerMoniker, 0x306, 0, 0 ); HRESULT WINAPI FileMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT WINAPI ItemMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); -HRESULT AntiMonikerCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; +HRESULT WINAPI AntiMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv); HRESULT CompositeMonikerCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; HRESULT ClassMonikerCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; HRESULT PointerMonikerCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; diff --git a/dlls/ole32/oleproxy.c b/dlls/ole32/oleproxy.c index b7a11a1..52249a2 100644 --- a/dlls/ole32/oleproxy.c +++ b/dlls/ole32/oleproxy.c @@ -95,6 +95,17 @@ static const IClassFactoryVtbl ItemMonikerCFVtbl = static IClassFactory ItemMonikerCF = { &ItemMonikerCFVtbl }; +static const IClassFactoryVtbl AntiMonikerCFVtbl = +{ + ClassFactory_QueryInterface, + ClassFactory_AddRef, + ClassFactory_Release, + AntiMoniker_CreateInstance, + ClassFactory_LockServer +}; + +static IClassFactory AntiMonikerCF = { &AntiMonikerCFVtbl }; + /*********************************************************************** * DllGetClassObject [OLE32.@] */ @@ -116,7 +127,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid,LPVOID *ppv) if (IsEqualCLSID(rclsid, &CLSID_ItemMoniker)) return IClassFactory_QueryInterface(&ItemMonikerCF, iid, ppv); if (IsEqualCLSID(rclsid, &CLSID_AntiMoniker)) - return AntiMonikerCF_Create(iid, ppv); + return IClassFactory_QueryInterface(&AntiMonikerCF, iid, ppv); if (IsEqualCLSID(rclsid, &CLSID_CompositeMoniker)) return CompositeMonikerCF_Create(iid, ppv); if (IsEqualCLSID(rclsid, &CLSID_ClassMoniker))