Jacek Caban : atl100: Added AtlComModuleRegisterClassObjects implementation ( based on AtlModuleRegisterClassObjects).
Alexandre Julliard
julliard at winehq.org
Fri Feb 8 14:13:45 CST 2013
Module: wine
Branch: master
Commit: 68a4c30e8b702e425ea099061dd3e8510e2a7f60
URL: http://source.winehq.org/git/wine.git/?a=commit;h=68a4c30e8b702e425ea099061dd3e8510e2a7f60
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Feb 8 10:59:19 2013 +0100
atl100: Added AtlComModuleRegisterClassObjects implementation (based on AtlModuleRegisterClassObjects).
---
dlls/atl100/atl.c | 32 ++++++++++++++++++++++++++++++++
dlls/atl100/atl100.spec | 2 +-
dlls/atl80/atl80.spec | 2 +-
include/atlbase.h | 1 +
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c
index ce35b38..ebb47a1 100644
--- a/dlls/atl100/atl.c
+++ b/dlls/atl100/atl.c
@@ -456,6 +456,38 @@ HRESULT WINAPI AtlComModuleGetClassObject(_ATL_COM_MODULE *pm, REFCLSID rclsid,
}
/***********************************************************************
+ * AtlComModuleRegisterClassObjects [atl100.17]
+ */
+HRESULT WINAPI AtlComModuleRegisterClassObjects(_ATL_COM_MODULE *module, DWORD context, DWORD flags)
+{
+ _ATL_OBJMAP_ENTRY **iter;
+ IUnknown *unk;
+ HRESULT hres;
+
+ TRACE("(%p %x %x)\n", module, context, flags);
+
+ if(!module)
+ return E_INVALIDARG;
+
+ for(iter = module->m_ppAutoObjMapFirst; iter < module->m_ppAutoObjMapLast; iter++) {
+ if(!(*iter)->pfnGetClassObject)
+ continue;
+
+ hres = (*iter)->pfnGetClassObject((*iter)->pfnCreateInstance, &IID_IUnknown, (void**)&unk);
+ if(FAILED(hres))
+ return hres;
+
+ hres = CoRegisterClassObject((*iter)->pclsid, unk, context, flags, &(*iter)->dwRegister);
+ IUnknown_Release(unk);
+ if(FAILED(hres))
+ return hres;
+ }
+
+ return S_OK;
+
+}
+
+/***********************************************************************
* AtlComModuleUnregisterServer [atl100.22]
*/
HRESULT WINAPI AtlComModuleUnregisterServer(_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid)
diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec
index c959a29..fa5d251 100644
--- a/dlls/atl100/atl100.spec
+++ b/dlls/atl100/atl100.spec
@@ -4,7 +4,7 @@
13 stdcall AtlMarshalPtrInProc(ptr ptr ptr)
14 stdcall AtlUnmarshalPtr(ptr ptr ptr)
15 stdcall AtlComModuleGetClassObject(ptr ptr ptr ptr)
-17 stub AtlComModuleRegisterClassObjects
+17 stdcall AtlComModuleRegisterClassObjects(ptr long long)
20 stub AtlComModuleRevokeClassObjects
22 stdcall AtlComModuleUnregisterServer(ptr long ptr)
23 stdcall AtlUpdateRegistryFromResourceD(long wstr long ptr ptr)
diff --git a/dlls/atl80/atl80.spec b/dlls/atl80/atl80.spec
index dfc9c43..dbd38aa 100644
--- a/dlls/atl80/atl80.spec
+++ b/dlls/atl80/atl80.spec
@@ -4,7 +4,7 @@
13 stdcall AtlMarshalPtrInProc(ptr ptr ptr) atl100.AtlMarshalPtrInProc
14 stdcall AtlUnmarshalPtr(ptr ptr ptr) atl100.AtlUnmarshalPtr
15 stdcall AtlComModuleGetClassObject(ptr ptr ptr ptr) atl100.AtlComModuleGetClassObject
-17 stub AtlComModuleRegisterClassObjects
+17 stdcall AtlComModuleRegisterClassObjects(ptr long long) atl100.AtlComModuleRegisterClassObjects
18 stdcall AtlComModuleRegisterServer(ptr long ptr)
19 stdcall AtlRegisterTypeLib(ptr wstr)
20 stub AtlComModuleRevokeClassObjects
diff --git a/include/atlbase.h b/include/atlbase.h
index 7d18d81..1036b10 100644
--- a/include/atlbase.h
+++ b/include/atlbase.h
@@ -255,6 +255,7 @@ HRESULT WINAPI AtlLoadTypeLib(HINSTANCE,LPCOLESTR,BSTR*,ITypeLib**);
HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE,LPCOLESTR);
HRESULT WINAPI AtlRegisterClassCategoriesHelper(REFCLSID,const struct _ATL_CATMAP_ENTRY*,BOOL);
HRESULT WINAPI AtlComModuleGetClassObject(_ATL_COM_MODULE*,REFCLSID,REFIID,void**);
+HRESULT WINAPI AtlComModuleRegisterClassObjects(_ATL_COM_MODULE*,DWORD,DWORD);
HRESULT WINAPI AtlComModuleUnregisterServer(_ATL_COM_MODULE*,BOOL,const CLSID*);
BOOL WINAPI AtlWaitWithMessageLoop(HANDLE);
HRESULT WINAPI AtlGetObjectSourceInterface(IUnknown*,GUID*,IID*,unsigned short*,unsigned short*);
More information about the wine-cvs
mailing list