- Merge from trunk up to r45543
[reactos.git] / dll / win32 / mapi32 / mapi32_main.c
index 28c2f14..906c22e 100644 (file)
@@ -89,7 +89,15 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
  */
 HRESULT WINAPI DllCanUnloadNow(void)
 {
-    return MAPI_ObjectCount == 0 ? S_OK : S_FALSE;
+    HRESULT ret = S_OK;
+
+    if (mapiFunctions.DllCanUnloadNow)
+    {
+        ret = mapiFunctions.DllCanUnloadNow();
+        TRACE("(): provider returns %d\n", ret);
+    }
+
+    return MAPI_ObjectCount == 0 ? ret : S_FALSE;
 }
 
 /***********************************************************************
@@ -167,6 +175,9 @@ HRESULT WINAPI MAPILogonEx(ULONG_PTR uiparam, LPWSTR profile,
 
 HRESULT WINAPI MAPIOpenLocalFormContainer(LPVOID *ppfcnt)
 {
+    if (mapiFunctions.MAPIOpenLocalFormContainer)
+        return mapiFunctions.MAPIOpenLocalFormContainer(ppfcnt);
+
     FIXME("(%p) Stub\n", ppfcnt);
     return E_FAIL;
 }
@@ -189,6 +200,9 @@ VOID WINAPI MAPIUninitialize(void)
 
 HRESULT WINAPI MAPIAdminProfiles(ULONG ulFlags,  LPPROFADMIN *lppProfAdmin)
 {
+    if (mapiFunctions.MAPIAdminProfiles)
+        return mapiFunctions.MAPIAdminProfiles(ulFlags, lppProfAdmin);
+
     FIXME("(%u, %p): stub\n", ulFlags, lppProfAdmin);
     *lppProfAdmin = NULL;
     return E_FAIL;