Michael Stefaniuc : wiaservc: COM cleanup for the IClassFactory iface.

Alexandre Julliard julliard at winehq.org
Thu Jan 13 11:48:56 CST 2011


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Jan 13 01:27:09 2011 +0100

wiaservc: COM cleanup for the IClassFactory iface.

---

 dlls/wiaservc/factory.c          |   11 ++++++++---
 dlls/wiaservc/service.c          |    5 ++---
 dlls/wiaservc/wiaservc_private.h |    2 +-
 3 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/dlls/wiaservc/factory.c b/dlls/wiaservc/factory.c
index 30caa89..a80b830 100644
--- a/dlls/wiaservc/factory.c
+++ b/dlls/wiaservc/factory.c
@@ -32,6 +32,11 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(wia);
 
+static inline ClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
+{
+    return CONTAINING_RECORD(iface, ClassFactoryImpl, IClassFactory_iface);
+}
+
 static ULONG WINAPI
 WIASERVC_IClassFactory_AddRef(LPCLASSFACTORY iface)
 {
@@ -42,11 +47,11 @@ static HRESULT WINAPI
 WIASERVC_IClassFactory_QueryInterface(LPCLASSFACTORY iface, REFIID riid,
                                       LPVOID *ppvObj)
 {
-    ClassFactoryImpl *This = (ClassFactoryImpl *) iface;
+    ClassFactoryImpl *This = impl_from_IClassFactory(iface);
 
     if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory))
     {
-        *ppvObj = &This->lpVtbl;
+        *ppvObj = &This->IClassFactory_iface;
         return S_OK;
     }
 
@@ -99,5 +104,5 @@ static const IClassFactoryVtbl WIASERVC_IClassFactory_Vtbl =
 
 ClassFactoryImpl WIASERVC_ClassFactory =
 {
-    &WIASERVC_IClassFactory_Vtbl
+    { &WIASERVC_IClassFactory_Vtbl }
 };
diff --git a/dlls/wiaservc/service.c b/dlls/wiaservc/service.c
index 14b21bd..c1cdb83 100644
--- a/dlls/wiaservc/service.c
+++ b/dlls/wiaservc/service.c
@@ -95,9 +95,8 @@ StartCount(void)
         return FALSE;
 
     hr = CoRegisterClassObject(&CLSID_WiaDevMgr,
-                               (IUnknown *) &WIASERVC_ClassFactory,
-                               CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE,
-                               &dwReg);
+                               (IUnknown *) &WIASERVC_ClassFactory.IClassFactory_iface,
+                               CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE, &dwReg);
     if (FAILED(hr))
         return FALSE;
 
diff --git a/dlls/wiaservc/wiaservc_private.h b/dlls/wiaservc/wiaservc_private.h
index 1032819..72c0b21 100644
--- a/dlls/wiaservc/wiaservc_private.h
+++ b/dlls/wiaservc/wiaservc_private.h
@@ -23,7 +23,7 @@
 
 typedef struct
 {
-    const IClassFactoryVtbl *lpVtbl;
+    IClassFactory IClassFactory_iface;
 } ClassFactoryImpl;
 
 extern ClassFactoryImpl WIASERVC_ClassFactory;




More information about the wine-cvs mailing list