📄 mapispi.h
字号:
/*
* 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
#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, \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -