123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931 |
- /*
- * 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-1999 Microsoft Corporation. All Rights Reserved.
- */
- #ifndef MAPISPI_H
- #define MAPISPI_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- /* 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
- #endif /* MAPISPI_H */
|