Jacek Caban : atl80: Added AtlComModuleRegisterServer implementation ( based on AtlModuleRegisterServer).

Alexandre Julliard julliard at winehq.org
Fri Jan 4 12:26:02 CST 2013


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jan  4 11:33:50 2013 +0100

atl80: Added AtlComModuleRegisterServer implementation (based on AtlModuleRegisterServer).

---

 dlls/atl80/atl80.c    |   36 ++++++++++++++++++++++++++++++++++++
 dlls/atl80/atl80.spec |    2 +-
 2 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/dlls/atl80/atl80.c b/dlls/atl80/atl80.c
index c85f75e..278d736 100644
--- a/dlls/atl80/atl80.c
+++ b/dlls/atl80/atl80.c
@@ -26,6 +26,42 @@
 WINE_DEFAULT_DEBUG_CHANNEL(atl);
 
 /***********************************************************************
+ *           AtlRegisterTypeLib         [atl80.18]
+ */
+HRESULT WINAPI AtlComModuleRegisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid)
+{
+    const struct _ATL_CATMAP_ENTRY *catmap;
+    _ATL_OBJMAP_ENTRY **iter;
+    HRESULT hres;
+
+    TRACE("(%p %x %s)\n", mod, bRegTypeLib, debugstr_guid(clsid));
+
+    for(iter = mod->m_ppAutoObjMapFirst; iter < mod->m_ppAutoObjMapLast; iter++) {
+        if(!clsid || IsEqualCLSID((*iter)->pclsid, clsid)) {
+            TRACE("Registering clsid %s\n", debugstr_guid((*iter)->pclsid));
+            hres = (*iter)->pfnUpdateRegistry(TRUE);
+            if(FAILED(hres))
+                return hres;
+
+            catmap = (*iter)->pfnGetCategoryMap();
+            if(catmap) {
+                hres = AtlRegisterClassCategoriesHelper((*iter)->pclsid, catmap, TRUE);
+                if(FAILED(hres))
+                    return hres;
+            }
+        }
+    }
+
+    if(bRegTypeLib) {
+        hres = AtlRegisterTypeLib(mod->m_hInstTypeLib, NULL);
+        if(FAILED(hres))
+            return hres;
+    }
+
+    return S_OK;
+}
+
+/***********************************************************************
  *           AtlRegisterTypeLib         [atl80.19]
  */
 HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE inst, const WCHAR *index)
diff --git a/dlls/atl80/atl80.spec b/dlls/atl80/atl80.spec
index e4d73f1..5c5967e 100644
--- a/dlls/atl80/atl80.spec
+++ b/dlls/atl80/atl80.spec
@@ -5,7 +5,7 @@
 14 stdcall AtlUnmarshalPtr(ptr ptr ptr) atl100.AtlUnmarshalPtr
 15 stdcall AtlComModuleGetClassObject(ptr ptr ptr ptr) atl100.AtlComModuleGetClassObject
 17 stub AtlComModuleRegisterClassObjects
-18 stub AtlComModuleRegisterServer(ptr long ptr)
+18 stdcall AtlComModuleRegisterServer(ptr long ptr)
 19 stdcall AtlRegisterTypeLib(ptr wstr)
 20 stub AtlComModuleRevokeClassObjects
 22 stub AtlComModuleUnregisterServer




More information about the wine-cvs mailing list