[ros-diffs] [cwittich] 44420: sync mapi32 with wine 1.1.34

cwittich at svn.reactos.org cwittich at svn.reactos.org
Sat Dec 5 20:47:30 CET 2009


Author: cwittich
Date: Sat Dec  5 20:47:30 2009
New Revision: 44420

URL: http://svn.reactos.org/svn/reactos?rev=44420&view=rev
Log:
sync mapi32 with wine 1.1.34

Modified:
    trunk/reactos/dll/win32/mapi32/imalloc.c
    trunk/reactos/dll/win32/mapi32/mapi32_main.c
    trunk/reactos/dll/win32/mapi32/sendmail.c
    trunk/reactos/dll/win32/mapi32/util.c
    trunk/reactos/dll/win32/mapi32/util.h

Modified: trunk/reactos/dll/win32/mapi32/imalloc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/imalloc.c?rev=44420&r1=44419&r2=44420&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mapi32/imalloc.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mapi32/imalloc.c [iso-8859-1] Sat Dec  5 20:47:30 2009
@@ -32,6 +32,7 @@
 #include "objbase.h"
 #include "shlwapi.h"
 #include "mapiutil.h"
+#include "util.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mapi);
@@ -62,6 +63,9 @@
 LPMALLOC WINAPI MAPIGetDefaultMalloc(void)
 {
     TRACE("()\n");
+
+    if (mapiFunctions.MAPIGetDefaultMalloc)
+        return mapiFunctions.MAPIGetDefaultMalloc();
 
     IMalloc_AddRef((LPMALLOC)&MAPI_IMalloc);
     return (LPMALLOC)&MAPI_IMalloc;

Modified: trunk/reactos/dll/win32/mapi32/mapi32_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/mapi32_main.c?rev=44420&r1=44419&r2=44420&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mapi32/mapi32_main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mapi32/mapi32_main.c [iso-8859-1] Sat Dec  5 20:47:30 2009
@@ -89,7 +89,15 @@
  */
 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 MAPIOpenLocalFormContainer(LPVOID *ppfcnt)
 {
+    if (mapiFunctions.MAPIOpenLocalFormContainer)
+        return mapiFunctions.MAPIOpenLocalFormContainer(ppfcnt);
+
     FIXME("(%p) Stub\n", ppfcnt);
     return E_FAIL;
 }
@@ -189,6 +200,9 @@
 
 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;

Modified: trunk/reactos/dll/win32/mapi32/sendmail.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/sendmail.c?rev=44420&r1=44419&r2=44420&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mapi32/sendmail.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mapi32/sendmail.c [iso-8859-1] Sat Dec  5 20:47:30 2009
@@ -59,7 +59,7 @@
     IMAPITable* msg_table;
     LPSRowSet rows = NULL;
     IMsgStore* msg_store;
-    IMAPIFolder* folder = NULL;
+    IMAPIFolder* folder = NULL, *draft_folder = NULL;
     LPENTRYID entry_id;
     LPSPropValue props;
     ULONG entry_len;
@@ -151,10 +151,10 @@
         goto logoff;
 
     IMsgStore_OpenEntry(msg_store, props[0].Value.bin.cb, (LPENTRYID) props[0].Value.bin.lpb,
-        NULL, MAPI_MODIFY, &obj_type, (LPUNKNOWN *) &folder);
+        NULL, MAPI_MODIFY, &obj_type, (LPUNKNOWN *) &draft_folder);
 
     /* Create a new message */
-    if (IMAPIFolder_CreateMessage(folder, NULL, 0, &msg) == S_OK)
+    if (IMAPIFolder_CreateMessage(draft_folder, NULL, 0, &msg) == S_OK)
     {
         ULONG token;
         SPropValue p;
@@ -329,7 +329,7 @@
             {
                 /* Show the message form (edit window) */
 
-                ret = IMAPISession_ShowForm(session, 0, msg_store, folder, NULL,
+                ret = IMAPISession_ShowForm(session, 0, msg_store, draft_folder, NULL,
                                             token, NULL, 0, status, flags, access,
                                             props->Value.lpszA);
 
@@ -354,7 +354,8 @@
     }
 
     /* Free up the resources we've used */
-    IMAPIFolder_Release(folder);
+    IMAPIFolder_Release(draft_folder);
+    if (folder) IMAPIFolder_Release(folder);
     IMsgStore_Release(msg_store);
 
 logoff: ;

Modified: trunk/reactos/dll/win32/mapi32/util.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/util.c?rev=44420&r1=44419&r2=44420&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mapi32/util.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mapi32/util.c [iso-8859-1] Sat Dec  5 20:47:30 2009
@@ -68,6 +68,9 @@
  */
 SCODE WINAPI ScInitMapiUtil(ULONG ulReserved)
 {
+    if (mapiFunctions.ScInitMapiUtil)
+        return mapiFunctions.ScInitMapiUtil(ulReserved);
+
     FIXME("(0x%08x)stub!\n", ulReserved);
     if (ulReserved)
         return MAPI_E_INVALID_PARAMETER;
@@ -91,7 +94,10 @@
  */
 VOID WINAPI DeinitMapiUtil(void)
 {
-    FIXME("()stub!\n");
+    if (mapiFunctions.DeinitMapiUtil)
+        mapiFunctions.DeinitMapiUtil();
+    else
+        FIXME("()stub!\n");
 }
 
 typedef LPVOID *LPMAPIALLOCBUFFER;
@@ -124,6 +130,9 @@
 
     TRACE("(%d,%p)\n", cbSize, lppBuffer);
 
+    if (mapiFunctions.MAPIAllocateBuffer)
+        return mapiFunctions.MAPIAllocateBuffer(cbSize, lppBuffer);
+
     if (!lppBuffer)
         return E_INVALIDARG;
 
@@ -163,6 +172,9 @@
     LPMAPIALLOCBUFFER lpBuff = lpOrig;
 
     TRACE("(%d,%p,%p)\n", cbSize, lpOrig, lppBuffer);
+
+    if (mapiFunctions.MAPIAllocateMore)
+        return mapiFunctions.MAPIAllocateMore(cbSize, lpOrig, lppBuffer);
 
     if (!lppBuffer || !lpBuff || !--lpBuff)
         return E_INVALIDARG;
@@ -200,6 +212,9 @@
 
     TRACE("(%p)\n", lpBuffer);
 
+    if (mapiFunctions.MAPIFreeBuffer)
+        return mapiFunctions.MAPIFreeBuffer(lpBuffer);
+
     if (lpBuff && --lpBuff)
     {
         while (lpBuff)
@@ -239,6 +254,9 @@
  */
 HRESULT WINAPI HrThisThreadAdviseSink(LPMAPIADVISESINK lpSink, LPMAPIADVISESINK* lppNewSink)
 {
+    if (mapiFunctions.HrThisThreadAdviseSink)
+        return mapiFunctions.HrThisThreadAdviseSink(lpSink, lppNewSink);
+
     FIXME("(%p,%p)semi-stub\n", lpSink, lppNewSink);
 
     if (!lpSink || !lppNewSink)
@@ -695,6 +713,9 @@
     TRACE("(%p,%p,0x%08x,%s,%s,%p)\n", lpAlloc, lpFree, ulFlags,
           debugstr_a((LPSTR)lpszPath), debugstr_a((LPSTR)lpszPrefix), lppStream);
 
+    if (mapiFunctions.OpenStreamOnFile)
+        return mapiFunctions.OpenStreamOnFile(lpAlloc, lpFree, ulFlags, lpszPath, lpszPrefix, lppStream);
+
     if (lppStream)
         *lppStream = NULL;
 
@@ -857,6 +878,9 @@
 
     TRACE("%s %s %p %u %d\n", component, qualifier, dll_path, dll_path_length, install);
 
+    if (mapiFunctions.FGetComponentPath)
+        return mapiFunctions.FGetComponentPath(component, qualifier, dll_path, dll_path_length, install);
+
     dll_path[0] = 0;
 
     hmsi = LoadLibraryA("msi.dll");
@@ -903,6 +927,9 @@
     LPSRestriction lpRestriction, LPSSortOrderSet lpSortOrderSet,
     LONG crowsMax, LPSRowSet *lppRows)
 {
+    if (mapiFunctions.HrQueryAllRows)
+        return mapiFunctions.HrQueryAllRows(lpTable, lpPropTags, lpRestriction, lpSortOrderSet, crowsMax, lppRows);
+
     FIXME("(%p, %p, %p, %p, %d, %p): stub\n", lpTable, lpPropTags, lpRestriction, lpSortOrderSet, crowsMax, lppRows);
     *lppRows = NULL;
     return MAPI_E_CALL_FAILED;
@@ -1057,7 +1084,20 @@
         mapiFunctions.MAPILogonEx = (void*) GetProcAddress(mapi_ex_provider, "MAPILogonEx");
         mapiFunctions.MAPIUninitialize = (void*) GetProcAddress(mapi_ex_provider, "MAPIUninitialize");
 
+        mapiFunctions.DeinitMapiUtil = (void*) GetProcAddress(mapi_ex_provider, "DeinitMapiUtil at 0");
+        mapiFunctions.DllCanUnloadNow = (void*) GetProcAddress(mapi_ex_provider, "DllCanUnloadNow");
         mapiFunctions.DllGetClassObject = (void*) GetProcAddress(mapi_ex_provider, "DllGetClassObject");
+        mapiFunctions.FGetComponentPath = (void*) GetProcAddress(mapi_ex_provider, "FGetComponentPath");
+        mapiFunctions.HrThisThreadAdviseSink = (void*) GetProcAddress(mapi_ex_provider, "HrThisThreadAdviseSink at 8");
+        mapiFunctions.HrQueryAllRows = (void*) GetProcAddress(mapi_ex_provider, "HrQueryAllRows at 24");
+        mapiFunctions.MAPIAdminProfiles = (void*) GetProcAddress(mapi_ex_provider, "MAPIAdminProfiles");
+        mapiFunctions.MAPIAllocateBuffer = (void*) GetProcAddress(mapi_ex_provider, "MAPIAllocateBuffer");
+        mapiFunctions.MAPIAllocateMore = (void*) GetProcAddress(mapi_ex_provider, "MAPIAllocateMore");
+        mapiFunctions.MAPIFreeBuffer = (void*) GetProcAddress(mapi_ex_provider, "MAPIFreeBuffer");
+        mapiFunctions.MAPIGetDefaultMalloc = (void*) GetProcAddress(mapi_ex_provider, "MAPIGetDefaultMalloc at 0");
+        mapiFunctions.MAPIOpenLocalFormContainer = (void *) GetProcAddress(mapi_ex_provider, "MAPIOpenLocalFormContainer");
+        mapiFunctions.OpenStreamOnFile = (void*) GetProcAddress(mapi_ex_provider, "OpenStreamOnFile at 24");
+        mapiFunctions.ScInitMapiUtil = (void*) GetProcAddress(mapi_ex_provider, "ScInitMapiUtil at 4");
     }
 
 cleanUp:

Modified: trunk/reactos/dll/win32/mapi32/util.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/util.h?rev=44420&r1=44419&r2=44420&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mapi32/util.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mapi32/util.h [iso-8859-1] Sat Dec  5 20:47:30 2009
@@ -44,7 +44,20 @@
     LPMAPISENDDOCUMENTS  MAPISendDocuments;
     LPMAPIUNINITIALIZE   MAPIUninitialize;
 
-    HRESULT (WINAPI *DllGetClassObject)(REFCLSID, REFIID, LPVOID *);
+    VOID     (WINAPI *DeinitMapiUtil)             (void);
+    HRESULT  (WINAPI *DllCanUnloadNow)            (void);
+    HRESULT  (WINAPI *DllGetClassObject)          (REFCLSID, REFIID, LPVOID *);
+    BOOL     (WINAPI *FGetComponentPath)          (LPCSTR, LPCSTR, LPSTR, DWORD, BOOL);
+    HRESULT  (WINAPI *MAPIAdminProfiles)          (ULONG, LPPROFADMIN *);
+    SCODE    (WINAPI *MAPIAllocateBuffer)         (ULONG, LPVOID *);
+    SCODE    (WINAPI *MAPIAllocateMore)           (ULONG, LPVOID, LPVOID *);
+    ULONG    (WINAPI *MAPIFreeBuffer)             (LPVOID);
+    LPMALLOC (WINAPI *MAPIGetDefaultMalloc)       (void);
+    HRESULT  (WINAPI *MAPIOpenLocalFormContainer) (LPVOID *);
+    HRESULT  (WINAPI *HrThisThreadAdviseSink)     (LPMAPIADVISESINK, LPMAPIADVISESINK*);
+    HRESULT  (WINAPI *HrQueryAllRows)             (LPMAPITABLE, LPSPropTagArray, LPSRestriction, LPSSortOrderSet, LONG, LPSRowSet *);
+    HRESULT  (WINAPI *OpenStreamOnFile)           (LPALLOCATEBUFFER, LPFREEBUFFER, ULONG, LPWSTR, LPWSTR, LPSTREAM *);
+    SCODE    (WINAPI *ScInitMapiUtil)             (ULONG ulReserved);
 } MAPI_FUNCTIONS;
 
 extern MAPI_FUNCTIONS mapiFunctions;




More information about the Ros-diffs mailing list