mapi32: Load and store MAPI function pointers after loading MAPI providers.

This commit is contained in:
Owen Rudge 2009-09-18 15:15:40 +01:00 committed by Alexandre Julliard
parent b6e5ee604a
commit 69156f5ae2
2 changed files with 51 additions and 0 deletions

View File

@ -48,6 +48,8 @@ static const BYTE digitsToHex[] = {
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,10,11,12,13,
14,15 };
MAPI_FUNCTIONS mapiFunctions;
/**************************************************************************
* ScInitMapiUtil (MAPI32.33)
*
@ -1029,6 +1031,33 @@ void load_mapi_providers(void)
load_mapi_provider(hkeyMail, regkey_dllpath, &mapi_provider);
load_mapi_provider(hkeyMail, regkey_dllpath_ex, &mapi_ex_provider);
/* Now try to load our function pointers */
ZeroMemory(&mapiFunctions, sizeof(mapiFunctions));
/* Simple MAPI functions */
if (mapi_provider)
{
mapiFunctions.MAPIAddress = (void*) GetProcAddress(mapi_provider, "MAPIAddress");
mapiFunctions.MAPIDeleteMail = (void*) GetProcAddress(mapi_provider, "MAPIDeleteMail");
mapiFunctions.MAPIDetails = (void*) GetProcAddress(mapi_provider, "MAPIDetails");
mapiFunctions.MAPIFindNext = (void*) GetProcAddress(mapi_provider, "MAPIFindNext");
mapiFunctions.MAPILogoff = (void*) GetProcAddress(mapi_provider, "MAPILogoff");
mapiFunctions.MAPILogon = (void*) GetProcAddress(mapi_provider, "MAPILogon");
mapiFunctions.MAPIReadMail = (void*) GetProcAddress(mapi_provider, "MAPIReadMail");
mapiFunctions.MAPIResolveName = (void*) GetProcAddress(mapi_provider, "MAPIResolveName");
mapiFunctions.MAPISaveMail = (void*) GetProcAddress(mapi_provider, "MAPISaveMail");
mapiFunctions.MAPISendDocuments = (void*) GetProcAddress(mapi_provider, "MAPISendDocuments");
mapiFunctions.MAPISendMail = (void*) GetProcAddress(mapi_provider, "MAPISendMail");
}
/* Extended MAPI functions */
if (mapi_ex_provider)
{
mapiFunctions.MAPIInitialize = (void*) GetProcAddress(mapi_ex_provider, "MAPIInitialize");
mapiFunctions.MAPILogonEx = (void*) GetProcAddress(mapi_ex_provider, "MAPILogonEx");
mapiFunctions.MAPIUninitialize = (void*) GetProcAddress(mapi_ex_provider, "MAPIUninitialize");
}
cleanUp:
RegCloseKey(hkeyMail);
HeapFree(GetProcessHeap(), 0, appKey);

View File

@ -22,7 +22,29 @@
#define _MAPI_UTIL_H
#include <mapi.h>
#include <mapix.h>
extern void load_mapi_providers(void);
extern void unload_mapi_providers(void);
typedef struct MAPI_FUNCTIONS {
LPMAPIADDRESS MAPIAddress;
LPMAPIDELETEMAIL MAPIDeleteMail;
LPMAPIDETAILS MAPIDetails;
LPMAPIFINDNEXT MAPIFindNext;
LPMAPIINITIALIZE MAPIInitialize;
LPMAPILOGOFF MAPILogoff;
LPMAPILOGON MAPILogon;
LPMAPILOGONEX MAPILogonEx;
LPMAPIREADMAIL MAPIReadMail;
LPMAPIRESOLVENAME MAPIResolveName;
LPMAPISAVEMAIL MAPISaveMail;
LPMAPISENDMAIL MAPISendMail;
LPMAPISENDDOCUMENTS MAPISendDocuments;
LPMAPIUNINITIALIZE MAPIUninitialize;
} MAPI_FUNCTIONS;
extern MAPI_FUNCTIONS mapiFunctions;
#endif