/*********************************************************************** * 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(!*iter || (clsid && !IsEqualCLSID((*iter)->pclsid, clsid))) continue; 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; }
/*********************************************************************** * AtlModuleRegisterServer [ATL.@] * */ HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* clsid) { const _ATL_OBJMAP_ENTRYW_V1 *obj; int i; HRESULT hRes; TRACE("%p %d %s\n", pM, bRegTypeLib, debugstr_guid(clsid)); if (pM == NULL) return E_INVALIDARG; for (i = 0; (obj = get_objmap_entry( pM, i )) != NULL; i++) /* register CLSIDs */ { if (!clsid || IsEqualCLSID(obj->pclsid, clsid)) { TRACE("Registering clsid %s\n", debugstr_guid(obj->pclsid)); hRes = obj->pfnUpdateRegistry(TRUE); /* register */ if (FAILED(hRes)) return hRes; } } if (bRegTypeLib) { hRes = AtlRegisterTypeLib(pM->m_hInstTypeLib, NULL); if (FAILED(hRes)) return hRes; } return S_OK; }
/*********************************************************************** * AtlModuleGetClassObject [ATL.@] */ HRESULT WINAPI AtlModuleRegisterTypeLib(_ATL_MODULEW *pm, LPCOLESTR lpszIndex) { TRACE("%p %s\n", pm, debugstr_w(lpszIndex)); if (!pm) return E_INVALIDARG; return AtlRegisterTypeLib(pm->m_hInstTypeLib, lpszIndex); }
/*********************************************************************** * AtlModuleRegisterServer [ATL.@] * */ HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* clsid) { const _ATL_OBJMAP_ENTRYW_V1 *obj; int i; HRESULT hRes; TRACE("%p %d %s\n", pM, bRegTypeLib, debugstr_guid(clsid)); if (pM == NULL) return E_INVALIDARG; for (i = 0; (obj = get_objmap_entry( pM, i )) != NULL; i++) /* register CLSIDs */ { if (!clsid || IsEqualCLSID(obj->pclsid, clsid)) { TRACE("Registering clsid %s\n", debugstr_guid(obj->pclsid)); hRes = obj->pfnUpdateRegistry(TRUE); /* register */ if (FAILED(hRes)) return hRes; if(pM->cbSize > ATLVer1Size) { const struct _ATL_CATMAP_ENTRY *catmap; catmap = ((const _ATL_OBJMAP_ENTRYW*)obj)->pfnGetCategoryMap(); if(catmap) { hRes = AtlRegisterClassCategoriesHelper(obj->pclsid, catmap, TRUE); if(FAILED(hRes)) return hRes; } } } } if (bRegTypeLib) { hRes = AtlRegisterTypeLib(pM->m_hInstTypeLib, NULL); if (FAILED(hRes)) return hRes; } return S_OK; }