📄 mapidefs.h
字号:
DECLARE_MAPI_INTERFACE(iface)
#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
typedef struct iface##Vtbl iface##Vtbl, FAR * iface, FAR * FAR * piface;
#else
#define DECLARE_MAPI_INTERFACE(iface) \
DECLARE_INTERFACE(iface)
#define DECLARE_MAPI_INTERFACE_(iface, baseiface) \
DECLARE_INTERFACE_(iface, baseiface)
#ifdef __cplusplus
#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
interface iface; typedef iface FAR * piface
#else
#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
typedef interface iface iface, FAR * piface
#endif
#endif
#define MAPIMETHOD(method) MAPIMETHOD_(HRESULT, method)
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
#define MAPIMETHOD_DECLARE(type, method, prefix) \
STDMETHODIMP_(type) prefix##method
#define MAPIMETHOD_TYPEDEF(type, method, prefix) \
typedef type (STDMETHODCALLTYPE prefix##method##_METHOD)
#define MAPI_IUNKNOWN_METHODS(IPURE) \
MAPIMETHOD(QueryInterface) \
(THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE; \
MAPIMETHOD_(ULONG,AddRef) (THIS) IPURE; \
MAPIMETHOD_(ULONG,Release) (THIS) IPURE; \
#undef IMPL
#define IMPL
/* Pointers to MAPI Interfaces --------------------------------------------- */
typedef const IID FAR * LPCIID;
DECLARE_MAPI_INTERFACE_PTR(IMsgStore, LPMDB);
DECLARE_MAPI_INTERFACE_PTR(IMAPIFolder, LPMAPIFOLDER);
DECLARE_MAPI_INTERFACE_PTR(IMessage, LPMESSAGE);
DECLARE_MAPI_INTERFACE_PTR(IAttach, LPATTACH);
DECLARE_MAPI_INTERFACE_PTR(IAddrBook, LPADRBOOK);
DECLARE_MAPI_INTERFACE_PTR(IABContainer, LPABCONT);
DECLARE_MAPI_INTERFACE_PTR(IMailUser, LPMAILUSER);
DECLARE_MAPI_INTERFACE_PTR(IDistList, LPDISTLIST);
DECLARE_MAPI_INTERFACE_PTR(IMAPIStatus, LPMAPISTATUS);
DECLARE_MAPI_INTERFACE_PTR(IMAPITable, LPMAPITABLE);
DECLARE_MAPI_INTERFACE_PTR(IProfSect, LPPROFSECT);
DECLARE_MAPI_INTERFACE_PTR(IMAPIProp, LPMAPIPROP);
DECLARE_MAPI_INTERFACE_PTR(IMAPIContainer, LPMAPICONTAINER);
DECLARE_MAPI_INTERFACE_PTR(IMAPIAdviseSink, LPMAPIADVISESINK);
DECLARE_MAPI_INTERFACE_PTR(IMAPIProgress, LPMAPIPROGRESS);
DECLARE_MAPI_INTERFACE_PTR(IProviderAdmin, LPPROVIDERADMIN);
/* Extended MAPI Error Information ----------------------------------------- */
typedef struct _MAPIERROR
{
ULONG ulVersion;
LPTSTR lpszError;
LPTSTR lpszComponent;
ULONG ulLowLevelError;
ULONG ulContext;
} MAPIERROR, FAR * LPMAPIERROR;
/* IMAPIAdviseSink Interface ----------------------------------------------- */
/*
* Notification event types. The event types can be combined in a bitmask
* for filtering. Each one has a parameter structure associated with it:
*
* fnevCriticalError ERROR_NOTIFICATION
* fnevNewMail NEWMAIL_NOTIFICATION
* fnevObjectCreated OBJECT_NOTIFICATION
* fnevObjectDeleted OBJECT_NOTIFICATION
* fnevObjectModified OBJECT_NOTIFICATION
* fnevObjectCopied OBJECT_NOTIFICATION
* fnevSearchComplete OBJECT_NOTIFICATION
* fnevTableModified TABLE_NOTIFICATION
* fnevStatusObjectModified ?
*
* fnevExtended EXTENDED_NOTIFICATION
*/
#define fnevCriticalError ((ULONG) 0x00000001)
#define fnevNewMail ((ULONG) 0x00000002)
#define fnevObjectCreated ((ULONG) 0x00000004)
#define fnevObjectDeleted ((ULONG) 0x00000008)
#define fnevObjectModified ((ULONG) 0x00000010)
#define fnevObjectMoved ((ULONG) 0x00000020)
#define fnevObjectCopied ((ULONG) 0x00000040)
#define fnevSearchComplete ((ULONG) 0x00000080)
#define fnevTableModified ((ULONG) 0x00000100)
#define fnevStatusObjectModified ((ULONG) 0x00000200)
#define fnevReservedForMapi ((ULONG) 0x40000000)
#define fnevExtended ((ULONG) 0x80000000)
/* TABLE_NOTIFICATION event types passed in ulTableEvent */
#define TABLE_CHANGED 1
#define TABLE_ERROR 2
#define TABLE_ROW_ADDED 3
#define TABLE_ROW_DELETED 4
#define TABLE_ROW_MODIFIED 5
#define TABLE_SORT_DONE 6
#define TABLE_RESTRICT_DONE 7
#define TABLE_SETCOL_DONE 8
#define TABLE_RELOAD 9
/* Event Structures */
typedef struct _ERROR_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
SCODE scode;
ULONG ulFlags; /* 0 or MAPI_UNICODE */
LPMAPIERROR lpMAPIError; /* Detailed error information */
} ERROR_NOTIFICATION;
typedef struct _NEWMAIL_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID; /* identifies the new message */
ULONG cbParentID;
LPENTRYID lpParentID; /* identifies the folder it lives in */
ULONG ulFlags; /* 0 or MAPI_UNICODE */
LPTSTR lpszMessageClass; /* message class (UNICODE or string8) */
ULONG ulMessageFlags; /* copy of PR_MESSAGE_FLAGS */
} NEWMAIL_NOTIFICATION;
typedef struct _OBJECT_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID; /* EntryID of object */
ULONG ulObjType; /* Type of object */
ULONG cbParentID;
LPENTRYID lpParentID; /* EntryID of parent object */
ULONG cbOldID;
LPENTRYID lpOldID; /* EntryID of old object */
ULONG cbOldParentID;
LPENTRYID lpOldParentID; /* EntryID of old parent */
LPSPropTagArray lpPropTagArray;
} OBJECT_NOTIFICATION;
typedef struct _TABLE_NOTIFICATION
{
ULONG ulTableEvent; /* Identifies WHICH table event */
HRESULT hResult; /* Value for TABLE_ERROR */
SPropValue propIndex; /* This row's "index property" */
SPropValue propPrior; /* Preceding row's "index property" */
SRow row; /* New data of added/modified row */
ULONG ulPad; /* Force to 8-byte boundary */
} TABLE_NOTIFICATION;
typedef struct _EXTENDED_NOTIFICATION
{
ULONG ulEvent; /* extended event code */
ULONG cb; /* size of event parameters */
LPBYTE pbEventParameters; /* event parameters */
} EXTENDED_NOTIFICATION;
typedef struct
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
ULONG cValues;
LPSPropValue lpPropVals;
} STATUS_OBJECT_NOTIFICATION;
typedef struct _NOTIFICATION
{
ULONG ulEventType; /* notification type, i.e. fnevSomething */
ULONG ulAlignPad; /* Force to 8-byte boundary */
union
{
ERROR_NOTIFICATION err;
NEWMAIL_NOTIFICATION newmail;
OBJECT_NOTIFICATION obj;
TABLE_NOTIFICATION tab;
EXTENDED_NOTIFICATION ext;
STATUS_OBJECT_NOTIFICATION statobj;
} info;
} NOTIFICATION, FAR * LPNOTIFICATION;
/* Interface used for registering and issuing notification callbacks. */
#define MAPI_IMAPIADVISESINK_METHODS(IPURE) \
MAPIMETHOD_(ULONG, OnNotify) \
(THIS_ ULONG cNotif, \
LPNOTIFICATION lpNotifications) IPURE; \
#undef INTERFACE
#define INTERFACE IMAPIAdviseSink
DECLARE_MAPI_INTERFACE_(IMAPIAdviseSink, IUnknown)
{
BEGIN_INTERFACE
MAPI_IUNKNOWN_METHODS(PURE)
MAPI_IMAPIADVISESINK_METHODS(PURE)
};
/* Callback function type for MAPIAllocAdviseSink */
typedef long (STDAPICALLTYPE NOTIFCALLBACK) (
LPVOID lpvContext,
ULONG cNotification,
LPNOTIFICATION lpNotifications);
typedef NOTIFCALLBACK FAR * LPNOTIFCALLBACK;
/*
* Message name for the 16-bit MAPI notififcation engine.
* This can be used in 16-bit applications to force processing
* of notification callbacks.
*/
#define szMAPINotificationMsg "MAPI Notify window message"
/* IMAPIProgress Interface ------------------------------------------------- */
/* Flag values for the progress indicator */
#define MAPI_TOP_LEVEL ((ULONG) 0x00000001)
#define MAPI_IMAPIPROGRESS_METHODS(IPURE) \
MAPIMETHOD(Progress) \
(THIS_ ULONG ulValue, \
ULONG ulCount, \
ULONG ulTotal) IPURE; \
MAPIMETHOD(GetFlags) \
(THIS_ ULONG FAR * lpulFlags) IPURE; \
MAPIMETHOD(GetMax) \
(THIS_ ULONG FAR * lpulMax) IPURE; \
MAPIMETHOD(GetMin) \
(THIS_ ULONG FAR * lpulMin) IPURE; \
MAPIMETHOD(SetLimits) \
(THIS_ LPULONG lpulMin, \
LPULONG lpulMax, \
LPULONG lpulFlags) IPURE; \
#undef INTERFACE
#define INTERFACE IMAPIProgress
DECLARE_MAPI_INTERFACE_(IMAPIProgress, IUnknown)
{
BEGIN_INTERFACE
MAPI_IUNKNOWN_METHODS(PURE)
MAPI_IMAPIPROGRESS_METHODS(PURE)
};
/* IMAPIProp Interface ----------------------------------------------------- */
/* GetLastError */
/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
/*
* Version:
*/
#define MAPI_ERROR_VERSION 0x00000000L
/* GetPropList */
/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
/* GetProps */
/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
/* SaveChanges */
#define KEEP_OPEN_READONLY ((ULONG) 0x00000001)
#define KEEP_OPEN_READWRITE ((ULONG) 0x00000002)
#define FORCE_SAVE ((ULONG) 0x00000004)
/* define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
/* OpenProperty - ulFlags */
/****** MAPI_MODIFY ((ULONG) 0x00000001) above */
#define MAPI_CREATE ((ULONG) 0x00000002)
#define STREAM_APPEND ((ULONG) 0x00000004)
/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
/* OpenProperty - ulInterfaceOptions, IID_IMAPITable */
/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
/* CopyTo, CopyProps */
#define MAPI_MOVE ((ULONG) 0x00000001)
#define MAPI_NOREPLACE ((ULONG) 0x00000002)
#define MAPI_DECLINE_OK ((ULONG) 0x00000004)
#ifndef MAPI_DIALOG /* also defined in mapi.h */
#define MAPI_DIALOG ((ULONG) 0x00000008)
#endif
#ifndef MAPI_USE_DEFAULT /* also defined in mapi.h */
#define MAPI_USE_DEFAULT 0x00000040 /* Use default profile in logon */
#endif
/* Flags used in GetIDsFromNames */
/****** MAPI_CREATE ((ULONG) 0x00000002) above */
/* Flags used in GetNamesFromIDs (bit fields) */
#define MAPI_NO_STRINGS ((ULONG) 0x00000001)
#define MAPI_NO_IDS ((ULONG) 0x00000002)
/* Union discriminator */
#define MNID_ID 0
#define MNID_STRING 1
typedef struct _MAPINAMEID
{
LPGUID lpguid;
ULONG ulKind;
union {
LONG lID;
LPWSTR lpwstrName;
} Kind;
} MAPINAMEID, FAR * LPMAPINAMEID;
#define MAPI_IMAPIPROP_METHODS(IPURE) \
MAPIMETHOD(GetLastError) \
(THIS_ HRESULT hResult, \
ULONG ulFlags, \
LPMAPIERROR FAR * lppMAPIError) IPURE; \
MAPIMETHOD(SaveChanges) \
(THIS_ ULONG ulFlags) IPURE; \
MAPIMETHOD(GetProps) \
(THIS_ LPSPropTagArray lpPropTagArray, \
ULONG ulFlags, \
ULONG FAR * lpcValues, \
LPSPropValue FAR * lppPropArray) IPURE; \
MAPIMETHOD(GetPropList) \
(THIS_ ULONG ulFlags, \
LPSPropTagArray FAR * lppPropTagArray) IPURE; \
MAPIMETHOD(OpenProperty) \
(THIS_ ULONG ulPropTag, \
LPCIID lpiid, \
ULONG ulInterfaceOptions, \
ULONG ulFlags, \
LPUNKNOWN FAR * lppUnk) IPURE; \
MAPIMETHOD(SetProps) \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -