From 25aa60b33cf53c85a5b2955989f672bfd1f8576f Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Tue, 3 Apr 2012 00:18:39 +0200 Subject: [PATCH] devenum: COM cleanup for IMoniker (MediaCatMoniker). --- dlls/devenum/devenum_private.h | 2 +- dlls/devenum/mediacatenum.c | 180 ++++++++++++-------------------- dlls/devenum/parsedisplayname.c | 4 +- 3 files changed, 68 insertions(+), 118 deletions(-) diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h index 811c4b8a56a..fe3c5d235dc 100644 --- a/dlls/devenum/devenum_private.h +++ b/dlls/devenum/devenum_private.h @@ -72,7 +72,7 @@ typedef struct typedef struct { - const IMonikerVtbl *lpVtbl; + IMoniker IMoniker_iface; LONG ref; HKEY hkey; } MediaCatMoniker; diff --git a/dlls/devenum/mediacatenum.c b/dlls/devenum/mediacatenum.c index 6a1cf2de25d..3562a69abab 100644 --- a/dlls/devenum/mediacatenum.c +++ b/dlls/devenum/mediacatenum.c @@ -30,7 +30,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(devenum); -static ULONG WINAPI DEVENUM_IMediaCatMoniker_AddRef(LPMONIKER iface); static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface); typedef struct @@ -298,53 +297,51 @@ static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag) } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_QueryInterface( - LPMONIKER iface, - REFIID riid, - LPVOID *ppvObj) +static inline MediaCatMoniker *impl_from_IMoniker(IMoniker *iface) +{ + return CONTAINING_RECORD(iface, MediaCatMoniker, IMoniker_iface); +} + +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_QueryInterface(IMoniker *iface, REFIID riid, + void **ppv) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; TRACE("\n\tIID:\t%s\n",debugstr_guid(riid)); - if (This == NULL || ppvObj == NULL) return E_POINTER; - - *ppvObj = NULL; + if (!ppv) + return E_POINTER; if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IPersist) || IsEqualGUID(riid, &IID_IPersistStream) || IsEqualGUID(riid, &IID_IMoniker)) { - *ppvObj = iface; - DEVENUM_IMediaCatMoniker_AddRef(iface); + *ppv = iface; + IMoniker_AddRef(iface); return S_OK; } FIXME("- no interface IID: %s\n", debugstr_guid(riid)); + *ppv = NULL; return E_NOINTERFACE; } -/********************************************************************** - * DEVENUM_IMediaCatMoniker_AddRef (also IUnknown) - */ -static ULONG WINAPI DEVENUM_IMediaCatMoniker_AddRef(LPMONIKER iface) +static ULONG WINAPI DEVENUM_IMediaCatMoniker_AddRef(IMoniker *iface) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; - TRACE("\n"); + MediaCatMoniker *This = impl_from_IMoniker(iface); + ULONG ref = InterlockedIncrement(&This->ref); - return InterlockedIncrement(&This->ref); + TRACE("(%p) ref=%d\n", This, ref); + + return ref; } -/********************************************************************** - * DEVENUM_IMediaCatMoniker_Release (also IUnknown) - */ -static ULONG WINAPI DEVENUM_IMediaCatMoniker_Release(LPMONIKER iface) +static ULONG WINAPI DEVENUM_IMediaCatMoniker_Release(IMoniker *iface) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; - ULONG ref; - TRACE("\n"); + MediaCatMoniker *This = impl_from_IMoniker(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); - ref = InterlockedDecrement(&This->ref); if (ref == 0) { RegCloseKey(This->hkey); CoTaskMemFree(This); @@ -353,11 +350,10 @@ static ULONG WINAPI DEVENUM_IMediaCatMoniker_Release(LPMONIKER iface) return ref; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetClassID( - LPMONIKER iface, - CLSID* pClassID) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetClassID(IMoniker *iface, CLSID *pClassID) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; + MediaCatMoniker *This = impl_from_IMoniker(iface); + FIXME("(%p)->(%p): stub\n", This, pClassID); if (pClassID == NULL) @@ -366,30 +362,28 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetClassID( return E_NOTIMPL; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsDirty(LPMONIKER iface) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsDirty(IMoniker *iface) { FIXME("(%p)->(): stub\n", iface); return S_FALSE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Load(LPMONIKER iface, IStream* pStm) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Load(IMoniker *iface, IStream *pStm) { FIXME("(%p)->(%p): stub\n", iface, pStm); return E_NOTIMPL; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Save(LPMONIKER iface, IStream* pStm, BOOL fClearDirty) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty) { FIXME("(%p)->(%p, %s): stub\n", iface, pStm, fClearDirty ? "true" : "false"); return STG_E_CANTSAVE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetSizeMax( - LPMONIKER iface, - ULARGE_INTEGER* pcbSize) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize) { FIXME("(%p)->(%p): stub\n", iface, pcbSize); @@ -398,25 +392,19 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetSizeMax( return S_OK; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - REFIID riidResult, - void** ppvResult) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, REFIID riidResult, void **ppvResult) { + MediaCatMoniker *This = impl_from_IMoniker(iface); IUnknown * pObj = NULL; IPropertyBag * pProp = NULL; CLSID clsID; VARIANT var; HRESULT res = E_FAIL; - MediaCatMoniker *This = (MediaCatMoniker *)iface; - - VariantInit(&var); - TRACE("(%p)->(%p, %p, %s, %p)\n", This, pbc, pmkToLeft, debugstr_guid(riidResult), ppvResult); + VariantInit(&var); *ppvResult = NULL; if(pmkToLeft==NULL) @@ -470,14 +458,11 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( return res; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToStorage( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - REFIID riid, - void** ppvObj) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToStorage(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, REFIID riid, void **ppvObj) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; + MediaCatMoniker *This = impl_from_IMoniker(iface); + TRACE("(%p)->(%p, %p, %s, %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObj); *ppvObj = NULL; @@ -495,12 +480,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToStorage( return MK_E_NOSTORAGE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Reduce( - LPMONIKER iface, - IBindCtx* pbc, - DWORD dwReduceHowFar, - IMoniker** ppmkToLeft, - IMoniker** ppmkReduced) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Reduce(IMoniker *iface, IBindCtx *pbc, + DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced) { TRACE("(%p)->(%p, %d, %p, %p)\n", iface, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced); @@ -511,11 +492,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Reduce( return MK_S_REDUCED_TO_SELF; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ComposeWith( - LPMONIKER iface, - IMoniker* pmkRight, - BOOL fOnlyIfNotGeneric, - IMoniker** ppmkComposite) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ComposeWith(IMoniker *iface, IMoniker *pmkRight, + BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite) { FIXME("(%p)->(%p, %s, %p): stub\n", iface, pmkRight, fOnlyIfNotGeneric ? "true" : "false", ppmkComposite); @@ -525,10 +503,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ComposeWith( return E_NOTIMPL; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Enum( - LPMONIKER iface, - BOOL fForward, - IEnumMoniker** ppenumMoniker) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Enum(IMoniker *iface, BOOL fForward, + IEnumMoniker **ppenumMoniker) { FIXME("(%p)->(%s, %p): stub\n", iface, fForward ? "true" : "false", ppenumMoniker); @@ -537,18 +513,14 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Enum( return S_OK; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsEqual( - LPMONIKER iface, - IMoniker* pmkOtherMoniker) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker) { FIXME("(%p)->(%p): stub\n", iface, pmkOtherMoniker); return E_NOTIMPL; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Hash( - LPMONIKER iface, - DWORD* pdwHash) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Hash(IMoniker *iface, DWORD *pdwHash) { TRACE("(%p)->(%p)\n", iface, pdwHash); @@ -557,22 +529,16 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Hash( return S_OK; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsRunning( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - IMoniker* pmkNewlyRunning) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsRunning(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning) { FIXME("(%p)->(%p, %p, %p): stub\n", iface, pbc, pmkToLeft, pmkNewlyRunning); return S_FALSE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetTimeOfLastChange( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - FILETIME* pFileTime) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, FILETIME *pFileTime) { TRACE("(%p)->(%p, %p, %p)\n", iface, pbc, pmkToLeft, pFileTime); @@ -582,9 +548,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetTimeOfLastChange( return MK_E_UNAVAILABLE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Inverse( - LPMONIKER iface, - IMoniker** ppmk) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Inverse(IMoniker *iface, IMoniker **ppmk) { TRACE("(%p)->(%p)\n", iface, ppmk); @@ -593,10 +557,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Inverse( return MK_E_NOINVERSE; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_CommonPrefixWith( - LPMONIKER iface, - IMoniker* pmkOtherMoniker, - IMoniker** ppmkPrefix) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_CommonPrefixWith(IMoniker *iface, + IMoniker *pmkOtherMoniker, IMoniker **ppmkPrefix) { TRACE("(%p)->(%p, %p)\n", iface, pmkOtherMoniker, ppmkPrefix); @@ -605,10 +567,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_CommonPrefixWith( return MK_E_NOPREFIX; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_RelativePathTo( - LPMONIKER iface, - IMoniker* pmkOther, - IMoniker** ppmkRelPath) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_RelativePathTo(IMoniker *iface, IMoniker *pmkOther, + IMoniker **ppmkRelPath) { TRACE("(%p)->(%p, %p)\n", iface, pmkOther, ppmkRelPath); @@ -617,13 +577,10 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_RelativePathTo( return MK_S_HIM; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetDisplayName( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - LPOLESTR* ppszDisplayName) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetDisplayName(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName) { - MediaCatMoniker *This = (MediaCatMoniker *)iface; + MediaCatMoniker *This = impl_from_IMoniker(iface); WCHAR wszBuffer[MAX_PATH]; static const WCHAR wszFriendlyName[] = {'F','r','i','e','n','d','l','y','N','a','m','e',0}; LONG received = sizeof(wszFriendlyName); @@ -643,13 +600,8 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetDisplayName( return E_FAIL; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ParseDisplayName( - LPMONIKER iface, - IBindCtx* pbc, - IMoniker* pmkToLeft, - LPOLESTR pszDisplayName, - ULONG* pchEaten, - IMoniker** ppmkOut) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, + IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut) { FIXME("(%p)->(%p, %p, %s, %p, %p)\n", iface, pbc, pmkToLeft, debugstr_w(pszDisplayName), pchEaten, ppmkOut); @@ -659,9 +611,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ParseDisplayName( return MK_E_SYNTAX; } -static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsSystemMoniker( - LPMONIKER iface, - DWORD* pdwMksys) +static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsSystemMoniker(IMoniker *iface, DWORD *pdwMksys) { TRACE("(%p)->(%p)\n", iface, pdwMksys); @@ -702,11 +652,11 @@ MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void) if (!pMoniker) return NULL; - pMoniker->lpVtbl = &IMoniker_Vtbl; + pMoniker->IMoniker_iface.lpVtbl = &IMoniker_Vtbl; pMoniker->ref = 0; pMoniker->hkey = NULL; - DEVENUM_IMediaCatMoniker_AddRef((LPMONIKER)pMoniker); + DEVENUM_IMediaCatMoniker_AddRef(&pMoniker->IMoniker_iface); DEVENUM_LockModule(); @@ -790,10 +740,10 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(IEnumMoniker *iface, ULONG celt, if (RegOpenKeyW(This->hkey, buffer, &pMoniker->hkey) != ERROR_SUCCESS) { - DEVENUM_IMediaCatMoniker_Release((LPMONIKER)pMoniker); + IMoniker_Release(&pMoniker->IMoniker_iface); break; } - rgelt[fetched] = (LPMONIKER)pMoniker; + rgelt[fetched] = &pMoniker->IMoniker_iface; fetched++; } diff --git a/dlls/devenum/parsedisplayname.c b/dlls/devenum/parsedisplayname.c index fa2f99565a6..b36b3edf97a 100644 --- a/dlls/devenum/parsedisplayname.c +++ b/dlls/devenum/parsedisplayname.c @@ -136,10 +136,10 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( strcatW(wszRegKeyName, pszBetween); if (RegCreateKeyW(hbasekey, wszRegKeyName, &pMoniker->hkey) == ERROR_SUCCESS) - *ppmkOut = (LPMONIKER)pMoniker; + *ppmkOut = &pMoniker->IMoniker_iface; else { - IMoniker_Release((LPMONIKER)pMoniker); + IMoniker_Release(&pMoniker->IMoniker_iface); res = MK_E_NOOBJECT; } }