Owen Rudge : mapi32: Pass DllGetClassObject through to Extended MAPI provider.

Alexandre Julliard julliard at winehq.org
Thu Oct 1 09:48:19 CDT 2009


Module: wine
Branch: master
Commit: cc4a6693f1a0364ed9af72a52adb040a55c5a802
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cc4a6693f1a0364ed9af72a52adb040a55c5a802

Author: Owen Rudge <orudge at codeweavers.com>
Date:   Wed Sep 30 16:09:25 2009 +0100

mapi32: Pass DllGetClassObject through to Extended MAPI provider.

---

 dlls/mapi32/mapi32_main.c |   11 ++++++++++-
 dlls/mapi32/util.c        |    2 ++
 dlls/mapi32/util.h        |    2 ++
 3 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/dlls/mapi32/mapi32_main.c b/dlls/mapi32/mapi32_main.c
index 5039c29..28c2f14 100644
--- a/dlls/mapi32/mapi32_main.c
+++ b/dlls/mapi32/mapi32_main.c
@@ -61,8 +61,17 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
  */
 HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
 {
-    *ppv = NULL;
+    if (mapiFunctions.DllGetClassObject)
+    {
+        HRESULT ret = mapiFunctions.DllGetClassObject(rclsid, iid, ppv);
+
+        TRACE("ret: %x\n", ret);
+        return ret;
+    }
+
     FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n", debugstr_guid(rclsid), debugstr_guid(iid));
+
+    *ppv = NULL;
     return CLASS_E_CLASSNOTAVAILABLE;
 }
 
diff --git a/dlls/mapi32/util.c b/dlls/mapi32/util.c
index 4957941..fdb8497 100644
--- a/dlls/mapi32/util.c
+++ b/dlls/mapi32/util.c
@@ -1056,6 +1056,8 @@ void load_mapi_providers(void)
         mapiFunctions.MAPIInitialize = (void*) GetProcAddress(mapi_ex_provider, "MAPIInitialize");
         mapiFunctions.MAPILogonEx = (void*) GetProcAddress(mapi_ex_provider, "MAPILogonEx");
         mapiFunctions.MAPIUninitialize = (void*) GetProcAddress(mapi_ex_provider, "MAPIUninitialize");
+
+        mapiFunctions.DllGetClassObject = (void*) GetProcAddress(mapi_ex_provider, "DllGetClassObject");
     }
 
 cleanUp:
diff --git a/dlls/mapi32/util.h b/dlls/mapi32/util.h
index 69b1603..9899053 100644
--- a/dlls/mapi32/util.h
+++ b/dlls/mapi32/util.h
@@ -43,6 +43,8 @@ typedef struct MAPI_FUNCTIONS {
     LPMAPISENDMAIL       MAPISendMail;
     LPMAPISENDDOCUMENTS  MAPISendDocuments;
     LPMAPIUNINITIALIZE   MAPIUninitialize;
+
+    HRESULT (WINAPI *DllGetClassObject)(REFCLSID, REFIID, LPVOID *);
 } MAPI_FUNCTIONS;
 
 extern MAPI_FUNCTIONS mapiFunctions;




More information about the wine-cvs mailing list