home *** CD-ROM | disk | FTP | other *** search
- /*
- * M A P I S P I . H
- *
- * Defines the calls and structures exchanged between MAPI or the spooler
- * and the MAPI service providers
- *
- * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
- */
-
- #ifndef MAPISPI_H
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define MAPISPI_H
- /* Include common MAPI header files if they haven't been already. */
- #ifndef MAPIDEFS_H
- #include <mapidefs.h>
- #endif
- #ifndef MAPICODE_H
- #include <mapicode.h>
- #endif
- #ifndef MAPIGUID_H
- #include <mapiguid.h>
- #endif
- #ifndef MAPITAGS_H
- #include <mapitags.h>
- #endif
-
- #if defined (WIN16) || defined (DOS) || defined (DOS16)
- #include <storage.h>
- #endif
-
- #ifndef BEGIN_INTERFACE
- #define BEGIN_INTERFACE
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* The MAPI SPI has a version number. MAPIX.DLL knows and supports
- * one or more versions of the SPI. Each provider supports one or
- * more versions of the SPI. Checks are performed in both MAPIX.DLL
- * and in the provider to ensure that they agree to use exactly one
- * version of the MAPI SPI.
- *
- * The SPI version number is composed of a major (8-bit) version,
- * minor (8-bit) version, and micro (16-bit) version. The first
- * retail ship of MAPI 1.0 is expected to be version 1.0.0.
- * The major version number changes rarely.
- * The minor version number changes opon each retail ship of
- * MAPI if the SPI has been modified.
- * The micro version number changes internally at Microsoft
- * during development of MAPI.
- *
- * The version of the SPI documented by this set of header files
- * is ALWAYS known as "CURRENT_SPI_VERSION". If you write a
- * service provider, and get a new set of header files, and update
- * your code to the new interface, you'll be at the "current" version.
- */
- #define CURRENT_SPI_VERSION 0x00010010L
-
- /* Here are some well-known SPI version numbers:
- * (These will eventually be useful for provider-writers who
- * might choose to make provider DLLs that support more than
- * one version of the MAPI SPI.
- */
- #define PDK1_SPI_VERSION 0x00010000L /* 0.1.0 MAPI PDK1 Spring 1993 */
-
- #define PDK2_SPI_VERSION 0x00010008L /* 0.1.8 MAPI PDK2 Spring 1994 */
-
- #define PDK3_SPI_VERSION 0x00010010L /* 0.1.16 MAPI PDK3 Fall 1994 */
-
- /*
- * Forward declaration of interface pointers specific to the service
- * provider interface.
- */
- DECLARE_MAPI_INTERFACE_PTR(IMAPISupport, LPMAPISUP);
-
- /* IMAPISupport Interface -------------------------------------------------- */
-
- /* Notification key structure for the MAPI notification engine */
-
- typedef struct
- {
- ULONG cb; /* How big the key is */
- BYTE ab[MAPI_DIM]; /* Key contents */
- } NOTIFKEY, FAR * LPNOTIFKEY;
-
- #define CbNewNOTIFKEY(_cb) (offsetof(NOTIFKEY,ab) + (_cb))
- #define CbNOTIFKEY(_lpkey) (offsetof(NOTIFKEY,ab) + (_lpkey)->cb)
- #define SizedNOTIFKEY(_cb, _name) \
- struct _NOTIFKEY_ ## _name \
- { \
- ULONG cb; \
- BYTE ab[_cb]; \
- } _name
-
-
- /* For Subscribe() */
-
- #define NOTIFY_SYNC ((ULONG) 0x40000000)
-
- /* For Notify() */
-
- #define NOTIFY_CANCELED ((ULONG) 0x80000000)
-
-
- /* From the Notification Callback function (well, this is really a ulResult) */
-
- #define CALLBACK_DISCONTINUE ((ULONG) 0x80000000)
-
- /* For Transport's SpoolerNotify() */
-
- #define NOTIFY_NEWMAIL ((ULONG) 0x00000001)
- #define NOTIFY_READYTOSEND ((ULONG) 0x00000002)
- #define NOTIFY_SENTDEFERRED ((ULONG) 0x00000004)
- #define NOTIFY_CRITSEC ((ULONG) 0x00001000)
- #define NOTIFY_NONCRIT ((ULONG) 0x00002000)
- #define NOTIFY_CONFIG_CHANGE ((ULONG) 0x00004000)
- #define NOTIFY_CRITICAL_ERROR ((ULONG) 0x10000000)
-
- /* For Message Store's SpoolerNotify() */
-
- #define NOTIFY_NEWMAIL_RECEIVED ((ULONG) 0x20000000)
-
- /* For ModifyStatusRow() */
-
- #define STATUSROW_UPDATE ((ULONG) 0x10000000)
-
- /* For IStorageFromStream() */
-
- #define STGSTRM_RESET ((ULONG) 0x00000000)
- #define STGSTRM_CURRENT ((ULONG) 0x10000000)
- #define STGSTRM_MODIFY ((ULONG) 0x00000002)
- #define STGSTRM_CREATE ((ULONG) 0x00001000)
-
- /* For GetOneOffTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) */
-
- /* For CreateOneOff() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) */
- /****** MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000) */
-
- /* For ReadReceipt() */
- #define MAPI_NON_READ ((ULONG) 0x00000001)
-
- /* For DoConfigPropSheet() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) */
-
- /* Preprocessor calls: */
-
- /* PreprocessMessage, first ordinal in RegisterPreprocessor(). */
-
- typedef HRESULT (STDMETHODCALLTYPE PREPROCESSMESSAGE)(
- LPVOID lpvSession,
- LPMESSAGE lpMessage,
- LPADRBOOK lpAdrBook,
- LPMAPIFOLDER lpFolder,
- LPALLOCATEBUFFER AllocateBuffer,
- LPALLOCATEMORE AllocateMore,
- LPFREEBUFFER FreeBuffer,
- ULONG FAR *lpcOutbound,
- LPMESSAGE FAR * FAR *lpppMessage,
- LPADRLIST FAR *lppRecipList);
-
- /* RemovePreprocessInfo, second ordinal in RegisterPreprocessor(). */
-
- typedef HRESULT (STDMETHODCALLTYPE REMOVEPREPROCESSINFO)(LPMESSAGE lpMessage);
-
- /* Function pointer for GetReleaseInfo */
-
- #define MAPI_IMAPISUPPORT_METHODS1(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(GetMemAllocRoutines) \
- (THIS_ LPALLOCATEBUFFER FAR * lpAllocateBuffer, \
- LPALLOCATEMORE FAR * lpAllocateMore, \
- LPFREEBUFFER FAR * lpFreeBuffer) IPURE; \
- MAPIMETHOD(Subscribe) \
- (THIS_ LPNOTIFKEY lpKey, \
- ULONG ulEventMask, \
- ULONG ulFlags, \
- LPMAPIADVISESINK lpAdviseSink, \
- ULONG FAR * lpulConnection) IPURE; \
- MAPIMETHOD(Unsubscribe) \
- (THIS_ ULONG ulConnection) IPURE; \
- MAPIMETHOD(Notify) \
- (THIS_ LPNOTIFKEY lpKey, \
- ULONG cNotification, \
- LPNOTIFICATION lpNotifications, \
- ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(ModifyStatusRow) \
- (THIS_ ULONG cValues, \
- LPSPropValue lpColumnVals, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(OpenProfileSection) \
- (THIS_ LPMAPIUID lpUid, \
- ULONG ulFlags, \
- LPPROFSECT FAR * lppProfileObj) IPURE; \
- MAPIMETHOD(RegisterPreprocessor) \
- (THIS_ LPMAPIUID lpMuid, \
- LPTSTR lpszAdrType, \
- LPTSTR lpszDLLName, \
- LPSTR /* String8! */ lpszPreprocess, \
- LPSTR /* String8! */ lpszRemovePreprocessInfo, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(NewUID) \
- (THIS_ LPMAPIUID lpMuid) IPURE; \
- MAPIMETHOD(MakeInvalid) \
- (THIS_ ULONG ulFlags, \
- LPVOID lpObject, \
- ULONG ulRefCount, \
- ULONG cMethods) IPURE; \
-
- #define MAPI_IMAPISUPPORT_METHODS2(IPURE) \
- MAPIMETHOD(SpoolerYield) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(SpoolerNotify) \
- (THIS_ ULONG ulFlags, \
- LPVOID lpvData) IPURE; \
- MAPIMETHOD(CreateOneOff) \
- (THIS_ LPTSTR lpszName, \
- LPTSTR lpszAdrType, \
- LPTSTR lpszAddress, \
- ULONG ulFlags, \
- ULONG FAR * lpcbEntryID, \
- LPENTRYID FAR * lppEntryID) IPURE; \
- MAPIMETHOD(SetProviderUID) \
- (THIS_ LPMAPIUID lpProviderID, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(CompareEntryIDs) \
- (THIS_ ULONG cbEntry1, \
- LPENTRYID lpEntry1, \
- ULONG cbEntry2, \
- LPENTRYID lpEntry2, \
- ULONG ulCompareFlags, \
- ULONG FAR * lpulResult) IPURE; \
- MAPIMETHOD(OpenTemplateID) \
- (THIS_ ULONG cbTemplateID, \
- LPENTRYID lpTemplateID, \
- ULONG ulTemplateFlags, \
- LPMAPIPROP lpMAPIPropData, \
- LPCIID lpInterface, \
- LPMAPIPROP FAR * lppMAPIPropNew, \
- LPMAPIPROP lpMAPIPropSibling) IPURE; \
- MAPIMETHOD(OpenEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpInterface, \
- ULONG ulOpenFlags, \
- ULONG FAR * lpulObjType, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(GetOneOffTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(Address) \
- (THIS_ ULONG FAR * lpulUIParam, \
- LPADRPARM lpAdrParms, \
- LPADRLIST FAR * lppAdrList) IPURE; \
- MAPIMETHOD(Details) \
- (THIS_ ULONG FAR * lpulUIParam, \
- LPFNDISMISS lpfnDismiss, \
- LPVOID lpvDismissContext, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPFNBUTTON lpfButtonCallback, \
- LPVOID lpvButtonContext, \
- LPTSTR lpszButtonText, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(NewEntry) \
- (THIS_ ULONG ulUIParam, \
- ULONG ulFlags, \
- ULONG cbEIDContainer, \
- LPENTRYID lpEIDContainer, \
- ULONG cbEIDNewEntryTpl, \
- LPENTRYID lpEIDNewEntryTpl, \
- ULONG FAR * lpcbEIDNewEntry, \
- LPENTRYID FAR * lppEIDNewEntry) IPURE; \
- MAPIMETHOD(DoConfigPropsheet) \
- (THIS_ ULONG ulUIParam, \
- ULONG ulFlags, \
- LPTSTR lpszTitle, \
- LPMAPITABLE lpDisplayTable, \
- LPMAPIPROP lpCOnfigData, \
- ULONG ulTopPage) IPURE; \
- MAPIMETHOD(CopyMessages) \
- (THIS_ LPCIID lpSrcInterface, \
- LPVOID lpSrcFolder, \
- LPENTRYLIST lpMsgList, \
- LPCIID lpDestInterface, \
- LPVOID lpDestFolder, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(CopyFolder) \
- (THIS_ LPCIID lpSrcInterface, \
- LPVOID lpSrcFolder, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpDestInterface, \
- LPVOID lpDestFolder, \
- LPTSTR lszNewFolderName, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- ULONG ulFlags) IPURE; \
-
- #define MAPI_IMAPISUPPORT_METHODS3(IPURE) \
- MAPIMETHOD(DoCopyTo) \
- (THIS_ LPCIID lpSrcInterface, \
- LPVOID lpSrcObj, \
- ULONG ciidExclude, \
- LPCIID rgiidExclude, \
- LPSPropTagArray lpExcludeProps, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- LPCIID lpDestInterface, \
- LPVOID lpDestObj, \
- ULONG ulFlags, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(DoCopyProps) \
- (THIS_ LPCIID lpSrcInterface, \
- LPVOID lpSrcObj, \
- LPSPropTagArray lpIncludeProps, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- LPCIID lpDestInterface, \
- LPVOID lpDestObj, \
- ULONG ulFlags, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(DoProgressDialog) \
- (THIS_ ULONG ulUIParam, \
- ULONG ulFlags, \
- LPMAPIPROGRESS FAR * lppProgress) IPURE; \
- MAPIMETHOD(ReadReceipt) \
- (THIS_ ULONG ulFlags, \
- LPMESSAGE lpReadMessage, \
- LPMESSAGE FAR * lppEmptyMessage) IPURE; \
- MAPIMETHOD(PrepareSubmit) \
- (THIS_ LPMESSAGE lpMessage, \
- ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(ExpandRecips) \
- (THIS_ LPMESSAGE lpMessage, \
- ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(UpdatePAB) \
- (THIS_ ULONG ulFlags, \
- LPMESSAGE lpMessage) IPURE; \
- MAPIMETHOD(DoSentMail) \
- (THIS_ ULONG ulFlags, \
- LPMESSAGE lpMessage) IPURE; \
- MAPIMETHOD(OpenAddressBook) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- LPADRBOOK FAR * lppAdrBook) IPURE; \
- MAPIMETHOD(Preprocess) \
- (THIS_ ULONG ulFlags, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID) IPURE; \
- MAPIMETHOD(CompleteMsg) \
- (THIS_ ULONG ulFlags, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID) IPURE; \
- MAPIMETHOD(StoreLogoffTransports) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(StatusRecips) \
- (THIS_ LPMESSAGE lpMessage, \
- LPADRLIST lpRecipList) IPURE; \
- MAPIMETHOD(WrapStoreEntryID) \
- (THIS_ ULONG cbOrigEntry, \
- LPENTRYID lpOrigEntry, \
- ULONG FAR * lpcbWrappedEntry, \
- LPENTRYID FAR * lppWrappedEntry) IPURE; \
- MAPIMETHOD(ModifyProfile) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(IStorageFromStream) \
- (THIS_ LPUNKNOWN lpUnkIn, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- LPSTORAGE FAR * lppStorageOut) IPURE; \
- MAPIMETHOD(GetSvcConfigSupportObj) \
- (THIS_ ULONG ulFlags, \
- LPMAPISUP FAR * lppSvcSupport) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IMAPISupport
- DECLARE_MAPI_INTERFACE_(IMAPISupport, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPISUPPORT_METHODS1(PURE)
- MAPI_IMAPISUPPORT_METHODS2(PURE)
- MAPI_IMAPISUPPORT_METHODS3(PURE)
- };
-
-
- /********************************************************************/
- /* */
- /* ADDRESS BOOK SPI */
- /* */
- /********************************************************************/
-
- /* Address Book Provider ------------------------------------------------- */
-
- /* OpenTemplateID() */
- #define FILL_ENTRY ((ULONG) 0x00000001)
-
- /* For Logon() */
-
- /*#define AB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
-
-
-
- DECLARE_MAPI_INTERFACE_PTR(IABProvider, LPABPROVIDER);
- DECLARE_MAPI_INTERFACE_PTR(IABLogon, LPABLOGON);
-
- #define MAPI_IABPROVIDER_METHODS(IPURE) \
- MAPIMETHOD(Shutdown) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(Logon) \
- (THIS_ LPMAPISUP lpMAPISup, \
- ULONG ulUIParam, \
- LPTSTR lpszProfileName, \
- ULONG ulFlags, \
- ULONG FAR * lpulpcbSecurity, \
- LPBYTE FAR * lppbSecurity, \
- LPMAPIERROR FAR * lppMAPIError, \
- LPABLOGON FAR * lppABLogon) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IABProvider
- DECLARE_MAPI_INTERFACE_(IABProvider, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IABPROVIDER_METHODS(PURE)
- };
-
- /* For GetOneOffTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) */
-
- #define MAPI_IABLOGON_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(Logoff) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(OpenEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(CompareEntryIDs) \
- (THIS_ ULONG cbEntryID1, \
- LPENTRYID lpEntryID1, \
- ULONG cbEntryID2, \
- LPENTRYID lpEntryID2, \
- ULONG ulFlags, \
- ULONG FAR * lpulResult) IPURE; \
- MAPIMETHOD(Advise) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulEventMask, \
- LPMAPIADVISESINK lpAdviseSink, \
- ULONG FAR * lpulConnection) IPURE; \
- MAPIMETHOD(Unadvise) \
- (THIS_ ULONG ulConnection) IPURE; \
- MAPIMETHOD(OpenStatusEntry) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPMAPISTATUS FAR * lppEntry) IPURE; \
- MAPIMETHOD(OpenTemplateID) \
- (THIS_ ULONG cbTemplateID, \
- LPENTRYID lpTemplateID, \
- ULONG ulTemplateFlags, \
- LPMAPIPROP lpMAPIPropData, \
- LPCIID lpInterface, \
- LPMAPIPROP FAR * lppMAPIPropNew, \
- LPMAPIPROP lpMAPIPropSibling) IPURE; \
- MAPIMETHOD(GetOneOffTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(PrepareRecips) \
- (THIS_ ULONG ulFlags, \
- LPSPropTagArray lpPropTagArray, \
- LPADRLIST lpRecipList) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IABLogon
- DECLARE_MAPI_INTERFACE_(IABLogon, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IABLOGON_METHODS(PURE)
- };
-
- typedef HRESULT (STDMAPIINITCALLTYPE ABPROVIDERINIT)(
- HINSTANCE hInstance,
- LPMALLOC lpMalloc,
- LPALLOCATEBUFFER lpAllocateBuffer,
- LPALLOCATEMORE lpAllocateMore,
- LPFREEBUFFER lpFreeBuffer,
- ULONG ulFlags,
- ULONG ulMAPIVer,
- ULONG FAR * lpulProviderVer,
- LPABPROVIDER FAR * lppABProvider
- );
-
- ABPROVIDERINIT ABProviderInit;
-
-
-
- /********************************************************************/
- /* */
- /* TRANSPORT SPI */
- /* */
- /********************************************************************/
-
- /* For DeinitTransport */
-
- #define DEINIT_NORMAL ((ULONG) 0x00000001)
- #define DEINIT_HURRY ((ULONG) 0x80000000)
-
- /* For TransportLogon */
-
- /* Flags that the Spooler may pass to the transport: */
-
- #define LOGON_NO_DIALOG ((ULONG) 0x00000001)
- #define LOGON_NO_CONNECT ((ULONG) 0x00000004)
- #define LOGON_NO_INBOUND ((ULONG) 0x00000008)
- #define LOGON_NO_OUTBOUND ((ULONG) 0x00000010)
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
-
- /* Flags that the transport may pass to the Spooler: */
-
- #define LOGON_SP_IDLE ((ULONG) 0x00010000)
- #define LOGON_SP_POLL ((ULONG) 0x00020000)
- #define LOGON_SP_RESOLVE ((ULONG) 0x00040000)
-
-
- DECLARE_MAPI_INTERFACE_PTR(IXPProvider, LPXPPROVIDER);
- DECLARE_MAPI_INTERFACE_PTR(IXPLogon, LPXPLOGON);
-
- #define MAPI_IXPPROVIDER_METHODS(IPURE) \
- MAPIMETHOD(Shutdown) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(TransportLogon) \
- (THIS_ LPMAPISUP lpMAPISup, \
- ULONG ulUIParam, \
- LPTSTR lpszProfileName, \
- ULONG FAR * lpulFlags, \
- LPMAPIERROR FAR * lppMAPIError, \
- LPXPLOGON FAR * lppXPLogon) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IXPProvider
- DECLARE_MAPI_INTERFACE_(IXPProvider, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IXPPROVIDER_METHODS(PURE)
- };
-
- /* OptionData returned from call to RegisterOptions */
-
- #define OPTION_TYPE_RECIPIENT ((ULONG) 0x00000001)
- #define OPTION_TYPE_MESSAGE ((ULONG) 0x00000002)
-
- typedef struct _OPTIONDATA
- {
- ULONG ulFlags; /* MAPI_RECIPIENT, MAPI_MESSAGE */
- LPGUID lpRecipGUID; /* Same as returned by AddressTypes() */
- LPTSTR lpszAdrType; /* Same as returned by AddressTypes() */
- LPTSTR lpszDLLName; /* Options DLL */
- ULONG ulOrdinal; /* Ordinal in that DLL */
- ULONG cbOptionsData; /* Count of bytes in lpbOptionsData */
- LPBYTE lpbOptionsData; /* Providers per [recip|message] option data */
- ULONG cOptionsProps; /* Count of Options default prop values */
- LPSPropValue lpOptionsProps; /* Default Options property values */
- } OPTIONDATA, FAR *LPOPTIONDATA;
-
- typedef SCODE (STDMAPIINITCALLTYPE OPTIONCALLBACK)(
- HINSTANCE hInst,
- LPMALLOC lpMalloc,
- ULONG ulFlags,
- ULONG cbOptionData,
- LPBYTE lpbOptionData,
- LPMAPISUP lpMAPISup,
- LPMAPIPROP lpDataSource,
- LPMAPIPROP FAR * lppWrappedSource,
- LPMAPIERROR FAR * lppMAPIError);
-
- /* For XP_AddressTypes */
-
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
-
- /* For XP_RegisterRecipOptions */
-
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
-
- /* For XP_RegisterMessageOptions */
-
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
-
- /* For TransportNotify */
-
- #define NOTIFY_ABORT_DEFERRED ((ULONG) 0x40000000)
- #define NOTIFY_CANCEL_MESSAGE ((ULONG) 0x80000000)
- #define NOTIFY_BEGIN_INBOUND ((ULONG) 0x00000001)
- #define NOTIFY_END_INBOUND ((ULONG) 0x00010000)
- #define NOTIFY_BEGIN_OUTBOUND ((ULONG) 0x00000002)
- #define NOTIFY_END_OUTBOUND ((ULONG) 0x00020000)
- #define NOTIFY_BEGIN_INBOUND_FLUSH ((ULONG) 0x00000004)
- #define NOTIFY_END_INBOUND_FLUSH ((ULONG) 0x00040000)
- #define NOTIFY_BEGIN_OUTBOUND_FLUSH ((ULONG) 0x00000008)
- #define NOTIFY_END_OUTBOUND_FLUSH ((ULONG) 0x00080000)
-
- /* For TransportLogoff */
-
- #define LOGOFF_NORMAL ((ULONG) 0x00000001)
- #define LOGOFF_HURRY ((ULONG) 0x80000000)
-
- /* For SubmitMessage */
-
- #define BEGIN_DEFERRED ((ULONG) 0x00000001)
-
- /* For EndMessage */
-
- /* Flags that the Spooler may pass to the Transport: */
-
- /* Flags that the transport may pass to the Spooler: */
-
- #define END_RESEND_NOW ((ULONG) 0x00010000)
- #define END_RESEND_LATER ((ULONG) 0x00020000)
- #define END_DONT_RESEND ((ULONG) 0x00040000)
-
- #define MAPI_IXPLOGON_METHODS(IPURE) \
- MAPIMETHOD(AddressTypes) \
- (THIS_ ULONG FAR * lpulFlags, \
- ULONG FAR * lpcAdrType, \
- LPTSTR FAR * FAR * lpppAdrTypeArray, \
- ULONG FAR * lpcMAPIUID, \
- LPMAPIUID FAR * FAR * lpppUIDArray) IPURE; \
- MAPIMETHOD(RegisterOptions) \
- (THIS_ ULONG FAR * lpulFlags, \
- ULONG FAR * lpcOptions, \
- LPOPTIONDATA FAR * lppOptions) IPURE; \
- MAPIMETHOD(TransportNotify) \
- (THIS_ ULONG FAR * lpulFlags, \
- LPVOID FAR * lppvData) IPURE; \
- MAPIMETHOD(Idle) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(TransportLogoff) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(SubmitMessage) \
- (THIS_ ULONG ulFlags, \
- LPMESSAGE lpMessage, \
- ULONG FAR * lpulMsgRef, \
- ULONG FAR * lpulReturnParm) IPURE; \
- MAPIMETHOD(EndMessage) \
- (THIS_ ULONG ulMsgRef, \
- ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(Poll) \
- (THIS_ ULONG FAR * lpulIncoming) IPURE; \
- MAPIMETHOD(StartMessage) \
- (THIS_ ULONG ulFlags, \
- LPMESSAGE lpMessage, \
- ULONG FAR * lpulMsgRef) IPURE; \
- MAPIMETHOD(OpenStatusEntry) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPMAPISTATUS FAR * lppEntry) IPURE; \
- MAPIMETHOD(ValidateState) \
- (THIS_ ULONG ulUIParam, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(FlushQueues) \
- (THIS_ ULONG ulUIParam, \
- ULONG cbTargetTransport, \
- LPENTRYID lpTargetTransport, \
- ULONG ulFlags) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IXPLogon
- DECLARE_MAPI_INTERFACE_(IXPLogon, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IXPLOGON_METHODS(PURE)
- };
-
-
- /* Transport Provider Entry Point */
-
- typedef HRESULT (STDMAPIINITCALLTYPE XPPROVIDERINIT)(
- HINSTANCE hInstance,
- LPMALLOC lpMalloc,
- LPALLOCATEBUFFER lpAllocateBuffer,
- LPALLOCATEMORE lpAllocateMore,
- LPFREEBUFFER lpFreeBuffer,
- ULONG ulFlags,
- ULONG ulMAPIVer,
- ULONG FAR * lpulProviderVer,
- LPXPPROVIDER FAR * lppXPProvider);
-
- XPPROVIDERINIT XPProviderInit;
-
- /********************************************************************/
- /* */
- /* MESSAGE STORE SPI */
- /* */
- /********************************************************************/
-
- /* Flags and enums */
-
- /* For Logon() */
-
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
- /*#define MDB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
- /*#define MDB_WRITE ((ULONG) 0x00000004) in mapidefs.h */
- /*#define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) in mapidefs.h */
- /*#define MDB_TEMPORARY ((ULONG) 0x00000020) in mapidefs.h */
- /*#define MDB_NO_MAIL ((ULONG) 0x00000080) in mapidefs.h */
-
- /* For SpoolerLogon() */
-
- /*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
- /*#define MDB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
- /*#define MDB_WRITE ((ULONG) 0x00000004) in mapidefs.h */
- /*#define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) in mapidefs.h */
-
- /* GetCredentials, SetCredentials */
-
- #define LOGON_SP_TRANSPORT ((ULONG) 0x00000001)
- #define LOGON_SP_PROMPT ((ULONG) 0x00000002)
- #define LOGON_SP_NEWPW ((ULONG) 0x00000004)
- #define LOGON_CHANGED ((ULONG) 0x00000008)
-
- /* DoMCDialog */
-
- #define DIALOG_FOLDER ((ULONG) 0x00000001)
- #define DIALOG_MESSAGE ((ULONG) 0x00000002)
- #define DIALOG_PROP ((ULONG) 0x00000004)
- #define DIALOG_ATTACH ((ULONG) 0x00000008)
-
- #define DIALOG_MOVE ((ULONG) 0x00000010)
- #define DIALOG_COPY ((ULONG) 0x00000020)
- #define DIALOG_DELETE ((ULONG) 0x00000040)
-
- #define DIALOG_ALLOW_CANCEL ((ULONG) 0x00000080)
- #define DIALOG_CONFIRM_CANCEL ((ULONG) 0x00000100)
-
- /* ExpandRecips */
-
- #define NEEDS_PREPROCESSING ((ULONG) 0x00000001)
- #define NEEDS_SPOOLER ((ULONG) 0x00000002)
-
- /* PrepareSubmit */
-
- #define CHECK_SENDER ((ULONG) 0x00000001)
- #define NON_STANDARD ((ULONG) 0x00010000)
-
-
- DECLARE_MAPI_INTERFACE_PTR(IMSLogon, LPMSLOGON);
- DECLARE_MAPI_INTERFACE_PTR(IMSProvider, LPMSPROVIDER);
-
- /* Message Store Provider Interface (IMSPROVIDER) */
-
- #define MAPI_IMSPROVIDER_METHODS(IPURE) \
- MAPIMETHOD(Shutdown) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(Logon) \
- (THIS_ LPMAPISUP lpMAPISup, \
- ULONG ulUIParam, \
- LPTSTR lpszProfileName, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulFlags, \
- LPCIID lpInterface, \
- ULONG FAR * lpcbSpoolSecurity, \
- LPBYTE FAR * lppbSpoolSecurity, \
- LPMAPIERROR FAR * lppMAPIError, \
- LPMSLOGON FAR * lppMSLogon, \
- LPMDB FAR * lppMDB) IPURE; \
- MAPIMETHOD(SpoolerLogon) \
- (THIS_ LPMAPISUP lpMAPISup, \
- ULONG ulUIParam, \
- LPTSTR lpszProfileName, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulFlags, \
- LPCIID lpInterface, \
- ULONG cbSpoolSecurity, \
- LPBYTE lpbSpoolSecurity, \
- LPMAPIERROR FAR * lppMAPIError, \
- LPMSLOGON FAR * lppMSLogon, \
- LPMDB FAR * lppMDB) IPURE; \
- MAPIMETHOD(CompareStoreIDs) \
- (THIS_ ULONG cbEntryID1, \
- LPENTRYID lpEntryID1, \
- ULONG cbEntryID2, \
- LPENTRYID lpEntryID2, \
- ULONG ulFlags, \
- ULONG FAR * lpulResult) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IMSProvider
- DECLARE_MAPI_INTERFACE_(IMSProvider, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMSPROVIDER_METHODS(PURE)
- };
-
- /* The MSLOGON object is returned by the Logon() method of the
- * MSPROVIDER interface. This object is for use by MAPIX.DLL.
- */
- #define MAPI_IMSLOGON_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(Logoff) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(OpenEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(CompareEntryIDs) \
- (THIS_ ULONG cbEntryID1, \
- LPENTRYID lpEntryID1, \
- ULONG cbEntryID2, \
- LPENTRYID lpEntryID2, \
- ULONG ulFlags, \
- ULONG FAR * lpulResult) IPURE; \
- MAPIMETHOD(Advise) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulEventMask, \
- LPMAPIADVISESINK lpAdviseSink, \
- ULONG FAR * lpulConnection) IPURE; \
- MAPIMETHOD(Unadvise) \
- (THIS_ ULONG ulConnection) IPURE; \
- MAPIMETHOD(OpenStatusEntry) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPVOID FAR * lppEntry) IPURE; \
-
- #undef INTERFACE
- #define INTERFACE IMSLogon
- DECLARE_MAPI_INTERFACE_(IMSLogon, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMSLOGON_METHODS(PURE)
- };
-
- /* Message Store Provider Entry Point */
-
- typedef HRESULT (STDMAPIINITCALLTYPE MSPROVIDERINIT)(
- HINSTANCE hInstance,
- LPMALLOC lpMalloc, /* AddRef() if you keep it */
- LPALLOCATEBUFFER lpAllocateBuffer, /* -> AllocateBuffer */
- LPALLOCATEMORE lpAllocateMore, /* -> AllocateMore */
- LPFREEBUFFER lpFreeBuffer, /* -> FreeBuffer */
- ULONG ulFlags,
- ULONG ulMAPIVer,
- ULONG FAR * lpulProviderVer,
- LPMSPROVIDER FAR * lppMSProvider
- );
-
- MSPROVIDERINIT MSProviderInit;
-
-
- /********************************************************************/
- /* */
- /* MESSAGE SERVICE CONFIGURATION */
- /* */
- /********************************************************************/
-
- /* Flags for service configuration entry point */
-
- /* #define MAPI_UNICODE 0x80000000 */
- /* #define SERVICE_UI_ALWAYS 0x00000002 */
- /* #define SERVICE_UI_ALLOWED 0x00000010 */
- #define MSG_SERVICE_UI_READ_ONLY 0x00000008 /* display parameters only */
- #define SERVICE_LOGON_FAILED 0x00000020 /* reconfigure provider */
-
- /* Contexts for service configuration entry point */
-
- #define MSG_SERVICE_INSTALL 0x00000001
- #define MSG_SERVICE_CREATE 0x00000002
- #define MSG_SERVICE_CONFIGURE 0x00000003
- #define MSG_SERVICE_DELETE 0x00000004
- #define MSG_SERVICE_UNINSTALL 0x00000005
- #define MSG_SERVICE_PROVIDER_CREATE 0x00000006
- #define MSG_SERVICE_PROVIDER_DELETE 0x00000007
-
- /* Prototype for service configuration entry point */
-
- typedef HRESULT (STDAPICALLTYPE MSGSERVICEENTRY)(
- HINSTANCE hInstance,
- LPMALLOC lpMalloc,
- LPMAPISUP lpMAPISup,
- ULONG ulUIParam,
- ULONG ulFlags,
- ULONG ulContext,
- ULONG cValues,
- LPSPropValue lpProps,
- LPPROVIDERADMIN lpProviderAdmin,
- LPMAPIERROR FAR *lppMapiError
- );
- typedef MSGSERVICEENTRY FAR *LPMSGSERVICEENTRY;
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #pragma option pop /*P_O_Pop*/
- #endif /* MAPISPI_H */
-