Robert Shearman : atl: Implement AtlModuleGetClassObject.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 12 10:02:22 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: be35acf02ed382a5f4d043e0c4006ee29500b687
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=be35acf02ed382a5f4d043e0c4006ee29500b687
Author: Robert Shearman <rob at codeweavers.com>
Date: Mon Jun 12 01:34:53 2006 +0100
atl: Implement AtlModuleGetClassObject.
---
dlls/atl/atl_main.c | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/dlls/atl/atl_main.c b/dlls/atl/atl_main.c
index 1daff6c..e3aa9f3 100644
--- a/dlls/atl/atl_main.c
+++ b/dlls/atl/atl_main.c
@@ -299,7 +299,27 @@ HRESULT WINAPI AtlUnmarshalPtr(IStream *
HRESULT WINAPI AtlModuleGetClassObject(_ATL_MODULEW *pm, REFCLSID rclsid,
REFIID riid, LPVOID *ppv)
{
- FIXME("%p %p %p %p\n", pm, rclsid, riid, ppv);
+ int i;
+
+ TRACE("%p %s %s %p\n", pm, debugstr_guid(rclsid), debugstr_guid(riid), ppv);
+
+ if (pm == NULL)
+ return E_INVALIDARG;
+
+ for (i = 0; pm->m_pObjMap[i].pclsid != NULL; i++)
+ {
+ if (IsEqualCLSID(pm->m_pObjMap[i].pclsid, rclsid))
+ {
+ _ATL_OBJMAP_ENTRYW *obj = &pm->m_pObjMap[i];
+
+ TRACE("found object %i\n", i);
+ if (obj->pfnGetClassObject)
+ return obj->pfnGetClassObject(obj->pfnCreateInstance, riid, ppv);
+ }
+ }
+
+ WARN("no class object found for %s\n", debugstr_guid(rclsid));
+
return E_FAIL;
}
More information about the wine-cvs
mailing list