Module: wine Branch: master Commit: cc18fc0f1419ef0d029ca5acc2a85979c7684e2a URL: http://source.winehq.org/git/wine.git/?a=commit;h=cc18fc0f1419ef0d029ca5acc2... Author: Jacek Caban <jacek(a)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