Jacek Caban : atl100: Added AtlUpdateRegistryFromResourceD implementation ( based on AtlModuleUpdateRegistryFromResourceD).
Alexandre Julliard
julliard at winehq.org
Tue Dec 11 14:41:15 CST 2012
Module: wine
Branch: master
Commit: a97a667670c6028d9466491b9fbef664d0ebcf29
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a97a667670c6028d9466491b9fbef664d0ebcf29
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Dec 11 13:02:14 2012 +0100
atl100: Added AtlUpdateRegistryFromResourceD implementation (based on AtlModuleUpdateRegistryFromResourceD).
---
dlls/atl100/atl100.spec | 2 +-
dlls/atl100/registrar.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
include/atlbase.h | 1 +
3 files changed, 47 insertions(+), 1 deletions(-)
diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec
index 47e3c56..13e043b 100644
--- a/dlls/atl100/atl100.spec
+++ b/dlls/atl100/atl100.spec
@@ -7,7 +7,7 @@
17 stub AtlComModuleRegisterClassObjects
20 stub AtlComModuleRevokeClassObjects
22 stub AtlComModuleUnregisterServer
-23 stub AtlUpdateRegistryFromResourceD
+23 stdcall AtlUpdateRegistryFromResourceD(long wstr long ptr ptr)
24 stub AtlWaitWithMessageLoop
25 stub AtlSetErrorInfo
26 stdcall AtlCreateTargetDC(long ptr)
diff --git a/dlls/atl100/registrar.c b/dlls/atl100/registrar.c
index f9f5b3c..9cad32a 100644
--- a/dlls/atl100/registrar.c
+++ b/dlls/atl100/registrar.c
@@ -702,3 +702,48 @@ HRESULT WINAPI AtlCreateRegistrar(IRegistrar **ret)
*ret = ®istrar->IRegistrar_iface;
return S_OK;
}
+
+/***********************************************************************
+ * AtlUpdateRegistryFromResourceD [atl100.@]
+ */
+HRESULT WINAPI AtlUpdateRegistryFromResourceD(HINSTANCE inst, LPCOLESTR res,
+ BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries, IRegistrar *pReg)
+{
+ const struct _ATL_REGMAP_ENTRY *iter;
+ WCHAR module_name[MAX_PATH];
+ IRegistrar *registrar;
+ HRESULT hres;
+
+ static const WCHAR moduleW[] = {'M','O','D','U','L','E',0};
+ static const WCHAR registryW[] = {'R','E','G','I','S','T','R','Y',0};
+
+ if(!GetModuleFileNameW(inst, module_name, MAX_PATH)) {
+ FIXME("hinst %p: did not get module name\n", inst);
+ return E_FAIL;
+ }
+
+ TRACE("%p (%s), %s, %d, %p, %p\n", inst, debugstr_w(module_name),
+ debugstr_w(res), bRegister, pMapEntries, pReg);
+
+ if(pReg) {
+ registrar = pReg;
+ }else {
+ hres = AtlCreateRegistrar(®istrar);
+ if(FAILED(hres))
+ return hres;
+ }
+
+ IRegistrar_AddReplacement(registrar, moduleW, module_name);
+
+ for (iter = pMapEntries; iter && iter->szKey; iter++)
+ IRegistrar_AddReplacement(registrar, iter->szKey, iter->szData);
+
+ if(bRegister)
+ hres = IRegistrar_ResourceRegisterSz(registrar, module_name, res, registryW);
+ else
+ hres = IRegistrar_ResourceUnregisterSz(registrar, module_name, res, registryW);
+
+ if(registrar != pReg)
+ IRegistrar_Release(registrar);
+ return hres;
+}
diff --git a/include/atlbase.h b/include/atlbase.h
index 1e48f58..5dd0d5b 100644
--- a/include/atlbase.h
+++ b/include/atlbase.h
@@ -210,5 +210,6 @@ HRESULT WINAPI AtlModuleTerm(_ATL_MODULEW* pM);
HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID * iid, DWORD dw);
HRESULT WINAPI AtlUnmarshalPtr(IStream *pStream, const IID *iid, IUnknown **ppUnk);
HRESULT WINAPI AtlCreateRegistrar(IRegistrar**);
+HRESULT WINAPI AtlUpdateRegistryFromResourceD(HINSTANCE,LPCOLESTR,BOOL,struct _ATL_REGMAP_ENTRY*,IRegistrar*);
#endif /* __WINE_ATLBASE_H__ */
More information about the wine-cvs
mailing list