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…
==============================================================================
--- 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_ma…
==============================================================================
--- 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.…
==============================================================================
--- 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?re…
==============================================================================
--- 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@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@8");
+ mapiFunctions.HrQueryAllRows = (void*) GetProcAddress(mapi_ex_provider,
"HrQueryAllRows@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@0");
+ mapiFunctions.MAPIOpenLocalFormContainer = (void *)
GetProcAddress(mapi_ex_provider, "MAPIOpenLocalFormContainer");
+ mapiFunctions.OpenStreamOnFile = (void*) GetProcAddress(mapi_ex_provider,
"OpenStreamOnFile@24");
+ mapiFunctions.ScInitMapiUtil = (void*) GetProcAddress(mapi_ex_provider,
"ScInitMapiUtil@4");
}
cleanUp:
Modified: trunk/reactos/dll/win32/mapi32/util.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mapi32/util.h?re…
==============================================================================
--- 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;