From 66a515aef25f78c45ebb1ced1c5a2a9d93d70e29 Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Sat, 4 Dec 2010 22:13:13 +0100 Subject: [PATCH] devenum: Use an iface instead of an vtbl pointer in RegPropBagImpl. --- dlls/devenum/mediacatenum.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/dlls/devenum/mediacatenum.c b/dlls/devenum/mediacatenum.c index 349ea7d6e43..7b44c13373a 100644 --- a/dlls/devenum/mediacatenum.c +++ b/dlls/devenum/mediacatenum.c @@ -36,18 +36,23 @@ static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface); typedef struct { - const IPropertyBagVtbl *lpVtbl; + IPropertyBag IPropertyBag_iface; LONG ref; HKEY hkey; } RegPropBagImpl; +static inline RegPropBagImpl *impl_from_IPropertyBag(IPropertyBag *iface) +{ + return CONTAINING_RECORD(iface, RegPropBagImpl, IPropertyBag_iface); +} + static HRESULT WINAPI DEVENUM_IPropertyBag_QueryInterface( LPPROPERTYBAG iface, REFIID riid, LPVOID *ppvObj) { - RegPropBagImpl *This = (RegPropBagImpl *)iface; + RegPropBagImpl *This = impl_from_IPropertyBag(iface); TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj); @@ -70,7 +75,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_QueryInterface( */ static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface) { - RegPropBagImpl *This = (RegPropBagImpl *)iface; + RegPropBagImpl *This = impl_from_IPropertyBag(iface); TRACE("(%p)->() AddRef from %d\n", iface, This->ref); @@ -82,7 +87,7 @@ static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface) */ static ULONG WINAPI DEVENUM_IPropertyBag_Release(LPPROPERTYBAG iface) { - RegPropBagImpl *This = (RegPropBagImpl *)iface; + RegPropBagImpl *This = impl_from_IPropertyBag(iface); ULONG ref; TRACE("(%p)->() ReleaseThis->ref from %d\n", iface, This->ref); @@ -105,7 +110,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( LPVOID pData = NULL; DWORD received; DWORD type = 0; - RegPropBagImpl *This = (RegPropBagImpl *)iface; + RegPropBagImpl *This = impl_from_IPropertyBag(iface); HRESULT res = S_OK; LONG reswin32; @@ -212,7 +217,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Write( LPCOLESTR pszPropName, VARIANT* pVar) { - RegPropBagImpl *This = (RegPropBagImpl *)iface; + RegPropBagImpl *This = impl_from_IPropertyBag(iface); LPVOID lpData = NULL; DWORD cbData = 0; DWORD dwType = 0; @@ -277,10 +282,10 @@ static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag) RegPropBagImpl * rpb = CoTaskMemAlloc(sizeof(RegPropBagImpl)); if (!rpb) return E_OUTOFMEMORY; - rpb->lpVtbl = &IPropertyBag_Vtbl; + rpb->IPropertyBag_iface.lpVtbl = &IPropertyBag_Vtbl; rpb->ref = 1; rpb->hkey = hkey; - *ppBag = (IPropertyBag*)rpb; + *ppBag = &rpb->IPropertyBag_iface; DEVENUM_LockModule(); return S_OK; }