home *** CD-ROM | disk | FTP | other *** search
- /*
- * M A P I D E F S . H
- *
- * Definitions used by MAPI clients and service providers.
- *
- * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
- */
-
- #ifndef MAPIDEFS_H
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define MAPIDEFS_H
-
- #if defined (WIN32) && !defined (_WIN32)
- #define _WIN32
- #endif
-
- #if defined (_WIN32) /* Must include WINDOWS.H on Win32 */
- #ifndef _WINDOWS_
- #define INC_OLE2 /* Get the OLE2 stuff */
- #define INC_RPC /* harmless on Windows NT; Windows 95 needs it */
- #define _INC_OLE /* Windows 95 will include OLE1 without this */
- #include <windows.h>
- #endif
-
- #ifndef _OLEERROR_H_
- #include <winerror.h>
- #endif
- #ifndef _OBJBASE_H_
- #include <objbase.h>
- #endif
- #endif
-
- #if defined (WIN16) || defined (DOS) || defined (DOS16)
- #ifndef _COMPOBJ_H_
- #include <compobj.h>
- #endif
- #endif
-
- #ifndef _INC_STDDEF
- #include <stddef.h>
- #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 */
-
- #if !defined (MIDL_PASS) /* MIDL doesn't want to see these */
-
- #ifdef __BORLANDC__
- typedef wchar_t WCHAR;
- #else
- typedef WORD WCHAR;
- #endif
-
- #ifdef UNICODE
- typedef WCHAR TCHAR;
- #else
- typedef char TCHAR;
- #endif
-
- typedef WCHAR FAR * LPWSTR;
- typedef const WCHAR FAR * LPCWSTR;
- typedef TCHAR FAR * LPTSTR;
- typedef const TCHAR FAR * LPCTSTR;
- typedef BYTE FAR * LPBYTE;
- #endif /* defined MIDL_PASS */
-
- typedef ULONG FAR * LPULONG;
-
- #ifndef __LHANDLE
- #define __LHANDLE
- typedef unsigned long 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
-
- #pragma option pop /*P_O_Pop*/
- #endif /* MAPIDEFS_H */
-