mapi32: Load and store MAPI function pointers after loading MAPI providers.
This commit is contained in:
parent
b6e5ee604a
commit
69156f5ae2
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue