MAPIDefS.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:96k
- /*
- * M A P I D E F S . H
- *
- * Definitions used by MAPI clients and service providers.
- *
- * Copyright 1986-1999 Microsoft Corporation. All Rights Reserved.
- */
- #ifndef MAPIDEFS_H
- #define MAPIDEFS_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- /* Array dimension for structures with variable-sized arrays at the end. */
- #ifndef MAPI_DIM
- #define MAPI_DIM 1
- #endif
- /* Provider init type. Force to cdecl always */
- #ifndef STDMAPIINITCALLTYPE
- #if !defined (_MAC) && defined (_WIN32)
- #define STDMAPIINITCALLTYPE __cdecl
- #else
- #define STDMAPIINITCALLTYPE STDMETHODCALLTYPE
- #endif
- #define STDINITMETHODIMP HRESULT STDMAPIINITCALLTYPE
- #define STDINITMETHODIMP_(type) type STDMAPIINITCALLTYPE
- #endif
- #define MAPI_NT_SERVICE ((ULONG) 0x00010000) /* Provider is being loaded in an NT service */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Simple data types */
- typedef ULONG FAR * LPULONG;
- #ifndef __LHANDLE
- #define __LHANDLE
- typedef ULONG_PTR LHANDLE, FAR * LPLHANDLE;
- #endif
- #if !defined(_WINBASE_) && !defined(_FILETIME_)
- #define _FILETIME_
- typedef struct _FILETIME
- {
- DWORD dwLowDateTime;
- DWORD dwHighDateTime;
- } FILETIME, FAR * LPFILETIME;
- #endif
- #ifndef BEGIN_INTERFACE
- #define BEGIN_INTERFACE
- #endif
- /*
- * This flag is used in many different MAPI calls to signify that
- * the object opened by the call should be modifiable (MAPI_MODIFY).
- * If the flag MAPI_MAX_ACCESS is set, the object returned should be
- * returned at the maximum access level allowed. An additional
- * property available on the object (PR_ACCESS_LEVEL) uses the same
- * MAPI_MODIFY flag to say just what this new access level is.
- */
- #define MAPI_MODIFY ((ULONG) 0x00000001)
- /*
- * The following flags are used to indicate to the client what access
- * level is permissible in the object. They appear in PR_ACCESS in
- * message and folder objects as well as in contents and associated
- * contents tables
- */
- #define MAPI_ACCESS_MODIFY ((ULONG) 0x00000001)
- #define MAPI_ACCESS_READ ((ULONG) 0x00000002)
- #define MAPI_ACCESS_DELETE ((ULONG) 0x00000004)
- #define MAPI_ACCESS_CREATE_HIERARCHY ((ULONG) 0x00000008)
- #define MAPI_ACCESS_CREATE_CONTENTS ((ULONG) 0x00000010)
- #define MAPI_ACCESS_CREATE_ASSOCIATED ((ULONG) 0x00000020)
- /*
- * The MAPI_UNICODE flag is used in many different MAPI calls to signify
- * that strings passed through the interface are in Unicode (a 16-bit
- * character set). The default is an 8-bit character set.
- *
- * The value fMapiUnicode can be used as the 'normal' value for
- * that bit, given the application's default character set.
- */
- #define MAPI_UNICODE ((ULONG) 0x80000000)
- #ifdef UNICODE
- #define fMapiUnicode MAPI_UNICODE
- #else
- #define fMapiUnicode 0
- #endif
- /* successful HRESULT */
- #define hrSuccess 0
- /* Recipient types */
- #ifndef MAPI_ORIG /* also defined in mapi.h */
- #define MAPI_ORIG 0 /* Recipient is message originator */
- #define MAPI_TO 1 /* Recipient is a primary recipient */
- #define MAPI_CC 2 /* Recipient is a copy recipient */
- #define MAPI_BCC 3 /* Recipient is blind copy recipient */
- #define MAPI_P1 0x10000000 /* Recipient is a P1 resend recipient */
- #define MAPI_SUBMITTED 0x80000000 /* Recipient is already processed */
- /* #define MAPI_AUTHORIZE 4 recipient is a CMC authorizing user */
- /*#define MAPI_DISCRETE 0x10000000 Recipient is a P1 resend recipient */
- #endif
- /* Bit definitions for abFlags[0] of ENTRYID */
- #define MAPI_SHORTTERM 0x80
- #define MAPI_NOTRECIP 0x40
- #define MAPI_THISSESSION 0x20
- #define MAPI_NOW 0x10
- #define MAPI_NOTRESERVED 0x08
- /* Bit definitions for abFlags[1] of ENTRYID */
- #define MAPI_COMPOUND 0x80
- /* ENTRYID */
- typedef struct
- {
- BYTE abFlags[4];
- BYTE ab[MAPI_DIM];
- } ENTRYID, FAR *LPENTRYID;
- #define CbNewENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
- #define CbENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
- #define SizedENTRYID(_cb, _name)
- struct _ENTRYID_ ## _name
- {
- BYTE abFlags[4];
- BYTE ab[_cb];
- } _name
- /* Byte-order-independent version of GUID (world-unique identifier) */
- typedef struct _MAPIUID
- {
- BYTE ab[16];
- } MAPIUID, FAR * LPMAPIUID;
- /* Note: need to include C run-times (memory.h) to use this macro */
- #define IsEqualMAPIUID(lpuid1, lpuid2) (!memcmp(lpuid1, lpuid2, sizeof(MAPIUID)))
- /*
- * Constants for one-off entry ID:
- * The MAPIUID that identifies the one-off provider;
- * the flag that defines whether the embedded strings are Unicode;
- * the flag that specifies whether the recipient gets TNEF or not.
- */
- #define MAPI_ONE_OFF_UID { 0x81, 0x2b, 0x1f, 0xa4, 0xbe, 0xa3, 0x10, 0x19,
- 0x9d, 0x6e, 0x00, 0xdd, 0x01, 0x0f, 0x54, 0x02 }
- #define MAPI_ONE_OFF_UNICODE 0x8000
- #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
- /* Object type */
- #define MAPI_STORE ((ULONG) 0x00000001) /* Message Store */
- #define MAPI_ADDRBOOK ((ULONG) 0x00000002) /* Address Book */
- #define MAPI_FOLDER ((ULONG) 0x00000003) /* Folder */
- #define MAPI_ABCONT ((ULONG) 0x00000004) /* Address Book Container */
- #define MAPI_MESSAGE ((ULONG) 0x00000005) /* Message */
- #define MAPI_MAILUSER ((ULONG) 0x00000006) /* Individual Recipient */
- #define MAPI_ATTACH ((ULONG) 0x00000007) /* Attachment */
- #define MAPI_DISTLIST ((ULONG) 0x00000008) /* Distribution List Recipient */
- #define MAPI_PROFSECT ((ULONG) 0x00000009) /* Profile Section */
- #define MAPI_STATUS ((ULONG) 0x0000000A) /* Status Object */
- #define MAPI_SESSION ((ULONG) 0x0000000B) /* Session */
- #define MAPI_FORMINFO ((ULONG) 0x0000000C) /* Form Information */
- /*
- * Maximum length of profile names and passwords, not including
- * the null termination character.
- */
- #ifndef cchProfileNameMax
- #define cchProfileNameMax 64
- #define cchProfilePassMax 64
- #endif
- /* Property Types */
- #define MV_FLAG 0x1000 /* Multi-value flag */
- #define PT_UNSPECIFIED ((ULONG) 0) /* (Reserved for interface use) type doesn't matter to caller */
- #define PT_NULL ((ULONG) 1) /* NULL property value */
- #define PT_I2 ((ULONG) 2) /* Signed 16-bit value */
- #define PT_LONG ((ULONG) 3) /* Signed 32-bit value */
- #define PT_R4 ((ULONG) 4) /* 4-byte floating point */
- #define PT_DOUBLE ((ULONG) 5) /* Floating point double */
- #define PT_CURRENCY ((ULONG) 6) /* Signed 64-bit int (decimal w/ 4 digits right of decimal pt) */
- #define PT_APPTIME ((ULONG) 7) /* Application time */
- #define PT_ERROR ((ULONG) 10) /* 32-bit error value */
- #define PT_BOOLEAN ((ULONG) 11) /* 16-bit boolean (non-zero true) */
- #define PT_OBJECT ((ULONG) 13) /* Embedded object in a property */
- #define PT_I8 ((ULONG) 20) /* 8-byte signed integer */
- #define PT_STRING8 ((ULONG) 30) /* Null terminated 8-bit character string */
- #define PT_UNICODE ((ULONG) 31) /* Null terminated Unicode string */
- #define PT_SYSTIME ((ULONG) 64) /* FILETIME 64-bit int w/ number of 100ns periods since Jan 1,1601 */
- #define PT_CLSID ((ULONG) 72) /* OLE GUID */
- #define PT_BINARY ((ULONG) 258) /* Uninterpreted (counted byte array) */
- /* Changes are likely to these numbers, and to their structures. */
- /* Alternate property type names for ease of use */
- #define PT_SHORT PT_I2
- #define PT_I4 PT_LONG
- #define PT_FLOAT PT_R4
- #define PT_R8 PT_DOUBLE
- #define PT_LONGLONG PT_I8
- /*
- * The type of a MAPI-defined string property is indirected, so
- * that it defaults to Unicode string on a Unicode platform and to
- * String8 on an ANSI or DBCS platform.
- *
- * Macros are defined here both for the property type, and for the
- * field of the property value structure which should be
- * dereferenced to obtain the string pointer.
- */
- #ifdef UNICODE
- #define PT_TSTRING PT_UNICODE
- #define PT_MV_TSTRING (MV_FLAG|PT_UNICODE)
- #define LPSZ lpszW
- #define LPPSZ lppszW
- #define MVSZ MVszW
- #else
- #define PT_TSTRING PT_STRING8
- #define PT_MV_TSTRING (MV_FLAG|PT_STRING8)
- #define LPSZ lpszA
- #define LPPSZ lppszA
- #define MVSZ MVszA
- #endif
- /* Property Tags
- *
- * By convention, MAPI never uses 0 or FFFF as a property ID.
- * Use as null values, initializers, sentinels, or what have you.
- */
- #define PROP_TYPE_MASK ((ULONG)0x0000FFFF) /* Mask for Property type */
- #define PROP_TYPE(ulPropTag) (((ULONG)(ulPropTag))&PROP_TYPE_MASK)
- #define PROP_ID(ulPropTag) (((ULONG)(ulPropTag))>>16)
- #define PROP_TAG(ulPropType,ulPropID) ((((ULONG)(ulPropID))<<16)|((ULONG)(ulPropType)))
- #define PROP_ID_NULL 0
- #define PROP_ID_INVALID 0xFFFF
- #define PR_NULL PROP_TAG( PT_NULL, PROP_ID_NULL)
- #define CHANGE_PROP_TYPE(ulPropTag, ulPropType)
- (((ULONG)0xFFFF0000 & ulPropTag) | ulPropType)
- /* Multi-valued Property Types */
- #define PT_MV_I2 (MV_FLAG|PT_I2)
- #define PT_MV_LONG (MV_FLAG|PT_LONG)
- #define PT_MV_R4 (MV_FLAG|PT_R4)
- #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
- #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
- #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
- #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
- #define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
- #define PT_MV_BINARY (MV_FLAG|PT_BINARY)
- #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
- #define PT_MV_CLSID (MV_FLAG|PT_CLSID)
- #define PT_MV_I8 (MV_FLAG|PT_I8)
- /* Alternate property type names for ease of use */
- #define PT_MV_SHORT PT_MV_I2
- #define PT_MV_I4 PT_MV_LONG
- #define PT_MV_FLOAT PT_MV_R4
- #define PT_MV_R8 PT_MV_DOUBLE
- #define PT_MV_LONGLONG PT_MV_I8
- /*
- * Property type reserved bits
- *
- * MV_INSTANCE is used as a flag in table operations to request
- * that a multi-valued property be presented as a single-valued
- * property appearing in multiple rows.
- */
- #define MV_INSTANCE 0x2000
- #define MVI_FLAG (MV_FLAG | MV_INSTANCE)
- #define MVI_PROP(tag) ((tag) | MVI_FLAG)
- /* --------------- */
- /* Data Structures */
- /* --------------- */
- /* Property Tag Array */
- typedef struct _SPropTagArray
- {
- ULONG cValues;
- ULONG aulPropTag[MAPI_DIM];
- } SPropTagArray, FAR * LPSPropTagArray;
- #define CbNewSPropTagArray(_ctag)
- (offsetof(SPropTagArray,aulPropTag) + (_ctag)*sizeof(ULONG))
- #define CbSPropTagArray(_lparray)
- (offsetof(SPropTagArray,aulPropTag) +
- (UINT)((_lparray)->cValues)*sizeof(ULONG))
- /* SPropTagArray */
- #define SizedSPropTagArray(_ctag, _name)
- struct _SPropTagArray_ ## _name
- {
- ULONG cValues;
- ULONG aulPropTag[_ctag];
- } _name
- /* -------------- */
- /* Property Value */
- /* -------------- */
- typedef struct _SPropValue SPropValue;
- /* 32-bit CURRENCY definition stolen from oaidl.h */
- /* 16-bit CURRENCY definition stolen from variant.h */
- #ifndef _tagCY_DEFINED
- #define _tagCY_DEFINED
- #define _CY_DEFINED
- #if (defined (WIN16) || defined (DOS)) && !defined (_VARIANT_H_)
- typedef struct FARSTRUCT tagCY {
- #ifdef _MAC
- long Hi;
- long Lo;
- #else
- unsigned long Lo;
- long Hi;
- #endif
- } CY;
- #elif defined (_WIN32)
- /* real definition that makes the C++ compiler happy */
- typedef union tagCY {
- struct {
- #ifdef _MAC
- long Hi;
- long Lo;
- #else
- unsigned long Lo;
- long Hi;
- #endif
- };
- LONGLONG int64;
- } CY;
- #endif /* 16-bit vs 32-bit definition */
- #endif
- /* size is 8 */
- typedef CY CURRENCY;
- typedef struct _SBinary
- {
- ULONG cb;
- LPBYTE lpb;
- } SBinary, FAR *LPSBinary;
- typedef struct _SShortArray
- {
- ULONG cValues;
- short int FAR *lpi;
- } SShortArray;
- typedef struct _SGuidArray
- {
- ULONG cValues;
- GUID FAR *lpguid;
- } SGuidArray;
- typedef struct _SRealArray
- {
- ULONG cValues;
- float FAR *lpflt;
- } SRealArray;
- typedef struct _SLongArray
- {
- ULONG cValues;
- LONG FAR *lpl;
- } SLongArray;
- typedef struct _SLargeIntegerArray
- {
- ULONG cValues;
- LARGE_INTEGER FAR *lpli;
- } SLargeIntegerArray;
- typedef struct _SDateTimeArray
- {
- ULONG cValues;
- FILETIME FAR *lpft;
- } SDateTimeArray;
- typedef struct _SAppTimeArray
- {
- ULONG cValues;
- double FAR *lpat;
- } SAppTimeArray;
- typedef struct _SCurrencyArray
- {
- ULONG cValues;
- CURRENCY FAR *lpcur;
- } SCurrencyArray;
- typedef struct _SBinaryArray
- {
- ULONG cValues;
- SBinary FAR *lpbin;
- } SBinaryArray;
- typedef struct _SDoubleArray
- {
- ULONG cValues;
- double FAR *lpdbl;
- } SDoubleArray;
- typedef struct _SWStringArray
- {
- ULONG cValues;
- LPWSTR FAR *lppszW;
- } SWStringArray;
- typedef struct _SLPSTRArray
- {
- ULONG cValues;
- LPSTR FAR *lppszA;
- } SLPSTRArray;
- typedef union _PV
- {
- short int i; /* case PT_I2 */
- LONG l; /* case PT_LONG */
- ULONG ul; /* alias for PT_LONG */
- float flt; /* case PT_R4 */
- double dbl; /* case PT_DOUBLE */
- unsigned short int b; /* case PT_BOOLEAN */
- CURRENCY cur; /* case PT_CURRENCY */
- double at; /* case PT_APPTIME */
- FILETIME ft; /* case PT_SYSTIME */
- LPSTR lpszA; /* case PT_STRING8 */
- SBinary bin; /* case PT_BINARY */
- LPWSTR lpszW; /* case PT_UNICODE */
- LPGUID lpguid; /* case PT_CLSID */
- LARGE_INTEGER li; /* case PT_I8 */
- SShortArray MVi; /* case PT_MV_I2 */
- SLongArray MVl; /* case PT_MV_LONG */
- SRealArray MVflt; /* case PT_MV_R4 */
- SDoubleArray MVdbl; /* case PT_MV_DOUBLE */
- SCurrencyArray MVcur; /* case PT_MV_CURRENCY */
- SAppTimeArray MVat; /* case PT_MV_APPTIME */
- SDateTimeArray MVft; /* case PT_MV_SYSTIME */
- SBinaryArray MVbin; /* case PT_MV_BINARY */
- SLPSTRArray MVszA; /* case PT_MV_STRING8 */
- SWStringArray MVszW; /* case PT_MV_UNICODE */
- SGuidArray MVguid; /* case PT_MV_CLSID */
- SLargeIntegerArray MVli; /* case PT_MV_I8 */
- SCODE err; /* case PT_ERROR */
- LONG x; /* case PT_NULL, PT_OBJECT (no usable value) */
- } __UPV;
- typedef struct _SPropValue
- {
- ULONG ulPropTag;
- ULONG dwAlignPad;
- union _PV Value;
- } SPropValue, FAR * LPSPropValue;
- /* --------------------------------------------- */
- /* Property Problem and Property Problem Arrays */
- /* --------------------------------------------- */
- typedef struct _SPropProblem
- {
- ULONG ulIndex;
- ULONG ulPropTag;
- SCODE scode;
- } SPropProblem, FAR * LPSPropProblem;
- typedef struct _SPropProblemArray
- {
- ULONG cProblem;
- SPropProblem aProblem[MAPI_DIM];
- } SPropProblemArray, FAR * LPSPropProblemArray;
- #define CbNewSPropProblemArray(_cprob)
- (offsetof(SPropProblemArray,aProblem) + (_cprob)*sizeof(SPropProblem))
- #define CbSPropProblemArray(_lparray)
- (offsetof(SPropProblemArray,aProblem) +
- (UINT) ((_lparray)->cProblem*sizeof(SPropProblem)))
- #define SizedSPropProblemArray(_cprob, _name)
- struct _SPropProblemArray_ ## _name
- {
- ULONG cProblem;
- SPropProblem aProblem[_cprob];
- } _name
- /*
- * ENTRYLIST
- */
- typedef SBinaryArray ENTRYLIST, FAR *LPENTRYLIST;
- /*
- * FLATENTRYLIST
- * MTSID
- * FLATMTSIDLIST
- */
- typedef struct {
- ULONG cb;
- BYTE abEntry[MAPI_DIM];
- } FLATENTRY, FAR *LPFLATENTRY;
- typedef struct {
- ULONG cEntries;
- ULONG cbEntries;
- BYTE abEntries[MAPI_DIM];
- } FLATENTRYLIST, FAR *LPFLATENTRYLIST;
- typedef struct {
- ULONG cb;
- BYTE ab[MAPI_DIM];
- } MTSID, FAR *LPMTSID;
- typedef struct {
- ULONG cMTSIDs;
- ULONG cbMTSIDs;
- BYTE abMTSIDs[MAPI_DIM];
- } FLATMTSIDLIST, FAR *LPFLATMTSIDLIST;
- #define CbNewFLATENTRY(_cb) (offsetof(FLATENTRY,abEntry) + (_cb))
- #define CbFLATENTRY(_lpentry) (offsetof(FLATENTRY,abEntry) + (_lpentry)->cb)
- #define CbNewFLATENTRYLIST(_cb) (offsetof(FLATENTRYLIST,abEntries) + (_cb))
- #define CbFLATENTRYLIST(_lplist) (offsetof(FLATENTRYLIST,abEntries) + (_lplist)->cbEntries)
- #define CbNewMTSID(_cb) (offsetof(MTSID,ab) + (_cb))
- #define CbMTSID(_lpentry) (offsetof(MTSID,ab) + (_lpentry)->cb)
- #define CbNewFLATMTSIDLIST(_cb) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_cb))
- #define CbFLATMTSIDLIST(_lplist) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_lplist)->cbMTSIDs)
- /* No SizedXXX macros for these types. */
- /* ------------------------------ */
- /* ADRENTRY, ADRLIST */
- typedef struct _ADRENTRY
- {
- ULONG ulReserved1; /* Never used */
- ULONG cValues;
- LPSPropValue rgPropVals;
- } ADRENTRY, FAR * LPADRENTRY;
- typedef struct _ADRLIST
- {
- ULONG cEntries;
- ADRENTRY aEntries[MAPI_DIM];
- } ADRLIST, FAR * LPADRLIST;
- #define CbNewADRLIST(_centries)
- (offsetof(ADRLIST,aEntries) + (_centries)*sizeof(ADRENTRY))
- #define CbADRLIST(_lpadrlist)
- (offsetof(ADRLIST,aEntries) + (UINT)(_lpadrlist)->cEntries*sizeof(ADRENTRY))
- #define SizedADRLIST(_centries, _name)
- struct _ADRLIST_ ## _name
- {
- ULONG cEntries;
- ADRENTRY aEntries[_centries];
- } _name
- /* ------------------------------ */
- /* SRow, SRowSet */
- typedef struct _SRow
- {
- ULONG ulAdrEntryPad; /* Pad so SRow's can map to ADRENTRY's */
- ULONG cValues; /* Count of property values */
- LPSPropValue lpProps; /* Property value array */
- } SRow, FAR * LPSRow;
- typedef struct _SRowSet
- {
- ULONG cRows; /* Count of rows */
- SRow aRow[MAPI_DIM]; /* Array of rows */
- } SRowSet, FAR * LPSRowSet;
- #define CbNewSRowSet(_crow) (offsetof(SRowSet,aRow) + (_crow)*sizeof(SRow))
- #define CbSRowSet(_lprowset) (offsetof(SRowSet,aRow) +
- (UINT)((_lprowset)->cRows*sizeof(SRow)))
- #define SizedSRowSet(_crow, _name)
- struct _SRowSet_ ## _name
- {
- ULONG cRows;
- SRow aRow[_crow];
- } _name
- /* MAPI Allocation Routines ------------------------------------------------ */
- typedef SCODE (STDMETHODCALLTYPE ALLOCATEBUFFER)(
- ULONG cbSize,
- LPVOID FAR * lppBuffer
- );
- typedef SCODE (STDMETHODCALLTYPE ALLOCATEMORE)(
- ULONG cbSize,
- LPVOID lpObject,
- LPVOID FAR * lppBuffer
- );
- typedef ULONG (STDAPICALLTYPE FREEBUFFER)(
- LPVOID lpBuffer
- );
- typedef ALLOCATEBUFFER FAR *LPALLOCATEBUFFER;
- typedef ALLOCATEMORE FAR * LPALLOCATEMORE;
- typedef FREEBUFFER FAR * LPFREEBUFFER;
- /* MAPI Component Object Model Macros -------------------------------------- */
- #if defined(MAPI_IF) && (!defined(__cplusplus) || defined(CINTERFACE))
- #define DECLARE_MAPI_INTERFACE(iface)
- typedef struct iface##Vtbl iface##Vtbl, FAR * iface;
- struct iface##Vtbl
- #define DECLARE_MAPI_INTERFACE_(iface, baseiface)
- 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)
- (THIS_ ULONG cValues,
- LPSPropValue lpPropArray,
- LPSPropProblemArray FAR * lppProblems) IPURE;
- MAPIMETHOD(DeleteProps)
- (THIS_ LPSPropTagArray lpPropTagArray,
- LPSPropProblemArray FAR * lppProblems) IPURE;
- MAPIMETHOD(CopyTo)
- (THIS_ ULONG ciidExclude,
- LPCIID rgiidExclude,
- LPSPropTagArray lpExcludeProps,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- LPCIID lpInterface,
- LPVOID lpDestObj,
- ULONG ulFlags,
- LPSPropProblemArray FAR * lppProblems) IPURE;
- MAPIMETHOD(CopyProps)
- (THIS_ LPSPropTagArray lpIncludeProps,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- LPCIID lpInterface,
- LPVOID lpDestObj,
- ULONG ulFlags,
- LPSPropProblemArray FAR * lppProblems) IPURE;
- MAPIMETHOD(GetNamesFromIDs)
- (THIS_ LPSPropTagArray FAR * lppPropTags,
- LPGUID lpPropSetGuid,
- ULONG ulFlags,
- ULONG FAR * lpcPropNames,
- LPMAPINAMEID FAR * FAR * lpppPropNames) IPURE;
- MAPIMETHOD(GetIDsFromNames)
- (THIS_ ULONG cPropNames,
- LPMAPINAMEID FAR * lppPropNames,
- ULONG ulFlags,
- LPSPropTagArray FAR * lppPropTags) IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPIProp
- DECLARE_MAPI_INTERFACE_(IMAPIProp, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- };
- /* IMAPITable Interface ---------------------------------------------------- */
- /* Table status */
- #define TBLSTAT_COMPLETE ((ULONG) 0)
- #define TBLSTAT_QCHANGED ((ULONG) 7)
- #define TBLSTAT_SORTING ((ULONG) 9)
- #define TBLSTAT_SORT_ERROR ((ULONG) 10)
- #define TBLSTAT_SETTING_COLS ((ULONG) 11)
- #define TBLSTAT_SETCOL_ERROR ((ULONG) 13)
- #define TBLSTAT_RESTRICTING ((ULONG) 14)
- #define TBLSTAT_RESTRICT_ERROR ((ULONG) 15)
- /* Table Type */
- #define TBLTYPE_SNAPSHOT ((ULONG) 0)
- #define TBLTYPE_KEYSET ((ULONG) 1)
- #define TBLTYPE_DYNAMIC ((ULONG) 2)
- /* Sort order */
- /* bit 0: set if descending, clear if ascending */
- #define TABLE_SORT_ASCEND ((ULONG) 0x00000000)
- #define TABLE_SORT_DESCEND ((ULONG) 0x00000001)
- #define TABLE_SORT_COMBINE ((ULONG) 0x00000002)
- /* Data structures */
- typedef struct _SSortOrder
- {
- ULONG ulPropTag; /* Column to sort on */
- ULONG ulOrder; /* Ascending, descending, combine to left */
- } SSortOrder, FAR * LPSSortOrder;
- typedef struct _SSortOrderSet
- {
- ULONG cSorts; /* Number of sort columns in aSort below*/
- ULONG cCategories; /* 0 for non-categorized, up to cSorts */
- ULONG cExpanded; /* 0 if no categories start expanded, */
- /* up to cExpanded */
- SSortOrder aSort[MAPI_DIM]; /* The sort orders */
- } SSortOrderSet, FAR * LPSSortOrderSet;
- #define CbNewSSortOrderSet(_csort)
- (offsetof(SSortOrderSet,aSort) + (_csort)*sizeof(SSortOrder))
- #define CbSSortOrderSet(_lpset)
- (offsetof(SSortOrderSet,aSort) +
- (UINT)((_lpset)->cSorts*sizeof(SSortOrder)))
- #define SizedSSortOrderSet(_csort, _name)
- struct _SSortOrderSet_ ## _name
- {
- ULONG cSorts;
- ULONG cCategories;
- ULONG cExpanded;
- SSortOrder aSort[_csort];
- } _name
- typedef ULONG BOOKMARK;
- #define BOOKMARK_BEGINNING ((BOOKMARK) 0) /* Before first row */
- #define BOOKMARK_CURRENT ((BOOKMARK) 1) /* Before current row */
- #define BOOKMARK_END ((BOOKMARK) 2) /* After last row */
- /* Fuzzy Level */
- #define FL_FULLSTRING ((ULONG) 0x00000000)
- #define FL_SUBSTRING ((ULONG) 0x00000001)
- #define FL_PREFIX ((ULONG) 0x00000002)
- #define FL_IGNORECASE ((ULONG) 0x00010000)
- #define FL_IGNORENONSPACE ((ULONG) 0x00020000)
- #define FL_LOOSE ((ULONG) 0x00040000)
- /* Restrictions */
- typedef struct _SRestriction FAR * LPSRestriction;
- /* Restriction types */
- #define RES_AND ((ULONG) 0x00000000)
- #define RES_OR ((ULONG) 0x00000001)
- #define RES_NOT ((ULONG) 0x00000002)
- #define RES_CONTENT ((ULONG) 0x00000003)
- #define RES_PROPERTY ((ULONG) 0x00000004)
- #define RES_COMPAREPROPS ((ULONG) 0x00000005)
- #define RES_BITMASK ((ULONG) 0x00000006)
- #define RES_SIZE ((ULONG) 0x00000007)
- #define RES_EXIST ((ULONG) 0x00000008)
- #define RES_SUBRESTRICTION ((ULONG) 0x00000009)
- #define RES_COMMENT ((ULONG) 0x0000000A)
- /* Relational operators. These apply to all property comparison restrictions. */
- #define RELOP_LT ((ULONG) 0) /* < */
- #define RELOP_LE ((ULONG) 1) /* <= */
- #define RELOP_GT ((ULONG) 2) /* > */
- #define RELOP_GE ((ULONG) 3) /* >= */
- #define RELOP_EQ ((ULONG) 4) /* == */
- #define RELOP_NE ((ULONG) 5) /* != */
- #define RELOP_RE ((ULONG) 6) /* LIKE (Regular expression) */
- /* Bitmask operators, for RES_BITMASK only. */
- #define BMR_EQZ ((ULONG) 0) /* ==0 */
- #define BMR_NEZ ((ULONG) 1) /* !=0 */
- /* Subobject identifiers for RES_SUBRESTRICTION only. See MAPITAGS.H. */
- /* #define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12) */
- /* #define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13) */
- typedef struct _SAndRestriction
- {
- ULONG cRes;
- LPSRestriction lpRes;
- } SAndRestriction;
- typedef struct _SOrRestriction
- {
- ULONG cRes;
- LPSRestriction lpRes;
- } SOrRestriction;
- typedef struct _SNotRestriction
- {
- ULONG ulReserved;
- LPSRestriction lpRes;
- } SNotRestriction;
- typedef struct _SContentRestriction
- {
- ULONG ulFuzzyLevel;
- ULONG ulPropTag;
- LPSPropValue lpProp;
- } SContentRestriction;
- typedef struct _SBitMaskRestriction
- {
- ULONG relBMR;
- ULONG ulPropTag;
- ULONG ulMask;
- } SBitMaskRestriction;
- typedef struct _SPropertyRestriction
- {
- ULONG relop;
- ULONG ulPropTag;
- LPSPropValue lpProp;
- } SPropertyRestriction;
- typedef struct _SComparePropsRestriction
- {
- ULONG relop;
- ULONG ulPropTag1;
- ULONG ulPropTag2;
- } SComparePropsRestriction;
- typedef struct _SSizeRestriction
- {
- ULONG relop;
- ULONG ulPropTag;
- ULONG cb;
- } SSizeRestriction;
- typedef struct _SExistRestriction
- {
- ULONG ulReserved1;
- ULONG ulPropTag;
- ULONG ulReserved2;
- } SExistRestriction;
- typedef struct _SSubRestriction
- {
- ULONG ulSubObject;
- LPSRestriction lpRes;
- } SSubRestriction;
- typedef struct _SCommentRestriction
- {
- ULONG cValues; /* # of properties in lpProp */
- LPSRestriction lpRes;
- LPSPropValue lpProp;
- } SCommentRestriction;
- typedef struct _SRestriction
- {
- ULONG rt; /* Restriction type */
- union
- {
- SComparePropsRestriction resCompareProps; /* first */
- SAndRestriction resAnd;
- SOrRestriction resOr;
- SNotRestriction resNot;
- SContentRestriction resContent;
- SPropertyRestriction resProperty;
- SBitMaskRestriction resBitMask;
- SSizeRestriction resSize;
- SExistRestriction resExist;
- SSubRestriction resSub;
- SCommentRestriction resComment;
- } res;
- } SRestriction;
- /* SComparePropsRestriction is first in the union so that */
- /* static initializations of 3-value restriction work. */
- /* Flags of the methods of IMAPITable */
- /* QueryColumn */
- #define TBL_ALL_COLUMNS ((ULONG) 0x00000001)
- /* QueryRows */
- /* Possible values for PR_ROW_TYPE (for categorization) */
- #define TBL_LEAF_ROW ((ULONG) 1)
- #define TBL_EMPTY_CATEGORY ((ULONG) 2)
- #define TBL_EXPANDED_CATEGORY ((ULONG) 3)
- #define TBL_COLLAPSED_CATEGORY ((ULONG) 4)
- /* Table wait flag */
- #define TBL_NOWAIT ((ULONG) 0x00000001)
- /* alternative name for TBL_NOWAIT */
- #define TBL_ASYNC ((ULONG) 0x00000001)
- #define TBL_BATCH ((ULONG) 0x00000002)
- /* FindRow */
- #define DIR_BACKWARD ((ULONG) 0x00000001)
- /* Table cursor states */
- #define TBL_NOADVANCE ((ULONG) 0x00000001)
- #define MAPI_IMAPITABLE_METHODS(IPURE)
- MAPIMETHOD(GetLastError)
- (THIS_ HRESULT hResult,
- ULONG ulFlags,
- LPMAPIERROR FAR * lppMAPIError) IPURE;
- MAPIMETHOD(Advise)
- (THIS_ ULONG ulEventMask,
- LPMAPIADVISESINK lpAdviseSink,
- ULONG FAR * lpulConnection) IPURE;
- MAPIMETHOD(Unadvise)
- (THIS_ ULONG ulConnection) IPURE;
- MAPIMETHOD(GetStatus)
- (THIS_ ULONG FAR * lpulTableStatus,
- ULONG FAR * lpulTableType) IPURE;
- MAPIMETHOD(SetColumns)
- (THIS_ LPSPropTagArray lpPropTagArray,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(QueryColumns)
- (THIS_ ULONG ulFlags,
- LPSPropTagArray FAR * lpPropTagArray) IPURE;
- MAPIMETHOD(GetRowCount)
- (THIS_ ULONG ulFlags,
- ULONG FAR * lpulCount) IPURE;
- MAPIMETHOD(SeekRow)
- (THIS_ BOOKMARK bkOrigin,
- LONG lRowCount,
- LONG FAR * lplRowsSought) IPURE;
- MAPIMETHOD(SeekRowApprox)
- (THIS_ ULONG ulNumerator,
- ULONG ulDenominator) IPURE;
- MAPIMETHOD(QueryPosition)
- (THIS_ ULONG FAR * lpulRow,
- ULONG FAR * lpulNumerator,
- ULONG FAR * lpulDenominator) IPURE;
- MAPIMETHOD(FindRow)
- (THIS_ LPSRestriction lpRestriction,
- BOOKMARK bkOrigin,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(Restrict)
- (THIS_ LPSRestriction lpRestriction,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(CreateBookmark)
- (THIS_ BOOKMARK FAR * lpbkPosition) IPURE;
- MAPIMETHOD(FreeBookmark)
- (THIS_ BOOKMARK bkPosition) IPURE;
- MAPIMETHOD(SortTable)
- (THIS_ LPSSortOrderSet lpSortCriteria,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(QuerySortOrder)
- (THIS_ LPSSortOrderSet FAR * lppSortCriteria) IPURE;
- MAPIMETHOD(QueryRows)
- (THIS_ LONG lRowCount,
- ULONG ulFlags,
- LPSRowSet FAR * lppRows) IPURE;
- MAPIMETHOD(Abort) (THIS) IPURE;
- MAPIMETHOD(ExpandRow)
- (THIS_ ULONG cbInstanceKey,
- LPBYTE pbInstanceKey,
- ULONG ulRowCount,
- ULONG ulFlags,
- LPSRowSet FAR * lppRows,
- ULONG FAR * lpulMoreRows) IPURE;
- MAPIMETHOD(CollapseRow)
- (THIS_ ULONG cbInstanceKey,
- LPBYTE pbInstanceKey,
- ULONG ulFlags,
- ULONG FAR * lpulRowCount) IPURE;
- MAPIMETHOD(WaitForCompletion)
- (THIS_ ULONG ulFlags,
- ULONG ulTimeout,
- ULONG FAR * lpulTableStatus) IPURE;
- MAPIMETHOD(GetCollapseState)
- (THIS_ ULONG ulFlags,
- ULONG cbInstanceKey,
- LPBYTE lpbInstanceKey,
- ULONG FAR * lpcbCollapseState,
- LPBYTE FAR * lppbCollapseState) IPURE;
- MAPIMETHOD(SetCollapseState)
- (THIS_ ULONG ulFlags,
- ULONG cbCollapseState,
- LPBYTE pbCollapseState,
- BOOKMARK FAR * lpbkLocation) IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPITable
- DECLARE_MAPI_INTERFACE_(IMAPITable, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPITABLE_METHODS(PURE)
- };
- /* IProfSect Interface ----------------------------------------------------- */
- /* Standard section for public profile properties */
- #define PS_PROFILE_PROPERTIES_INIT
- { 0x98, 0x15, 0xAC, 0x08, 0xAA, 0xB0, 0x10, 0x1A,
- 0x8C, 0x93, 0x08, 0x00, 0x2B, 0x2A, 0x56, 0xC2 }
- #define MAPI_IPROFSECT_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IProfSect
- DECLARE_MAPI_INTERFACE_(IProfSect, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IPROFSECT_METHODS(PURE)
- };
- /* IMAPIStatus Interface --------------------------------------------------- */
- /* Values for PR_RESOURCE_TYPE, _METHODS, _FLAGS */
- #define MAPI_STORE_PROVIDER ((ULONG) 33) /* Message Store */
- #define MAPI_AB ((ULONG) 34) /* Address Book */
- #define MAPI_AB_PROVIDER ((ULONG) 35) /* Address Book Provider */
- #define MAPI_TRANSPORT_PROVIDER ((ULONG) 36) /* Transport Provider */
- #define MAPI_SPOOLER ((ULONG) 37) /* Message Spooler */
- #define MAPI_PROFILE_PROVIDER ((ULONG) 38) /* Profile Provider */
- #define MAPI_SUBSYSTEM ((ULONG) 39) /* Overall Subsystem Status */
- #define MAPI_HOOK_PROVIDER ((ULONG) 40) /* Spooler Hook */
- #define STATUS_VALIDATE_STATE ((ULONG) 0x00000001)
- #define STATUS_SETTINGS_DIALOG ((ULONG) 0x00000002)
- #define STATUS_CHANGE_PASSWORD ((ULONG) 0x00000004)
- #define STATUS_FLUSH_QUEUES ((ULONG) 0x00000008)
- #define STATUS_DEFAULT_OUTBOUND ((ULONG) 0x00000001)
- #define STATUS_DEFAULT_STORE ((ULONG) 0x00000002)
- #define STATUS_PRIMARY_IDENTITY ((ULONG) 0x00000004)
- #define STATUS_SIMPLE_STORE ((ULONG) 0x00000008)
- #define STATUS_XP_PREFER_LAST ((ULONG) 0x00000010)
- #define STATUS_NO_PRIMARY_IDENTITY ((ULONG) 0x00000020)
- #define STATUS_NO_DEFAULT_STORE ((ULONG) 0x00000040)
- #define STATUS_TEMP_SECTION ((ULONG) 0x00000080)
- #define STATUS_OWN_STORE ((ULONG) 0x00000100)
- /****** HOOK_INBOUND ((ULONG) 0x00000200) Defined in MAPIHOOK.H */
- /****** HOOK_OUTBOUND ((ULONG) 0x00000400) Defined in MAPIHOOK.H */
- #define STATUS_NEED_IPM_TREE ((ULONG) 0x00000800)
- #define STATUS_PRIMARY_STORE ((ULONG) 0x00001000)
- #define STATUS_SECONDARY_STORE ((ULONG) 0x00002000)
- /*
- * PR_STATUS_CODE bit. Low 16 bits for common values; High 16 bits
- * for provider type-specific values. (DCR 304)
- */
- #define STATUS_AVAILABLE ((ULONG) 0x00000001)
- #define STATUS_OFFLINE ((ULONG) 0x00000002)
- #define STATUS_FAILURE ((ULONG) 0x00000004)
- /* Transport values of PR_STATUS_CODE */
- #define STATUS_INBOUND_ENABLED ((ULONG) 0x00010000)
- #define STATUS_INBOUND_ACTIVE ((ULONG) 0x00020000)
- #define STATUS_INBOUND_FLUSH ((ULONG) 0x00040000)
- #define STATUS_OUTBOUND_ENABLED ((ULONG) 0x00100000)
- #define STATUS_OUTBOUND_ACTIVE ((ULONG) 0x00200000)
- #define STATUS_OUTBOUND_FLUSH ((ULONG) 0x00400000)
- #define STATUS_REMOTE_ACCESS ((ULONG) 0x00800000)
- /* ValidateState flags */
- #define SUPPRESS_UI ((ULONG) 0x00000001)
- #define REFRESH_XP_HEADER_CACHE ((ULONG) 0x00010000)
- #define PROCESS_XP_HEADER_CACHE ((ULONG) 0x00020000)
- #define FORCE_XP_CONNECT ((ULONG) 0x00040000)
- #define FORCE_XP_DISCONNECT ((ULONG) 0x00080000)
- #define CONFIG_CHANGED ((ULONG) 0x00100000)
- #define ABORT_XP_HEADER_OPERATION ((ULONG) 0x00200000)
- #define SHOW_XP_SESSION_UI ((ULONG) 0x00400000)
- /* SettingsDialog flags */
- #define UI_READONLY ((ULONG) 0x00000001)
- /* FlushQueues flags */
- #define FLUSH_UPLOAD ((ULONG) 0x00000002)
- #define FLUSH_DOWNLOAD ((ULONG) 0x00000004)
- #define FLUSH_FORCE ((ULONG) 0x00000008)
- #define FLUSH_NO_UI ((ULONG) 0x00000010)
- #define FLUSH_ASYNC_OK ((ULONG) 0x00000020)
- #define MAPI_IMAPISTATUS_METHODS(IPURE)
- MAPIMETHOD(ValidateState)
- (THIS_ ULONG ulUIParam,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(SettingsDialog)
- (THIS_ ULONG ulUIParam,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(ChangePassword)
- (THIS_ LPTSTR lpOldPass,
- LPTSTR lpNewPass,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(FlushQueues)
- (THIS_ ULONG ulUIParam,
- ULONG cbTargetTransport,
- LPENTRYID lpTargetTransport,
- ULONG ulFlags) IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPIStatus
- DECLARE_MAPI_INTERFACE_(IMAPIStatus, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPISTATUS_METHODS(PURE)
- };
- /* IMAPIContainer Interface ------------------------------------------------ */
- /* Flags for OpenEntry() */
- /****** MAPI_MODIFY ((ULONG) 0x00000001) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- #define MAPI_BEST_ACCESS ((ULONG) 0x00000010)
- /* GetContentsTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
- /* GetHierarchyTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- #define CONVENIENT_DEPTH ((ULONG) 0x00000001)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* GetSearchCriteria */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- #define SEARCH_RUNNING ((ULONG) 0x00000001)
- #define SEARCH_REBUILD ((ULONG) 0x00000002)
- #define SEARCH_RECURSIVE ((ULONG) 0x00000004)
- #define SEARCH_FOREGROUND ((ULONG) 0x00000008)
- /* SetSearchCriteria */
- #define STOP_SEARCH ((ULONG) 0x00000001)
- #define RESTART_SEARCH ((ULONG) 0x00000002)
- #define RECURSIVE_SEARCH ((ULONG) 0x00000004)
- #define SHALLOW_SEARCH ((ULONG) 0x00000008)
- #define FOREGROUND_SEARCH ((ULONG) 0x00000010)
- #define BACKGROUND_SEARCH ((ULONG) 0x00000020)
- #define MAPI_IMAPICONTAINER_METHODS(IPURE)
- MAPIMETHOD(GetContentsTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(GetHierarchyTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(OpenEntry)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- LPCIID lpInterface,
- ULONG ulFlags,
- ULONG FAR * lpulObjType,
- LPUNKNOWN FAR * lppUnk) IPURE;
- MAPIMETHOD(SetSearchCriteria)
- (THIS_ LPSRestriction lpRestriction,
- LPENTRYLIST lpContainerList,
- ULONG ulSearchFlags) IPURE;
- MAPIMETHOD(GetSearchCriteria)
- (THIS_ ULONG ulFlags,
- LPSRestriction FAR * lppRestriction,
- LPENTRYLIST FAR * lppContainerList,
- ULONG FAR * lpulSearchState)IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPIContainer
- DECLARE_MAPI_INTERFACE_(IMAPIContainer, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- };
- /* IABContainer Interface -------------------------------------------------- */
- /*
- * IABContainer PR_CONTAINER_FLAGS values
- * If AB_UNMODIFIABLE and AB_MODIFIABLE are both set, it means the container
- * doesn't know if it's modifiable or not, and the client should
- * try to modify the contents but we won't expect it to work.
- * If the AB_RECIPIENTS flag is set and neither AB_MODIFIABLE or AB_UNMODIFIABLE
- * bits are set, it is an error.
- */
- typedef struct _flaglist
- {
- ULONG cFlags;
- ULONG ulFlag[MAPI_DIM];
- } FlagList, FAR * LPFlagList;
- /*
- * Container flags
- */
- #define AB_RECIPIENTS ((ULONG) 0x00000001)
- #define AB_SUBCONTAINERS ((ULONG) 0x00000002)
- #define AB_MODIFIABLE ((ULONG) 0x00000004)
- #define AB_UNMODIFIABLE ((ULONG) 0x00000008)
- #define AB_FIND_ON_OPEN ((ULONG) 0x00000010)
- #define AB_NOT_DEFAULT ((ULONG) 0x00000020)
- /* CreateEntry() */
- #define CREATE_CHECK_DUP_STRICT ((ULONG) 0x00000001)
- #define CREATE_CHECK_DUP_LOOSE ((ULONG) 0x00000002)
- #define CREATE_REPLACE ((ULONG) 0x00000004)
- /* ResolveNames() - ulFlags */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* ResolveNames() - rgulFlags */
- #define MAPI_UNRESOLVED ((ULONG) 0x00000000)
- #define MAPI_AMBIGUOUS ((ULONG) 0x00000001)
- #define MAPI_RESOLVED ((ULONG) 0x00000002)
- #define MAPI_IABCONTAINER_METHODS(IPURE)
- MAPIMETHOD(CreateEntry)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulCreateFlags,
- LPMAPIPROP FAR * lppMAPIPropEntry) IPURE;
- MAPIMETHOD(CopyEntries)
- (THIS_ LPENTRYLIST lpEntries,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(DeleteEntries)
- (THIS_ LPENTRYLIST lpEntries,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(ResolveNames)
- (THIS_ LPSPropTagArray lpPropTagArray,
- ULONG ulFlags,
- LPADRLIST lpAdrList,
- LPFlagList lpFlagList) IPURE;
- #undef INTERFACE
- #define INTERFACE IABContainer
- DECLARE_MAPI_INTERFACE_(IABContainer, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IABCONTAINER_METHODS(PURE)
- };
- /* IMailUser Interface ----------------------------------------------------- */
- /* Any call which can create a one-off entryID (i.e. MAPISupport::CreateOneOff
- or IAdrBook::CreateOneOff) can encode the value for PR_SEND_RICH_INFO by
- passing in the following flag in the ulFlags parameter. Setting this flag
- indicates that PR_SEND_RICH_INFO will be FALSE.
- */
- #define MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000)
- /* Values of PR_NDR_DIAG_CODE */
- #define MAPI_DIAG(_code) ((LONG) _code)
- #define MAPI_DIAG_NO_DIAGNOSTIC MAPI_DIAG( -1 )
- #define MAPI_DIAG_OR_NAME_UNRECOGNIZED MAPI_DIAG( 0 )
- #define MAPI_DIAG_OR_NAME_AMBIGUOUS MAPI_DIAG( 1 )
- #define MAPI_DIAG_MTS_CONGESTED MAPI_DIAG( 2 )
- #define MAPI_DIAG_LOOP_DETECTED MAPI_DIAG( 3 )
- #define MAPI_DIAG_RECIPIENT_UNAVAILABLE MAPI_DIAG( 4 )
- #define MAPI_DIAG_MAXIMUM_TIME_EXPIRED MAPI_DIAG( 5 )
- #define MAPI_DIAG_EITS_UNSUPPORTED MAPI_DIAG( 6 )
- #define MAPI_DIAG_CONTENT_TOO_LONG MAPI_DIAG( 7 )
- #define MAPI_DIAG_IMPRACTICAL_TO_CONVERT MAPI_DIAG( 8 )
- #define MAPI_DIAG_PROHIBITED_TO_CONVERT MAPI_DIAG( 9 )
- #define MAPI_DIAG_CONVERSION_UNSUBSCRIBED MAPI_DIAG( 10 )
- #define MAPI_DIAG_PARAMETERS_INVALID MAPI_DIAG( 11 )
- #define MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR MAPI_DIAG( 12 )
- #define MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD MAPI_DIAG( 13 )
- #define MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD MAPI_DIAG( 14 )
- #define MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED MAPI_DIAG( 15 )
- #define MAPI_DIAG_TOO_MANY_RECIPIENTS MAPI_DIAG( 16 )
- #define MAPI_DIAG_NO_BILATERAL_AGREEMENT MAPI_DIAG( 17 )
- #define MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED MAPI_DIAG( 18 )
- #define MAPI_DIAG_CONVERSION_LOSS_PROHIB MAPI_DIAG( 19 )
- #define MAPI_DIAG_LINE_TOO_LONG MAPI_DIAG( 20 )
- #define MAPI_DIAG_PAGE_TOO_LONG MAPI_DIAG( 21 )
- #define MAPI_DIAG_PICTORIAL_SYMBOL_LOST MAPI_DIAG( 22 )
- #define MAPI_DIAG_PUNCTUATION_SYMBOL_LOST MAPI_DIAG( 23 )
- #define MAPI_DIAG_ALPHABETIC_CHARACTER_LOST MAPI_DIAG( 24 )
- #define MAPI_DIAG_MULTIPLE_INFO_LOSSES MAPI_DIAG( 25 )
- #define MAPI_DIAG_REASSIGNMENT_PROHIBITED MAPI_DIAG( 26 )
- #define MAPI_DIAG_REDIRECTION_LOOP_DETECTED MAPI_DIAG( 27 )
- #define MAPI_DIAG_EXPANSION_PROHIBITED MAPI_DIAG( 28 )
- #define MAPI_DIAG_SUBMISSION_PROHIBITED MAPI_DIAG( 29 )
- #define MAPI_DIAG_EXPANSION_FAILED MAPI_DIAG( 30 )
- #define MAPI_DIAG_RENDITION_UNSUPPORTED MAPI_DIAG( 31 )
- #define MAPI_DIAG_MAIL_ADDRESS_INCORRECT MAPI_DIAG( 32 )
- #define MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD MAPI_DIAG( 33 )
- #define MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE MAPI_DIAG( 34 )
- #define MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN MAPI_DIAG( 35 )
- #define MAPI_DIAG_MAIL_RECIPIENT_DECEASED MAPI_DIAG( 36 )
- #define MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED MAPI_DIAG( 37 )
- #define MAPI_DIAG_MAIL_REFUSED MAPI_DIAG( 38 )
- #define MAPI_DIAG_MAIL_UNCLAIMED MAPI_DIAG( 39 )
- #define MAPI_DIAG_MAIL_RECIPIENT_MOVED MAPI_DIAG( 40 )
- #define MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING MAPI_DIAG( 41 )
- #define MAPI_DIAG_MAIL_RECIPIENT_DEPARTED MAPI_DIAG( 42 )
- #define MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN MAPI_DIAG( 43 )
- #define MAPI_DIAG_MAIL_FORWARDING_UNWANTED MAPI_DIAG( 44 )
- #define MAPI_DIAG_MAIL_FORWARDING_PROHIB MAPI_DIAG( 45 )
- #define MAPI_DIAG_SECURE_MESSAGING_ERROR MAPI_DIAG( 46 )
- #define MAPI_DIAG_DOWNGRADING_IMPOSSIBLE MAPI_DIAG( 47 )
- /* Values of PR_DELIVERY_POINT (MH_T_DELIVERY_POINT) */
- #define MAPI_MH_DP_PUBLIC_UA ((ULONG) 0)
- #define MAPI_MH_DP_PRIVATE_UA ((ULONG) 1)
- #define MAPI_MH_DP_MS ((ULONG) 2)
- #define MAPI_MH_DP_ML ((ULONG) 3)
- #define MAPI_MH_DP_PDAU ((ULONG) 4)
- #define MAPI_MH_DP_PDS_PATRON ((ULONG) 5)
- #define MAPI_MH_DP_OTHER_AU ((ULONG) 6)
- #define MAPI_IMAILUSER_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IMailUser
- DECLARE_MAPI_INTERFACE_(IMailUser, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAILUSER_METHODS(PURE)
- };
- /* IDistList Interface ----------------------------------------------------- */
- #define MAPI_IDISTLIST_METHODS(IPURE)
- MAPIMETHOD(CreateEntry)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulCreateFlags,
- LPMAPIPROP FAR * lppMAPIPropEntry) IPURE;
- MAPIMETHOD(CopyEntries)
- (THIS_ LPENTRYLIST lpEntries,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(DeleteEntries)
- (THIS_ LPENTRYLIST lpEntries,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(ResolveNames)
- (THIS_ LPSPropTagArray lpPropTagArray,
- ULONG ulFlags,
- LPADRLIST lpAdrList,
- LPFlagList lpFlagList) IPURE;
- #undef INTERFACE
- #define INTERFACE IDistList
- DECLARE_MAPI_INTERFACE_(IDistList, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IDISTLIST_METHODS(PURE)
- };
- /* IMAPIFolder Interface --------------------------------------------------- */
- /* IMAPIFolder folder type (enum) */
- #define FOLDER_ROOT ((ULONG) 0x00000000)
- #define FOLDER_GENERIC ((ULONG) 0x00000001)
- #define FOLDER_SEARCH ((ULONG) 0x00000002)
- /* CreateMessage */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
- /* CopyMessages */
- #define MESSAGE_MOVE ((ULONG) 0x00000001)
- #define MESSAGE_DIALOG ((ULONG) 0x00000002)
- /****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
- /* CreateFolder */
- #define OPEN_IF_EXISTS ((ULONG) 0x00000001)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* DeleteFolder */
- #define DEL_MESSAGES ((ULONG) 0x00000001)
- #define FOLDER_DIALOG ((ULONG) 0x00000002)
- #define DEL_FOLDERS ((ULONG) 0x00000004)
- /* EmptyFolder */
- #define DEL_ASSOCIATED ((ULONG) 0x00000008)
- /* CopyFolder */
- #define FOLDER_MOVE ((ULONG) 0x00000001)
- /****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
- /****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
- #define COPY_SUBFOLDERS ((ULONG) 0x00000010)
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* SetReadFlags */
- /****** SUPPRESS_RECEIPT ((ULONG) 0x00000001) below */
- /****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
- /****** CLEAR_READ_FLAG ((ULONG) 0x00000004) below */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010) below */
- /****** CLEAR_RN_PENDING ((ULONG) 0x00000020) below */
- /****** CLEAR_NRN_PENDING ((ULONG) 0x00000040) below */
- /* GetMessageStatus */
- #define MSGSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
- #define MSGSTATUS_TAGGED ((ULONG) 0x00000002)
- #define MSGSTATUS_HIDDEN ((ULONG) 0x00000004)
- #define MSGSTATUS_DELMARKED ((ULONG) 0x00000008)
- /* Bits for remote message status */
- #define MSGSTATUS_REMOTE_DOWNLOAD ((ULONG) 0x00001000)
- #define MSGSTATUS_REMOTE_DELETE ((ULONG) 0x00002000)
- /* SaveContentsSort */
- #define RECURSIVE_SORT ((ULONG) 0x00000002)
- /* PR_STATUS property */
- #define FLDSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
- #define FLDSTATUS_TAGGED ((ULONG) 0x00000002)
- #define FLDSTATUS_HIDDEN ((ULONG) 0x00000004)
- #define FLDSTATUS_DELMARKED ((ULONG) 0x00000008)
- #define MAPI_IMAPIFOLDER_METHODS(IPURE)
- MAPIMETHOD(CreateMessage)
- (THIS_ LPCIID lpInterface,
- ULONG ulFlags,
- LPMESSAGE FAR * lppMessage) IPURE;
- MAPIMETHOD(CopyMessages)
- (THIS_ LPENTRYLIST lpMsgList,
- LPCIID lpInterface,
- LPVOID lpDestFolder,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(DeleteMessages)
- (THIS_ LPENTRYLIST lpMsgList,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(CreateFolder)
- (THIS_ ULONG ulFolderType,
- LPTSTR lpszFolderName,
- LPTSTR lpszFolderComment,
- LPCIID lpInterface,
- ULONG ulFlags,
- LPMAPIFOLDER FAR * lppFolder) IPURE;
- MAPIMETHOD(CopyFolder)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- LPCIID lpInterface,
- LPVOID lpDestFolder,
- LPTSTR lpszNewFolderName,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(DeleteFolder)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(SetReadFlags)
- (THIS_ LPENTRYLIST lpMsgList,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(GetMessageStatus)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulFlags,
- ULONG FAR * lpulMessageStatus) IPURE;
- MAPIMETHOD(SetMessageStatus)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulNewStatus,
- ULONG ulNewStatusMask,
- ULONG FAR * lpulOldStatus) IPURE;
- MAPIMETHOD(SaveContentsSort)
- (THIS_ LPSSortOrderSet lpSortCriteria,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(EmptyFolder)
- (THIS_ ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPIFolder
- DECLARE_MAPI_INTERFACE_(IMAPIFolder, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IMAPIFOLDER_METHODS(PURE)
- };
- /* IMsgStore Interface ----------------------------------------------------- */
- /* PR_STORE_SUPPORT_MASK bits */
- #define STORE_ENTRYID_UNIQUE ((ULONG) 0x00000001)
- #define STORE_READONLY ((ULONG) 0x00000002)
- #define STORE_SEARCH_OK ((ULONG) 0x00000004)
- #define STORE_MODIFY_OK ((ULONG) 0x00000008)
- #define STORE_CREATE_OK ((ULONG) 0x00000010)
- #define STORE_ATTACH_OK ((ULONG) 0x00000020)
- #define STORE_OLE_OK ((ULONG) 0x00000040)
- #define STORE_SUBMIT_OK ((ULONG) 0x00000080)
- #define STORE_NOTIFY_OK ((ULONG) 0x00000100)
- #define STORE_MV_PROPS_OK ((ULONG) 0x00000200)
- #define STORE_CATEGORIZE_OK ((ULONG) 0x00000400)
- #define STORE_RTF_OK ((ULONG) 0x00000800)
- #define STORE_RESTRICTION_OK ((ULONG) 0x00001000)
- #define STORE_SORT_OK ((ULONG) 0x00002000)
- #define STORE_PUBLIC_FOLDERS ((ULONG) 0x00004000)
- #define STORE_UNCOMPRESSED_RTF ((ULONG) 0x00008000)
- /* PR_STORE_STATE bits, try not to collide with PR_STORE_SUPPORT_MASK */
- #define STORE_HAS_SEARCHES ((ULONG) 0x01000000)
- /* OpenEntry() */
- /****** MAPI_MODIFY ((ULONG) 0x00000001) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
- /* SetReceiveFolder() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetReceiveFolder() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetReceiveFolderTable() */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* StoreLogoff() */
- #define LOGOFF_NO_WAIT ((ULONG) 0x00000001)
- #define LOGOFF_ORDERLY ((ULONG) 0x00000002)
- #define LOGOFF_PURGE ((ULONG) 0x00000004)
- #define LOGOFF_ABORT ((ULONG) 0x00000008)
- #define LOGOFF_QUIET ((ULONG) 0x00000010)
- #define LOGOFF_COMPLETE ((ULONG) 0x00010000)
- #define LOGOFF_INBOUND ((ULONG) 0x00020000)
- #define LOGOFF_OUTBOUND ((ULONG) 0x00040000)
- #define LOGOFF_OUTBOUND_QUEUE ((ULONG) 0x00080000)
- /* SetLockState() */
- #define MSG_LOCKED ((ULONG) 0x00000001)
- #define MSG_UNLOCKED ((ULONG) 0x00000000)
- /* Flag bits for PR_VALID_FOLDER_MASK */
- #define FOLDER_IPM_SUBTREE_VALID ((ULONG) 0x00000001)
- #define FOLDER_IPM_INBOX_VALID ((ULONG) 0x00000002)
- #define FOLDER_IPM_OUTBOX_VALID ((ULONG) 0x00000004)
- #define FOLDER_IPM_WASTEBASKET_VALID ((ULONG) 0x00000008)
- #define FOLDER_IPM_SENTMAIL_VALID ((ULONG) 0x00000010)
- #define FOLDER_VIEWS_VALID ((ULONG) 0x00000020)
- #define FOLDER_COMMON_VIEWS_VALID ((ULONG) 0x00000040)
- #define FOLDER_FINDER_VALID ((ULONG) 0x00000080)
- #define MAPI_IMSGSTORE_METHODS(IPURE)
- MAPIMETHOD(Advise)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulEventMask,
- LPMAPIADVISESINK lpAdviseSink,
- ULONG FAR * lpulConnection) IPURE;
- MAPIMETHOD(Unadvise)
- (THIS_ ULONG ulConnection) IPURE;
- MAPIMETHOD(CompareEntryIDs)
- (THIS_ ULONG cbEntryID1,
- LPENTRYID lpEntryID1,
- ULONG cbEntryID2,
- LPENTRYID lpEntryID2,
- ULONG ulFlags,
- ULONG FAR * lpulResult) IPURE;
- MAPIMETHOD(OpenEntry)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- LPCIID lpInterface,
- ULONG ulFlags,
- ULONG FAR * lpulObjType,
- LPUNKNOWN FAR * lppUnk) IPURE;
- MAPIMETHOD(SetReceiveFolder)
- (THIS_ LPTSTR lpszMessageClass,
- ULONG ulFlags,
- ULONG cbEntryID,
- LPENTRYID lpEntryID) IPURE;
- MAPIMETHOD(GetReceiveFolder)
- (THIS_ LPTSTR lpszMessageClass,
- ULONG ulFlags,
- ULONG FAR * lpcbEntryID,
- LPENTRYID FAR * lppEntryID,
- LPTSTR FAR * lppszExplicitClass) IPURE;
- MAPIMETHOD(GetReceiveFolderTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(StoreLogoff)
- (THIS_ ULONG FAR * lpulFlags) IPURE;
- MAPIMETHOD(AbortSubmit)
- (THIS_ ULONG cbEntryID,
- LPENTRYID lpEntryID,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(GetOutgoingQueue)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(SetLockState)
- (THIS_ LPMESSAGE lpMessage,
- ULONG ulLockState) IPURE;
- MAPIMETHOD(FinishedMsg)
- (THIS_ ULONG ulFlags,
- ULONG cbEntryID,
- LPENTRYID lpEntryID) IPURE;
- MAPIMETHOD(NotifyNewMail)
- (THIS_ LPNOTIFICATION lpNotification) IPURE;
- #undef INTERFACE
- #define INTERFACE IMsgStore
- DECLARE_MAPI_INTERFACE_(IMsgStore, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMSGSTORE_METHODS(PURE)
- };
- /* IMessage Interface ------------------------------------------------------ */
- /* SubmitMessage */
- #define FORCE_SUBMIT ((ULONG) 0x00000001)
- /* Flags defined in PR_MESSAGE_FLAGS */
- #define MSGFLAG_READ ((ULONG) 0x00000001)
- #define MSGFLAG_UNMODIFIED ((ULONG) 0x00000002)
- #define MSGFLAG_SUBMIT ((ULONG) 0x00000004)
- #define MSGFLAG_UNSENT ((ULONG) 0x00000008)
- #define MSGFLAG_HASATTACH ((ULONG) 0x00000010)
- #define MSGFLAG_FROMME ((ULONG) 0x00000020)
- #define MSGFLAG_ASSOCIATED ((ULONG) 0x00000040)
- #define MSGFLAG_RESEND ((ULONG) 0x00000080)
- #define MSGFLAG_RN_PENDING ((ULONG) 0x00000100)
- #define MSGFLAG_NRN_PENDING ((ULONG) 0x00000200)
- /* Flags defined in PR_SUBMIT_FLAGS */
- #define SUBMITFLAG_LOCKED ((ULONG) 0x00000001)
- #define SUBMITFLAG_PREPROCESS ((ULONG) 0x00000002)
- /* GetAttachmentTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetRecipientTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* ModifyRecipients */
- /* ((ULONG) 0x00000001 is not a valid flag on ModifyRecipients. */
- #define MODRECIP_ADD ((ULONG) 0x00000002)
- #define MODRECIP_MODIFY ((ULONG) 0x00000004)
- #define MODRECIP_REMOVE ((ULONG) 0x00000008)
- /* SetReadFlag */
- #define SUPPRESS_RECEIPT ((ULONG) 0x00000001)
- #define CLEAR_READ_FLAG ((ULONG) 0x00000004)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- #define GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010)
- #define CLEAR_RN_PENDING ((ULONG) 0x00000020)
- #define CLEAR_NRN_PENDING ((ULONG) 0x00000040)
- /* DeleteAttach */
- #define ATTACH_DIALOG ((ULONG) 0x00000001)
- /* PR_SECURITY values */
- #define SECURITY_SIGNED ((ULONG) 0x00000001)
- #define SECURITY_ENCRYPTED ((ULONG) 0x00000002)
- /* PR_PRIORITY values */
- #define PRIO_URGENT ((long) 1)
- #define PRIO_NORMAL ((long) 0)
- #define PRIO_NONURGENT ((long) -1)
- /* PR_SENSITIVITY values */
- #define SENSITIVITY_NONE ((ULONG) 0x00000000)
- #define SENSITIVITY_PERSONAL ((ULONG) 0x00000001)
- #define SENSITIVITY_PRIVATE ((ULONG) 0x00000002)
- #define SENSITIVITY_COMPANY_CONFIDENTIAL ((ULONG) 0x00000003)
- /* PR_IMPORTANCE values */
- #define IMPORTANCE_LOW ((long) 0)
- #define IMPORTANCE_NORMAL ((long) 1)
- #define IMPORTANCE_HIGH ((long) 2)
- #define MAPI_IMESSAGE_METHODS(IPURE)
- MAPIMETHOD(GetAttachmentTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(OpenAttach)
- (THIS_ ULONG ulAttachmentNum,
- LPCIID lpInterface,
- ULONG ulFlags,
- LPATTACH FAR * lppAttach) IPURE;
- MAPIMETHOD(CreateAttach)
- (THIS_ LPCIID lpInterface,
- ULONG ulFlags,
- ULONG FAR * lpulAttachmentNum,
- LPATTACH FAR * lppAttach) IPURE;
- MAPIMETHOD(DeleteAttach)
- (THIS_ ULONG ulAttachmentNum,
- ULONG ulUIParam,
- LPMAPIPROGRESS lpProgress,
- ULONG ulFlags) IPURE;
- MAPIMETHOD(GetRecipientTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(ModifyRecipients)
- (THIS_ ULONG ulFlags,
- LPADRLIST lpMods) IPURE;
- MAPIMETHOD(SubmitMessage)
- (THIS_ ULONG ulFlags) IPURE;
- MAPIMETHOD(SetReadFlag)
- (THIS_ ULONG ulFlags) IPURE;
- #undef INTERFACE
- #define INTERFACE IMessage
- DECLARE_MAPI_INTERFACE_(IMessage, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMESSAGE_METHODS(PURE)
- };
- /* IAttach Interface ------------------------------------------------------- */
- /* IAttach attachment methods: PR_ATTACH_METHOD values */
- #define NO_ATTACHMENT ((ULONG) 0x00000000)
- #define ATTACH_BY_VALUE ((ULONG) 0x00000001)
- #define ATTACH_BY_REFERENCE ((ULONG) 0x00000002)
- #define ATTACH_BY_REF_RESOLVE ((ULONG) 0x00000003)
- #define ATTACH_BY_REF_ONLY ((ULONG) 0x00000004)
- #define ATTACH_EMBEDDED_MSG ((ULONG) 0x00000005)
- #define ATTACH_OLE ((ULONG) 0x00000006)
- #define MAPI_IATTACH_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IAttach
- DECLARE_MAPI_INTERFACE_(IAttach, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IATTACH_METHODS(PURE)
- };
- /* --------------------------------- */
- /* Address Book interface definition */
- /* ADRPARM ulFlags - top 4 bits used for versioning */
- #define GET_ADRPARM_VERSION(ulFlags) (((ULONG)ulFlags) & 0xF0000000)
- #define SET_ADRPARM_VERSION(ulFlags, ulVersion) (((ULONG)ulVersion) | (((ULONG)ulFlags) & 0x0FFFFFFF))
- /* Current versions of ADRPARM */
- #define ADRPARM_HELP_CTX ((ULONG) 0x00000000)
- /* ulFlags - bit fields */
- #define DIALOG_MODAL ((ULONG) 0x00000001)
- #define DIALOG_SDI ((ULONG) 0x00000002)
- #define DIALOG_OPTIONS ((ULONG) 0x00000004)
- #define ADDRESS_ONE ((ULONG) 0x00000008)
- #define AB_SELECTONLY ((ULONG) 0x00000010)
- #define AB_RESOLVE ((ULONG) 0x00000020)
- /* --------------------------------- */
- /* PR_DISPLAY_TYPEs */
- /*
- * These standard display types are
- * by default handled by MAPI.
- * They have default icons associated
- * with them.
- */
- /* For address book contents tables */
- #define DT_MAILUSER ((ULONG) 0x00000000)
- #define DT_DISTLIST ((ULONG) 0x00000001)
- #define DT_FORUM ((ULONG) 0x00000002)
- #define DT_AGENT ((ULONG) 0x00000003)
- #define DT_ORGANIZATION ((ULONG) 0x00000004)
- #define DT_PRIVATE_DISTLIST ((ULONG) 0x00000005)
- #define DT_REMOTE_MAILUSER ((ULONG) 0x00000006)
- /* For address book hierarchy tables */
- #define DT_MODIFIABLE ((ULONG) 0x00010000)
- #define DT_GLOBAL ((ULONG) 0x00020000)
- #define DT_LOCAL ((ULONG) 0x00030000)
- #define DT_WAN ((ULONG) 0x00040000)
- #define DT_NOT_SPECIFIC ((ULONG) 0x00050000)
- /* For folder hierarchy tables */
- #define DT_FOLDER ((ULONG) 0x01000000)
- #define DT_FOLDER_LINK ((ULONG) 0x02000000)
- #define DT_FOLDER_SPECIAL ((ULONG) 0x04000000)
- /* Accelerator callback for DIALOG_SDI form of AB UI */
- typedef BOOL (STDMETHODCALLTYPE ACCELERATEABSDI)(ULONG ulUIParam,
- LPVOID lpvmsg);
- typedef ACCELERATEABSDI FAR * LPFNABSDI;
- /* Callback to application telling it that the DIALOG_SDI form of the */
- /* AB UI has been dismissed. This is so that the above LPFNABSDI */
- /* function doesn't keep being called. */
- typedef void (STDMETHODCALLTYPE DISMISSMODELESS)(ULONG ulUIParam,
- LPVOID lpvContext);
- typedef DISMISSMODELESS FAR * LPFNDISMISS;
- /*
- * Prototype for the client function hooked to an optional button on
- * the address book dialog
- */
- typedef SCODE (STDMETHODCALLTYPE FAR * LPFNBUTTON)(
- ULONG ulUIParam,
- LPVOID lpvContext,
- ULONG cbEntryID,
- LPENTRYID lpSelection,
- ULONG ulFlags
- );
- /* Parameters for the address book dialog */
- typedef struct _ADRPARM
- {
- ULONG cbABContEntryID;
- LPENTRYID lpABContEntryID;
- ULONG ulFlags;
- LPVOID lpReserved;
- ULONG ulHelpContext;
- LPTSTR lpszHelpFileName;
- LPFNABSDI lpfnABSDI;
- LPFNDISMISS lpfnDismiss;
- LPVOID lpvDismissContext;
- LPTSTR lpszCaption;
- LPTSTR lpszNewEntryTitle;
- LPTSTR lpszDestWellsTitle;
- ULONG cDestFields;
- ULONG nDestFieldFocus;
- LPTSTR FAR * lppszDestTitles;
- ULONG FAR * lpulDestComps;
- LPSRestriction lpContRestriction;
- LPSRestriction lpHierRestriction;
- } ADRPARM, FAR * LPADRPARM;
- /* ------------ */
- /* Random flags */
- /* Flag for deferred error */
- #define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008)
- /* Flag for creating and using Folder Associated Information Messages */
- #define MAPI_ASSOCIATED ((ULONG) 0x00000040)
- /* Flags for OpenMessageStore() */
- #define MDB_NO_DIALOG ((ULONG) 0x00000001)
- #define MDB_WRITE ((ULONG) 0x00000004)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) above */
- /****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
- #define MDB_TEMPORARY ((ULONG) 0x00000020)
- #define MDB_NO_MAIL ((ULONG) 0x00000080)
- /* Flags for OpenAddressBook */
- #define AB_NO_DIALOG ((ULONG) 0x00000001)
- /* IMAPIControl Interface -------------------------------------------------- */
- /* Interface used in controls (particularly the button) defined by */
- /* Display Tables. */
- /* Flags for GetState */
- #define MAPI_ENABLED ((ULONG) 0x00000000)
- #define MAPI_DISABLED ((ULONG) 0x00000001)
- #define MAPI_IMAPICONTROL_METHODS(IPURE)
- MAPIMETHOD(GetLastError)
- (THIS_ HRESULT hResult,
- ULONG ulFlags,
- LPMAPIERROR FAR * lppMAPIError) IPURE;
- MAPIMETHOD(Activate)
- (THIS_ ULONG ulFlags,
- ULONG ulUIParam) IPURE;
- MAPIMETHOD(GetState)
- (THIS_ ULONG ulFlags,
- ULONG FAR * lpulState) IPURE;
- #undef INTERFACE
- #define INTERFACE IMAPIControl
- DECLARE_MAPI_INTERFACE_(IMAPIControl, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPICONTROL_METHODS(PURE)
- };
- DECLARE_MAPI_INTERFACE_PTR(IMAPIControl, LPMAPICONTROL);
- /* Display Tables ---------------------------------------------------------- */
- /* Flags used in display tables - that is, PR_CONTROL_FLAGS */
- #define DT_MULTILINE ((ULONG) 0x00000001)
- #define DT_EDITABLE ((ULONG) 0x00000002)
- #define DT_REQUIRED ((ULONG) 0x00000004)
- #define DT_SET_IMMEDIATE ((ULONG) 0x00000008)
- #define DT_PASSWORD_EDIT ((ULONG) 0x00000010)
- #define DT_ACCEPT_DBCS ((ULONG) 0x00000020)
- #define DT_SET_SELECTION ((ULONG) 0x00000040)
- /* Display Table structures */
- #define DTCT_LABEL ((ULONG) 0x00000000)
- #define DTCT_EDIT ((ULONG) 0x00000001)
- #define DTCT_LBX ((ULONG) 0x00000002)
- #define DTCT_COMBOBOX ((ULONG) 0x00000003)
- #define DTCT_DDLBX ((ULONG) 0x00000004)
- #define DTCT_CHECKBOX ((ULONG) 0x00000005)
- #define DTCT_GROUPBOX ((ULONG) 0x00000006)
- #define DTCT_BUTTON ((ULONG) 0x00000007)
- #define DTCT_PAGE ((ULONG) 0x00000008)
- #define DTCT_RADIOBUTTON ((ULONG) 0x00000009)
- #define DTCT_MVLISTBOX ((ULONG) 0x0000000B)
- #define DTCT_MVDDLBX ((ULONG) 0x0000000C)
- /* Labels */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLLABEL
- {
- ULONG ulbLpszLabelName;
- ULONG ulFlags;
- } DTBLLABEL, FAR * LPDTBLLABEL;
- #define SizedDtblLabel(n,u)
- struct _DTBLLABEL_ ## u
- {
- DTBLLABEL dtbllabel;
- TCHAR lpszLabelName[n];
- } u
- /* Simple Text Edits */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLEDIT
- {
- ULONG ulbLpszCharsAllowed;
- ULONG ulFlags;
- ULONG ulNumCharsAllowed;
- ULONG ulPropTag;
- } DTBLEDIT, FAR * LPDTBLEDIT;
- #define SizedDtblEdit(n,u)
- struct _DTBLEDIT_ ## u
- {
- DTBLEDIT dtbledit;
- TCHAR lpszCharsAllowed[n];
- } u
- /* List Box */
- /* Valid ulFlags:
- */
- #define MAPI_NO_HBAR ((ULONG) 0x00000001)
- #define MAPI_NO_VBAR ((ULONG) 0x00000002)
- typedef struct _DTBLLBX
- {
- ULONG ulFlags;
- ULONG ulPRSetProperty;
- ULONG ulPRTableName;
- } DTBLLBX, FAR * LPDTBLLBX;
- /* Combo Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLCOMBOBOX
- {
- ULONG ulbLpszCharsAllowed;
- ULONG ulFlags;
- ULONG ulNumCharsAllowed;
- ULONG ulPRPropertyName;
- ULONG ulPRTableName;
- } DTBLCOMBOBOX, FAR * LPDTBLCOMBOBOX;
- #define SizedDtblComboBox(n,u)
- struct _DTBLCOMBOBOX_ ## u
- {
- DTBLCOMBOBOX dtblcombobox;
- TCHAR lpszCharsAllowed[n];
- } u
- /* Drop Down */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLDDLBX
- {
- ULONG ulFlags;
- ULONG ulPRDisplayProperty;
- ULONG ulPRSetProperty;
- ULONG ulPRTableName;
- } DTBLDDLBX, FAR * LPDTBLDDLBX;
- /* Check Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLCHECKBOX
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulPRPropertyName;
- } DTBLCHECKBOX, FAR * LPDTBLCHECKBOX;
- #define SizedDtblCheckBox(n,u)
- struct _DTBLCHECKBOX_ ## u
- {
- DTBLCHECKBOX dtblcheckbox;
- TCHAR lpszLabel[n];
- } u
- /* Group Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLGROUPBOX
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- } DTBLGROUPBOX, FAR * LPDTBLGROUPBOX;
- #define SizedDtblGroupBox(n,u)
- struct _DTBLGROUPBOX_ ## u
- {
- DTBLGROUPBOX dtblgroupbox;
- TCHAR lpszLabel[n];
- } u
- /* Button control */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLBUTTON
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulPRControl;
- } DTBLBUTTON, FAR * LPDTBLBUTTON;
- #define SizedDtblButton(n,u)
- struct _DTBLBUTTON_ ## u
- {
- DTBLBUTTON dtblbutton;
- TCHAR lpszLabel[n];
- } u
- /* Pages */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLPAGE
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulbLpszComponent;
- ULONG ulContext;
- } DTBLPAGE, FAR * LPDTBLPAGE;
- #define SizedDtblPage(n,n1,u)
- struct _DTBLPAGE_ ## u
- {
- DTBLPAGE dtblpage;
- TCHAR lpszLabel[n];
- TCHAR lpszComponent[n1];
- } u
- /* Radio button */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLRADIOBUTTON
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulcButtons;
- ULONG ulPropTag;
- long lReturnValue;
- } DTBLRADIOBUTTON, FAR * LPDTBLRADIOBUTTON;
- #define SizedDtblRadioButton(n,u)
- struct _DTBLRADIOBUTTON_ ## u
- {
- DTBLRADIOBUTTON dtblradiobutton;
- TCHAR lpszLabel[n];
- } u
- /* MultiValued listbox */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLMVLISTBOX
- {
- ULONG ulFlags;
- ULONG ulMVPropTag;
- } DTBLMVLISTBOX, FAR * LPDTBLMVLISTBOX;
- /* MultiValued dropdown */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLMVDDLBX
- {
- ULONG ulFlags;
- ULONG ulMVPropTag;
- } DTBLMVDDLBX, FAR * LPDTBLMVDDLBX;
- /* IProviderAdmin Interface ---------------------------------------------- */
- /* Flags for ConfigureMsgService */
- #define UI_SERVICE 0x00000002
- #define SERVICE_UI_ALWAYS 0x00000002 /* Duplicate UI_SERVICE for consistency and compatibility */
- #define SERVICE_UI_ALLOWED 0x00000010
- #define UI_CURRENT_PROVIDER_FIRST 0x00000004
- /* MSG_SERVICE_UI_READ_ONLY 0x00000008 - in MAPISPI.H */
- /* GetProviderTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* Values for PR_RESOURCE_FLAGS in message service table */
- #define MAPI_IPROVIDERADMIN_METHODS(IPURE)
- MAPIMETHOD(GetLastError)
- (THIS_ HRESULT hResult,
- ULONG ulFlags,
- LPMAPIERROR FAR * lppMAPIError) IPURE;
- MAPIMETHOD(GetProviderTable)
- (THIS_ ULONG ulFlags,
- LPMAPITABLE FAR * lppTable) IPURE;
- MAPIMETHOD(CreateProvider)
- (THIS_ LPTSTR lpszProvider,
- ULONG cValues,
- LPSPropValue lpProps,
- ULONG ulUIParam,
- ULONG ulFlags,
- MAPIUID FAR * lpUID) IPURE;
- MAPIMETHOD(DeleteProvider)
- (THIS_ LPMAPIUID lpUID) IPURE;
- MAPIMETHOD(OpenProfileSection)
- (THIS_ LPMAPIUID lpUID,
- LPCIID lpInterface,
- ULONG ulFlags,
- LPPROFSECT FAR * lppProfSect) IPURE;
- #undef INTERFACE
- #define INTERFACE IProviderAdmin
- DECLARE_MAPI_INTERFACE_(IProviderAdmin, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IPROVIDERADMIN_METHODS(PURE)
- };
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif /* MAPIDEFS_H */