| /* |
| * Copyright (C) 1998 Justin Bradford |
| * Copyright (c) 2009 Owen Rudge for CodeWeavers |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #ifndef MAPIDEFS_H |
| #define MAPIDEFS_H |
| |
| #include <windows.h> |
| #include <winerror.h> |
| #include <objbase.h> |
| #include <stddef.h> |
| |
| /* Some types from other headers */ |
| #ifndef __LHANDLE |
| #define __LHANDLE |
| typedef ULONG_PTR LHANDLE, *LPLHANDLE; |
| #endif |
| |
| #ifndef _tagCY_DEFINED |
| #define _tagCY_DEFINED |
| typedef union tagCY |
| { |
| struct |
| { |
| #ifdef WORDS_BIGENDIAN |
| LONG Hi; |
| ULONG Lo; |
| #else |
| ULONG Lo; |
| LONG Hi; |
| #endif |
| } DUMMYSTRUCTNAME; |
| LONGLONG int64; |
| } CY; |
| typedef CY CURRENCY; |
| #endif /* _tagCY_DEFINED */ |
| |
| |
| #ifndef _FILETIME_ |
| #define _FILETIME_ |
| typedef struct _FILETIME |
| { |
| #ifdef WORDS_BIGENDIAN |
| DWORD dwHighDateTime; |
| DWORD dwLowDateTime; |
| #else |
| DWORD dwLowDateTime; |
| DWORD dwHighDateTime; |
| #endif |
| } FILETIME, *PFILETIME, *LPFILETIME; |
| #endif |
| |
| /* Memory allocation routines */ |
| typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG,LPVOID*); |
| typedef SCODE (WINAPI ALLOCATEMORE)(ULONG,LPVOID,LPVOID*); |
| typedef ULONG (WINAPI FREEBUFFER)(LPVOID); |
| |
| typedef ALLOCATEBUFFER *LPALLOCATEBUFFER; |
| typedef ALLOCATEMORE *LPALLOCATEMORE; |
| typedef FREEBUFFER *LPFREEBUFFER; |
| |
| /* MAPI exposed interfaces */ |
| typedef const IID *LPCIID; |
| |
| typedef struct IAddrBook IAddrBook; |
| typedef IAddrBook *LPADRBOOK; |
| typedef struct IABContainer IABContainer; |
| typedef IABContainer *LPABCONT; |
| typedef struct IAttach *LPATTACH; |
| typedef struct IDistList IDistList; |
| typedef IDistList *LPDISTLIST; |
| typedef struct IMailUser IMailUser; |
| typedef IMailUser *LPMAILUSER; |
| typedef struct IMAPIAdviseSink *LPMAPIADVISESINK; |
| typedef struct IMAPIContainer *LPMAPICONTAINER; |
| typedef struct IMAPIFolder *LPMAPIFOLDER; |
| typedef struct IMAPIProgress IMAPIProgress; |
| typedef IMAPIProgress *LPMAPIPROGRESS; |
| typedef struct IMAPIStatus IMAPIStatus; |
| typedef IMAPIStatus *LPMAPISTATUS; |
| typedef struct IMessage *LPMESSAGE; |
| typedef struct IProfSect IProfSect; |
| typedef IProfSect *LPPROFSECT; |
| typedef struct IProviderAdmin IProviderAdmin; |
| typedef IProviderAdmin *LPPROVIDERADMIN; |
| |
| #ifndef MAPI_DIM |
| # define MAPI_DIM 1 /* Default to one dimension for variable length arrays */ |
| #endif |
| |
| /* Flags for abFlags[0] */ |
| #define MAPI_NOTRESERVED 0x08 |
| #define MAPI_NOW 0x10 |
| #define MAPI_THISSESSION 0x20 |
| #define MAPI_NOTRECIP 0x40 |
| #define MAPI_SHORTTERM 0x80 |
| |
| /* Flags for abFlags[1] */ |
| #define MAPI_COMPOUND 0x80 |
| |
| typedef struct _ENTRYID |
| { |
| BYTE abFlags[4]; |
| BYTE ab[MAPI_DIM]; |
| } ENTRYID, *LPENTRYID; |
| |
| /* MAPI GUID's */ |
| typedef struct _MAPIUID |
| { |
| BYTE ab[sizeof(GUID)]; |
| } MAPIUID, *LPMAPIUID; |
| |
| #define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID))) |
| |
| #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 types */ |
| #define MAPI_STORE 1U |
| #define MAPI_ADDRBOOK 2U |
| #define MAPI_FOLDER 3U |
| #define MAPI_ABCONT 4U |
| #define MAPI_MESSAGE 5U |
| #define MAPI_MAILUSER 6U |
| #define MAPI_ATTACH 7U |
| #define MAPI_DISTLIST 8U |
| #define MAPI_PROFSECT 9U |
| #define MAPI_STATUS 10U |
| #define MAPI_SESSION 11U |
| #define MAPI_FORMINFO 12U |
| |
| /* Flags for various calls */ |
| #define MAPI_MODIFY 0x00000001U /* Object can be modified */ |
| #define MAPI_CREATE 0x00000002U /* Object can be created */ |
| #define MAPI_ACCESS_MODIFY MAPI_MODIFY /* Want write access */ |
| #define MAPI_ACCESS_READ 0x00000002U /* Want read access */ |
| #define MAPI_ACCESS_DELETE 0x00000004U /* Want delete access */ |
| #define MAPI_ACCESS_CREATE_HIERARCHY 0x00000008U |
| #define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U |
| #define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U |
| #define MAPI_USE_DEFAULT 0x00000040U |
| #define MAPI_UNICODE 0x80000000U /* Strings in this call are Unicode */ |
| |
| #if defined (UNICODE) || defined (__WINESRC__) |
| #define fMapiUnicode MAPI_UNICODE |
| #else |
| #define fMapiUnicode 0U |
| #endif |
| |
| /* IMAPISession::OpenMessageStore() flags */ |
| #define MDB_NO_DIALOG 0x00000001 |
| |
| /* Types of message receivers */ |
| #ifndef MAPI_ORIG |
| #define MAPI_ORIG 0 /* The original author */ |
| #define MAPI_TO 1 /* The primary message receiver */ |
| #define MAPI_CC 2 /* A carbon copy receiver */ |
| #define MAPI_BCC 3 /* A blind carbon copy receiver */ |
| #define MAPI_P1 0x10000000 /* A message resend */ |
| #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */ |
| #endif |
| |
| #ifndef cchProfileNameMax |
| #define cchProfileNameMax 64 /* Maximum length of a profile name */ |
| #define cchProfilePassMax 64 /* Maximum length of a profile password */ |
| #endif |
| |
| /* Properties: The are the contents of cells in MAPI tables, as well as the |
| * values returned when object properties are queried. |
| */ |
| |
| /* Property types */ |
| #define PT_UNSPECIFIED 0U |
| #define PT_NULL 1U |
| #define PT_I2 2U |
| #define PT_SHORT PT_I2 |
| #define PT_LONG 3U |
| #define PT_I4 PT_LONG |
| #define PT_R4 4U |
| #define PT_FLOAT PT_R4 |
| #define PT_DOUBLE 5U |
| #define PT_R8 PT_DOUBLE |
| #define PT_CURRENCY 6U |
| #define PT_APPTIME 7U |
| #define PT_ERROR 10U |
| #define PT_BOOLEAN 11U |
| #define PT_OBJECT 13U |
| #define PT_I8 20U |
| #define PT_LONGLONG PT_I8 |
| #define PT_STRING8 30U |
| #define PT_UNICODE 31U |
| #define PT_SYSTIME 64U |
| #define PT_CLSID 72U |
| #define PT_BINARY 258U |
| |
| #define MV_FLAG 0x1000 /* This property type is multi-valued (an array) */ |
| #define MV_INSTANCE 0x2000 |
| #define MVI_FLAG (MV_FLAG|MV_INSTANCE) |
| #define MVI_PROP(t) ((t)|MVI_FLAG) |
| |
| #ifndef WINE_NO_UNICODE_MACROS |
| # 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 |
| #endif |
| |
| #define PROP_TYPE_MASK 0xFFFFU |
| #define PROP_TYPE(t) ((t) & PROP_TYPE_MASK) |
| #define PROP_ID(t) ((t) >> 16) |
| #define PROP_TAG(t,id) (((id) << 16) | t) |
| #define PROP_ID_NULL 0 |
| #define PROP_ID_INVALID 0xFFFF |
| #define PR_NULL PROP_TAG(PT_NULL, PROP_ID_NULL) |
| |
| #define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ) |
| |
| /* Multi-valued property types */ |
| #define PT_MV_I2 (MV_FLAG|PT_I2) |
| #define PT_MV_SHORT PT_MV_I2 |
| #define PT_MV_LONG (MV_FLAG|PT_LONG) |
| #define PT_MV_I4 PT_MV_LONG |
| #define PT_MV_R4 (MV_FLAG|PT_R4) |
| #define PT_MV_FLOAT PT_MV_R4 |
| #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE) |
| #define PT_MV_R8 PT_MV_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) |
| #define PT_MV_LONGLONG PT_MV_I8 |
| |
| |
| /* The property tag structure. This describes a list of columns */ |
| typedef struct _SPropTagArray |
| { |
| ULONG cValues; /* Number of elements in aulPropTag */ |
| ULONG aulPropTag[MAPI_DIM]; /* Property tags */ |
| } SPropTagArray, *LPSPropTagArray; |
| |
| #define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG)) |
| #define CbSPropTagArray(p) CbNewSPropTagArray((p)->cValues) |
| #define SizedSPropTagArray(n,id) \ |
| struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id |
| |
| /* Multi-valued PT_APPTIME property value */ |
| typedef struct _SAppTimeArray |
| { |
| ULONG cValues; /* Number of doubles in lpat */ |
| double *lpat; /* Pointer to double array of length cValues */ |
| } SAppTimeArray; |
| |
| /* PT_BINARY property value */ |
| typedef struct _SBinary |
| { |
| ULONG cb; /* Number of bytes in lpb */ |
| LPBYTE lpb; /* Pointer to byte array of length cb */ |
| } SBinary, *LPSBinary; |
| |
| /* Multi-valued PT_BINARY property value */ |
| typedef struct _SBinaryArray |
| { |
| ULONG cValues; /* Number of SBinarys in lpbin */ |
| SBinary *lpbin; /* Pointer to SBinary array of length cValues */ |
| } SBinaryArray; |
| |
| typedef SBinaryArray ENTRYLIST, *LPENTRYLIST; |
| |
| /* Multi-valued PT_CY property value */ |
| typedef struct _SCurrencyArray |
| { |
| ULONG cValues; /* Number of CYs in lpcu */ |
| CY *lpcur; /* Pointer to CY array of length cValues */ |
| } SCurrencyArray; |
| |
| /* Multi-valued PT_SYSTIME property value */ |
| typedef struct _SDateTimeArray |
| { |
| ULONG cValues; /* Number of FILETIMEs in lpft */ |
| FILETIME *lpft; /* Pointer to FILETIME array of length cValues */ |
| } SDateTimeArray; |
| |
| /* Multi-valued PT_DOUBLE property value */ |
| typedef struct _SDoubleArray |
| { |
| ULONG cValues; /* Number of doubles in lpdbl */ |
| double *lpdbl; /* Pointer to double array of length cValues */ |
| } SDoubleArray; |
| |
| /* Multi-valued PT_CLSID property value */ |
| typedef struct _SGuidArray |
| { |
| ULONG cValues; /* Number of GUIDs in lpguid */ |
| GUID *lpguid; /* Pointer to GUID array of length cValues */ |
| } SGuidArray; |
| |
| /* Multi-valued PT_LONGLONG property value */ |
| typedef struct _SLargeIntegerArray |
| { |
| ULONG cValues; /* Number of long64s in lpli */ |
| LARGE_INTEGER *lpli; /* Pointer to long64 array of length cValues */ |
| } SLargeIntegerArray; |
| |
| /* Multi-valued PT_LONG property value */ |
| typedef struct _SLongArray |
| { |
| ULONG cValues; /* Number of longs in lpl */ |
| LONG *lpl; /* Pointer to long array of length cValues */ |
| } SLongArray; |
| |
| /* Multi-valued PT_STRING8 property value */ |
| typedef struct _SLPSTRArray |
| { |
| ULONG cValues; /* Number of Ascii strings in lppszA */ |
| LPSTR *lppszA; /* Pointer to Ascii string array of length cValues */ |
| } SLPSTRArray; |
| |
| /* Multi-valued PT_FLOAT property value */ |
| typedef struct _SRealArray |
| { |
| ULONG cValues; /* Number of floats in lpflt */ |
| float *lpflt; /* Pointer to float array of length cValues */ |
| } SRealArray; |
| |
| /* Multi-valued PT_SHORT property value */ |
| typedef struct _SShortArray |
| { |
| ULONG cValues; /* Number of shorts in lpb */ |
| short int *lpi; /* Pointer to short array of length cValues */ |
| } SShortArray; |
| |
| /* Multi-valued PT_UNICODE property value */ |
| typedef struct _SWStringArray |
| { |
| ULONG cValues; /* Number of Unicode strings in lppszW */ |
| LPWSTR *lppszW; /* Pointer to Unicode string array of length cValues */ |
| } SWStringArray; |
| |
| /* A property value */ |
| typedef union _PV |
| { |
| short int i; |
| LONG l; |
| ULONG ul; |
| float flt; |
| double dbl; |
| unsigned short b; |
| CY cur; |
| double at; |
| FILETIME ft; |
| LPSTR lpszA; |
| SBinary bin; |
| LPWSTR lpszW; |
| LPGUID lpguid; |
| LARGE_INTEGER li; |
| SShortArray MVi; |
| SLongArray MVl; |
| SRealArray MVflt; |
| SDoubleArray MVdbl; |
| SCurrencyArray MVcur; |
| SAppTimeArray MVat; |
| SDateTimeArray MVft; |
| SBinaryArray MVbin; |
| SLPSTRArray MVszA; |
| SWStringArray MVszW; |
| SGuidArray MVguid; |
| SLargeIntegerArray MVli; |
| SCODE err; |
| LONG x; |
| } __UPV; |
| |
| /* Property value structure. This is essentially a mini-Variant */ |
| typedef struct _SPropValue |
| { |
| ULONG ulPropTag; /* The property type */ |
| ULONG dwAlignPad; /* Alignment, treat as reserved */ |
| union _PV Value; /* The property value */ |
| } SPropValue, *LPSPropValue; |
| |
| /* Structure describing a table row (a collection of property values) */ |
| typedef struct _SRow |
| { |
| ULONG ulAdrEntryPad; /* Padding, treat as reserved */ |
| ULONG cValues; /* Count of property values in lpProbs */ |
| LPSPropValue lpProps; /* Pointer to an array of property values of length cValues */ |
| } SRow, *LPSRow; |
| |
| /* Structure describing a set of table rows */ |
| typedef struct _SRowSet |
| { |
| ULONG cRows; /* Count of rows in aRow */ |
| SRow aRow[MAPI_DIM]; /* Array of rows of length cRows */ |
| } SRowSet, *LPSRowSet; |
| |
| #define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow)) |
| #define CbSRowSet(p) CbNewSRowSet((p)->cRows) |
| #define SizedSRowSet(n,id) \ |
| struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id |
| |
| /* Structure describing a problem with a property */ |
| typedef struct _SPropProblem |
| { |
| ULONG ulIndex; /* Index of the property */ |
| ULONG ulPropTag; /* Property tag of the property */ |
| SCODE scode; /* Error code of the problem */ |
| } SPropProblem, *LPSPropProblem; |
| |
| /* A collection of property problems */ |
| typedef struct _SPropProblemArray |
| { |
| ULONG cProblem; /* Number of problems in aProblem */ |
| SPropProblem aProblem[MAPI_DIM]; /* Array of problems of length cProblem */ |
| } SPropProblemArray, *LPSPropProblemArray; |
| |
| /* FPropContainsProp flags */ |
| #define FL_FULLSTRING ((ULONG)0x00000) /* Exact string match */ |
| #define FL_SUBSTRING ((ULONG)0x00001) /* Substring match */ |
| #define FL_PREFIX ((ULONG)0x00002) /* Prefix match */ |
| #define FL_IGNORECASE ((ULONG)0x10000) /* Case insensitive */ |
| #define FL_IGNORENONSPACE ((ULONG)0x20000) /* Ignore non spacing characters */ |
| #define FL_LOOSE ((ULONG)0x40000) /* Try very hard to match */ |
| |
| |
| /* Table types returned by IMAPITable_GetStatus() */ |
| #define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */ |
| #define TBLTYPE_KEYSET 1U /* Table has a fixed number of rows, but row values may change */ |
| #define TBLTYPE_DYNAMIC 2U /* Table values and the number of rows may change */ |
| |
| /* Table status returned by IMAPITable_GetStatus() */ |
| #define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */ |
| #define TBLSTAT_QCHANGED 7U /* Table data has changed as expected */ |
| #define TBLSTAT_SORTING 9U /* Table is being asynchronously sorted */ |
| #define TBLSTAT_SORT_ERROR 10U /* An error occurred while sorting the table */ |
| #define TBLSTAT_SETTING_COLS 11U /* Table columns are being asynchronously changed */ |
| #define TBLSTAT_SETCOL_ERROR 13U /* An error occurred during column changing */ |
| #define TBLSTAT_RESTRICTING 14U /* Table rows are being asynchronously restricted */ |
| #define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */ |
| |
| /* Flags for IMAPITable operations that can be asynchronous */ |
| #define TBL_NOWAIT 1U /* Perform the operation asynchronously */ |
| #define TBL_BATCH 2U /* Perform the operation when the results are needed */ |
| #define TBL_ASYNC TBL_NOWAIT /* Synonym for TBL_NOWAIT */ |
| |
| /* Flags for IMAPITable_FindRow() */ |
| #define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */ |
| |
| /* Table bookmarks */ |
| typedef ULONG BOOKMARK; |
| |
| #define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */ |
| #define BOOKMARK_CURRENT ((BOOKMARK)1) /* The curent table row */ |
| #define BOOKMARK_END ((BOOKMARK)2) /* The last row */ |
| |
| /* Row restrictions */ |
| typedef struct _SRestriction* LPSRestriction; |
| |
| typedef struct _SAndRestriction |
| { |
| ULONG cRes; |
| LPSRestriction lpRes; |
| } SAndRestriction; |
| |
| typedef struct _SBitMaskRestriction |
| { |
| ULONG relBMR; |
| ULONG ulPropTag; |
| ULONG ulMask; |
| } SBitMaskRestriction; |
| |
| typedef struct _SCommentRestriction |
| { |
| ULONG cValues; |
| LPSRestriction lpRes; |
| LPSPropValue lpProp; |
| } SCommentRestriction; |
| |
| #define RELOP_LT 0U |
| #define RELOP_LE 1U |
| #define RELOP_GT 2U |
| #define RELOP_GE 3U |
| #define RELOP_EQ 4U |
| #define RELOP_NE 5U |
| #define RELOP_RE 6U |
| |
| typedef struct _SComparePropsRestriction |
| { |
| ULONG relop; |
| ULONG ulPropTag1; |
| ULONG ulPropTag2; |
| } SComparePropsRestriction; |
| |
| typedef struct _SContentRestriction |
| { |
| ULONG ulFuzzyLevel; |
| ULONG ulPropTag; |
| LPSPropValue lpProp; |
| } SContentRestriction; |
| |
| typedef struct _SExistRestriction |
| { |
| ULONG ulReserved1; |
| ULONG ulPropTag; |
| ULONG ulReserved2; |
| } SExistRestriction; |
| |
| typedef struct _SNotRestriction |
| { |
| ULONG ulReserved; |
| LPSRestriction lpRes; |
| } SNotRestriction; |
| |
| typedef struct _SOrRestriction |
| { |
| ULONG cRes; |
| LPSRestriction lpRes; |
| } SOrRestriction; |
| |
| typedef struct _SPropertyRestriction |
| { |
| ULONG relop; |
| ULONG ulPropTag; |
| LPSPropValue lpProp; |
| } SPropertyRestriction; |
| |
| typedef struct _SSizeRestriction |
| { |
| ULONG relop; |
| ULONG ulPropTag; |
| ULONG cb; |
| } SSizeRestriction; |
| |
| typedef struct _SSubRestriction |
| { |
| ULONG ulSubObject; |
| LPSRestriction lpRes; |
| } SSubRestriction; |
| |
| /* Restriction types */ |
| #define RES_AND 0U |
| #define RES_OR 1U |
| #define RES_NOT 2U |
| #define RES_CONTENT 3U |
| #define RES_PROPERTY 4U |
| #define RES_COMPAREPROPS 5U |
| #define RES_BITMASK 6U |
| #define RES_SIZE 7U |
| #define RES_EXIST 8U |
| #define RES_SUBRESTRICTION 9U |
| #define RES_COMMENT 10U |
| |
| typedef struct _SRestriction |
| { |
| ULONG rt; |
| union |
| { |
| SAndRestriction resAnd; |
| SBitMaskRestriction resBitMask; |
| SCommentRestriction resComment; |
| SComparePropsRestriction resCompareProps; |
| SContentRestriction resContent; |
| SExistRestriction resExist; |
| SNotRestriction resNot; |
| SOrRestriction resOr; |
| SPropertyRestriction resProperty; |
| SSizeRestriction resSize; |
| SSubRestriction resSub; |
| } res; |
| } SRestriction; |
| |
| /* Errors */ |
| typedef struct _MAPIERROR |
| { |
| ULONG ulVersion; /* Mapi version */ |
| #if defined (UNICODE) || defined (__WINESRC__) |
| LPWSTR lpszError; /* Error and component strings. These are Ascii */ |
| LPWSTR lpszComponent; /* unless the MAPI_UNICODE flag is passed in */ |
| #else |
| LPSTR lpszError; |
| LPSTR lpszComponent; |
| #endif |
| ULONG ulLowLevelError; |
| ULONG ulContext; |
| } MAPIERROR, *LPMAPIERROR; |
| |
| /* Sorting */ |
| #define TABLE_SORT_ASCEND 0U |
| #define TABLE_SORT_DESCEND 1U |
| #define TABLE_SORT_COMBINE 2U |
| |
| typedef struct _SSortOrder |
| { |
| ULONG ulPropTag; |
| ULONG ulOrder; |
| } SSortOrder, *LPSSortOrder; |
| |
| typedef struct _SSortOrderSet |
| { |
| ULONG cSorts; |
| ULONG cCategories; |
| ULONG cExpanded; |
| SSortOrder aSort[MAPI_DIM]; |
| } SSortOrderSet, * LPSSortOrderSet; |
| |
| #define MNID_ID 0 |
| #define MNID_STRING 1 |
| |
| typedef struct _MAPINAMEID |
| { |
| LPGUID lpguid; |
| ULONG ulKind; |
| union |
| { |
| LONG lID; |
| LPWSTR lpwstrName; |
| } Kind; |
| } MAPINAMEID, *LPMAPINAMEID; |
| |
| /* Desired notification types (bitflags) */ |
| #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) |
| |
| /* Type of notification event */ |
| #define TABLE_CHANGED 1U |
| #define TABLE_ERROR 2U |
| #define TABLE_ROW_ADDED 3U |
| #define TABLE_ROW_DELETED 4U |
| #define TABLE_ROW_MODIFIED 5U |
| #define TABLE_SORT_DONE 6U |
| #define TABLE_RESTRICT_DONE 7U |
| #define TABLE_SETCOL_DONE 8U |
| #define TABLE_RELOAD 9U |
| |
| /* fnevCriticalError notification */ |
| typedef struct _ERROR_NOTIFICATION |
| { |
| ULONG cbEntryID; |
| LPENTRYID lpEntryID; |
| SCODE scode; |
| ULONG ulFlags; |
| LPMAPIERROR lpMAPIError; |
| } ERROR_NOTIFICATION; |
| |
| /* fnevNewMail notification */ |
| typedef struct _NEWMAIL_NOTIFICATION |
| { |
| ULONG cbEntryID; |
| LPENTRYID lpEntryID; |
| ULONG cbParentID; |
| LPENTRYID lpParentID; |
| ULONG ulFlags; |
| #if defined (UNICODE) || defined (__WINESRC__) |
| LPWSTR lpszMessageClass; |
| #else |
| LPSTR lpszMessageClass; |
| #endif |
| ULONG ulMessageFlags; |
| } NEWMAIL_NOTIFICATION; |
| |
| /* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */ |
| typedef struct _OBJECT_NOTIFICATION |
| { |
| ULONG cbEntryID; |
| LPENTRYID lpEntryID; |
| ULONG ulObjType; |
| ULONG cbParentID; |
| LPENTRYID lpParentID; |
| ULONG cbOldID; |
| LPENTRYID lpOldID; |
| ULONG cbOldParentID; |
| LPENTRYID lpOldParentID; |
| LPSPropTagArray lpPropTagArray; |
| } OBJECT_NOTIFICATION; |
| |
| /* fnevTableModified notification */ |
| typedef struct _TABLE_NOTIFICATION |
| { |
| ULONG ulTableEvent; |
| HRESULT hResult; |
| SPropValue propIndex; |
| SPropValue propPrior; |
| SRow row; |
| ULONG ulPad; |
| } TABLE_NOTIFICATION; |
| |
| /* fnevExtended notification */ |
| typedef struct _EXTENDED_NOTIFICATION |
| { |
| ULONG ulEvent; |
| ULONG cb; |
| LPBYTE pbEventParameters; |
| } EXTENDED_NOTIFICATION; |
| |
| /* fnevStatusObjectModified notification */ |
| typedef struct |
| { |
| ULONG cbEntryID; |
| LPENTRYID lpEntryID; |
| ULONG cValues; |
| LPSPropValue lpPropVals; |
| } STATUS_OBJECT_NOTIFICATION; |
| |
| /* The notification structure passed to advise sinks */ |
| typedef struct _NOTIFICATION |
| { |
| ULONG ulEventType; |
| ULONG ulAlignPad; |
| union |
| { |
| ERROR_NOTIFICATION err; |
| NEWMAIL_NOTIFICATION newmail; |
| OBJECT_NOTIFICATION obj; |
| TABLE_NOTIFICATION tab; |
| EXTENDED_NOTIFICATION ext; |
| STATUS_OBJECT_NOTIFICATION statobj; |
| } info; |
| } NOTIFICATION, *LPNOTIFICATION; |
| |
| typedef LONG (WINAPI NOTIFCALLBACK)(LPVOID,ULONG,LPNOTIFICATION); |
| typedef NOTIFCALLBACK *LPNOTIFCALLBACK; |
| |
| /* IMAPIContainer::OpenEntry flags */ |
| #define MAPI_BEST_ACCESS 0x00000010 |
| |
| /***************************************************************************** |
| * IMAPITable interface |
| * |
| * This is the read-only 'view' over an I(MAPI)TableData object. |
| */ |
| #define INTERFACE IMAPITable |
| DECLARE_INTERFACE_(IMAPITable,IUnknown) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPITable methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppError) PURE; |
| STDMETHOD(Advise)(THIS_ ULONG ulMask, LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE; |
| STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE; |
| STDMETHOD(GetStatus)(THIS_ ULONG *lpStatus, ULONG *lpType) PURE; |
| STDMETHOD(SetColumns)(THIS_ LPSPropTagArray lpProps, ULONG ulFlags) PURE; |
| STDMETHOD(QueryColumns)(THIS_ ULONG ulFlags, LPSPropTagArray *lpCols) PURE; |
| STDMETHOD(GetRowCount)(THIS_ ULONG ulFlags, ULONG *lpCount) PURE; |
| STDMETHOD(SeekRow)(THIS_ BOOKMARK lpStart, LONG lRows, LONG *lpSeeked) PURE; |
| STDMETHOD(SeekRowApprox)(THIS_ ULONG ulNum, ULONG ulDenom) PURE; |
| STDMETHOD(QueryPosition)(THIS_ ULONG *lpRow, ULONG *lpNum, ULONG *lpDenom) PURE; |
| STDMETHOD(FindRow)(THIS_ LPSRestriction lpRestrict, BOOKMARK lpOrigin, ULONG ulFlags) PURE; |
| STDMETHOD(Restrict)(THIS_ LPSRestriction lpRestrict, ULONG ulFlags) PURE; |
| STDMETHOD(CreateBookmark)(THIS_ BOOKMARK *lppPos) PURE; |
| STDMETHOD(FreeBookmark)(THIS_ BOOKMARK lpPos) PURE; |
| STDMETHOD(SortTable)(THIS_ LPSSortOrderSet lpSortOpts, ULONG ulFlags) PURE; |
| STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet *lppSortOpts) PURE; |
| STDMETHOD(QueryRows)(THIS_ LONG lRows, ULONG ulFlags, LPSRowSet *lppRows) PURE; |
| STDMETHOD(Abort) (THIS) PURE; |
| STDMETHOD(ExpandRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulRows, |
| ULONG ulFlags, LPSRowSet *lppRows, ULONG *lpMore) PURE; |
| STDMETHOD(CollapseRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulFlags, ULONG *lpRows) PURE; |
| STDMETHOD(WaitForCompletion)(THIS_ ULONG ulFlags, ULONG ulTime, ULONG *lpState) PURE; |
| STDMETHOD(GetCollapseState)(THIS_ ULONG ulFlags, ULONG cbKey, LPBYTE lpKey, |
| ULONG *lpStateLen, LPBYTE *lpState) PURE; |
| STDMETHOD(SetCollapseState)(THIS_ ULONG ulFlags, ULONG ulLen, |
| LPBYTE lpStart, BOOKMARK *lppWhere) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMAPITable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMAPITable_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMAPITable_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPITable methods ***/ |
| #define IMAPITable_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMAPITable_Advise(p,a,b,c) (p)->lpVtbl->Advise(p,a,b,c) |
| #define IMAPITable_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) |
| #define IMAPITable_GetStatus(p,a,b) (p)->lpVtbl->GetStatus(p,a,b) |
| #define IMAPITable_SetColumns(p,a,b) (p)->lpVtbl->SetColumns(p,a,b) |
| #define IMAPITable_QueryColumns(p,a,b) (p)->lpVtbl->QueryColumns(p,a,b) |
| #define IMAPITable_GetRowCount(p,a,b) (p)->lpVtbl->GetRowCount(p,a,b) |
| #define IMAPITable_SeekRow(p,a,b) (p)->lpVtbl->SeekRow(p,a,b) |
| #define IMAPITable_SeekRowApprox(p,a,b) (p)->lpVtbl->SeekRowApprox(p,a,b) |
| #define IMAPITable_QueryPosition(p,a,b) (p)->lpVtbl->QueryPosition(p,a,b) |
| #define IMAPITable_FindRow(p,a,b,c) (p)->lpVtbl->FindRow(p,a,b,c) |
| #define IMAPITable_Restrict(p,a,b) (p)->lpVtbl->Recstrict(p,a,b) |
| #define IMAPITable_CreateBookmark(p,a) (p)->lpVtbl->CreateBookmark(p,a) |
| #define IMAPITable_FreeBookmark(p,a) (p)->lpVtbl->FreeBookmark(p,a) |
| #define IMAPITable_SortTable(p,a,b) (p)->lpVtbl->SortTable(p,a,b) |
| #define IMAPITable_QuerySortOrder(p,a) (p)->lpVtbl->QuerySortOrder(p,a) |
| #define IMAPITable_QueryRows(p,a,b,c) (p)->lpVtbl->QueryRows(p,a,b,c) |
| #define IMAPITable_Abort(p) (p)->lpVtbl->Abort(p) |
| #define IMAPITable_ExpandRow(p,a,b,c,d,e,f) (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f) |
| #define IMAPITable_CollapseRow(p,a,b,c,d) (p)->lpVtbl->CollapseRow(p,a,b,c,d) |
| #define IMAPITable_WaitForCompletion(p,a,b,c) (p)->lpVtbl->WaitForCompletion(p,a,b,c) |
| #define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e) |
| #define IMAPITable_SetCollapseState(p,a,b,c,d) (p)->lpVtbl->SetCollapseState(p,a,b,c,d) |
| #endif |
| |
| typedef IMAPITable *LPMAPITABLE; |
| |
| /***************************************************************************** |
| * IMAPIAdviseSink interface |
| */ |
| #define INTERFACE IMAPIAdviseSink |
| DECLARE_INTERFACE_(IMAPIAdviseSink,IUnknown) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIAdviseSink methods ***/ |
| STDMETHOD(OnNotify)(THIS_ ULONG NumNotif, LPNOTIFICATION lpNotif) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMAPIAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMAPIAdviseSink_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIAdviseSink methods ***/ |
| #define IMAPIAdviseSink_OnNotify(p,a,b) (p)->lpVtbl->OnNotify(p,a,b) |
| #endif |
| |
| /***************************************************************************** |
| * IMAPIProp interface |
| */ |
| #define INTERFACE IMAPIProp |
| DECLARE_INTERFACE_(IMAPIProp,IUnknown) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMAPIProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMAPIProp_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMAPIProp_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IMAPIProp_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMAPIProp_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IMAPIProp_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IMAPIProp_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IMAPIProp_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IMAPIProp_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IMAPIProp_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IMAPIProp_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IMAPIProp_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IMAPIProp_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IMAPIProp_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| #endif |
| |
| typedef IMAPIProp *LPMAPIPROP; |
| |
| #define KEEP_OPEN_READONLY (0x00000001U) |
| #define KEEP_OPEN_READWRITE (0x00000002U) |
| #define FORCE_SAVE (0x00000004U) |
| |
| /***************************************************************************** |
| * IMsgStore interface |
| */ |
| #define INTERFACE IMsgStore |
| DECLARE_INTERFACE_(IMsgStore,IMAPIProp) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| /*** IMsgStore methods ***/ |
| STDMETHOD(Advise)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink, |
| ULONG * lpulConnection) PURE; |
| STDMETHOD(Unadvise)(THIS_ ULONG ulConnection) PURE; |
| STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2, |
| ULONG ulFlags, ULONG * lpulResult) PURE; |
| STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG *lpulObjType, |
| LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE; |
| STDMETHOD(GetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG * lpcbEntryID, LPENTRYID *lppEntryID, |
| LPSTR *lppszExplicitClass) PURE; |
| STDMETHOD(GetReceiveFolderTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(StoreLogoff)(THIS_ ULONG * lpulFlags) PURE; |
| STDMETHOD(AbortSubmit)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags) PURE; |
| STDMETHOD(GetOutgoingQueue)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(SetLockState)(THIS_ LPMESSAGE lpMessage, ULONG ulLockState) PURE; |
| STDMETHOD(FinishedMsg)(THIS_ ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE; |
| STDMETHOD(NotifyNewMail)(THIS_ LPNOTIFICATION lpNotification) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMsgStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMsgStore_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMsgStore_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IMsgStore_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMsgStore_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IMsgStore_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IMsgStore_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IMsgStore_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IMsgStore_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IMsgStore_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IMsgStore_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IMsgStore_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IMsgStore_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IMsgStore_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| /*** IMsgStore methods ***/ |
| #define IMsgStore_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e) |
| #define IMsgStore_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) |
| #define IMsgStore_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f) |
| #define IMsgStore_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) |
| #define IMsgStore_SetReceiveFolder(p,a,b,c,d) (p)->lpVtbl->SetReceiveFolder(p,a,b,c,d) |
| #define IMsgStore_GetReceiveFolder(p,a,b,c,d,e) (p)->lpVtbl->GetReceiveFolder(p,a,b,c,d,e) |
| #define IMsgStore_GetReceiveFolderTable(p,a,b) (p)->lpVtbl->GetReceiveFolderTable(p,a,b) |
| #define IMsgStore_StoreLogoff(p,a) (p)->lpVtbl->StoreLogoff(p,a) |
| #define IMsgStore_AbortSubmit(p,a,b,c) (p)->lpVtbl->AbortSubmit(p,a,b,c) |
| #define IMsgStore_GetOutgoingQueue(p,a,b) (p)->lpVtbl->GetOutgoingQueue(p,a,b) |
| #define IMsgStore_SetLockState(p,a,b) (p)->lpVtbl->SetLockState(p,a,b) |
| #define IMsgStore_FinishedMsg(p,a,b,c) (p)->lpVtbl->FinishedMsg(p,a,b,c) |
| #define IMsgStore_NotifyNewMail(p,a) (p)->lpVtbl->NotifyNewMail(p,a) |
| |
| #endif |
| |
| typedef IMsgStore *LPMDB; |
| |
| /***************************************************************************** |
| * IMAPIContainer interface |
| */ |
| #define INTERFACE IMAPIContainer |
| DECLARE_INTERFACE_(IMAPIContainer,IMAPIProp) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| /*** IMAPIContainer methods ***/ |
| STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, |
| ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE; |
| STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE; |
| STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList, |
| ULONG * lpulSearchState) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMAPIContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMAPIContainer_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMAPIContainer_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IMAPIContainer_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMAPIContainer_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IMAPIContainer_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IMAPIContainer_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IMAPIContainer_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IMAPIContainer_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IMAPIContainer_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IMAPIContainer_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IMAPIContainer_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IMAPIContainer_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IMAPIContainer_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| /*** IMAPIContainer methods ***/ |
| #define IMAPIContainer_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b) |
| #define IMAPIContainer_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b) |
| #define IMAPIContainer_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) |
| #define IMAPIContainer_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c) |
| #define IMAPIContainer_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d) |
| |
| #endif |
| |
| /***************************************************************************** |
| * IMAPIFolder interface |
| */ |
| #define INTERFACE IMAPIFolder |
| DECLARE_INTERFACE_(IMAPIFolder,IMAPIContainer) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| /*** IMAPIContainer methods ***/ |
| STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; |
| STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, |
| ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE; |
| STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE; |
| STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList, |
| ULONG * lpulSearchState) PURE; |
| /*** IMAPIFolder methods ***/ |
| STDMETHOD(CreateMessage)(THIS_ LPCIID lpInterface, ULONG ulFlags, LPMESSAGE *lppMessage) PURE; |
| STDMETHOD(CopyMessages)(THIS_ LPENTRYLIST lpMsgList, LPCIID lpInterface, LPVOID lpDestFolder, ULONG ulUIParam, |
| LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| STDMETHOD(DeleteMessages)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| STDMETHOD(CreateFolder)(THIS_ ULONG ulFolderType, LPSTR lpszFolderName, LPSTR lpszFolderComment, LPCIID lpInterface, |
| ULONG ulFlags, LPMAPIFOLDER lppFolder) PURE; |
| STDMETHOD(CopyFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, LPVOID lpDestFolder, |
| LPSTR lpszNewFolderName, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| STDMETHOD(DeleteFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, |
| ULONG ulFlags) PURE; |
| STDMETHOD(SetReadFlags)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| STDMETHOD(GetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG * lpulMessageStatus) PURE; |
| STDMETHOD(SetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulNewStatus, |
| ULONG ulNewStatusMask, ULONG * lpulOldStatus) PURE; |
| STDMETHOD(SaveContentsSort)(THIS_ LPSSortOrderSet lpSortCriteria, ULONG ulFlags) PURE; |
| STDMETHOD(EmptyFolder) (THIS_ ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMAPIFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMAPIFolder_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMAPIFolder_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IMAPIFolder_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMAPIFolder_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IMAPIFolder_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IMAPIFolder_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IMAPIFolder_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IMAPIFolder_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IMAPIFolder_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IMAPIFolder_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IMAPIFolder_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IMAPIFolder_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IMAPIFolder_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| /*** IMAPIContainer methods ***/ |
| #define IMAPIFolder_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b) |
| #define IMAPIFolder_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b) |
| #define IMAPIFolder_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) |
| #define IMAPIFolder_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c) |
| #define IMAPIFolder_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d) |
| /*** IMAPIFolder methods ***/ |
| #define IMAPIFolder_CreateMessage(p,a,b,c) (p)->lpVtbl->CreateMessage(p,a,b,c) |
| #define IMAPIFolder_CopyMessages(p,a,b,c,d,e,f) (p)->lpVtbl->CopyMessages(p,a,b,c,d,e,f) |
| #define IMAPIFolder_DeleteMessages(p,a,b,c,d) (p)->lpVtbl->DeleteMessages(p,a,b,c,d) |
| #define IMAPIFolder_CreateFolder(p,a,b,c,d,e,f) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e,f) |
| #define IMAPIFolder_CopyFolder(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CopyFolder(p,a,b,c,d,e,f,g,h) |
| #define IMAPIFolder_DeleteFolder(p,a,b,c,d,e) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e) |
| #define IMAPIFolder_SetReadFlags(p,a,b,c,d) (p)->lpVtbl->SetReadFlags(p,a,b,c,d) |
| #define IMAPIFolder_GetMessageStatus(p,a,b,c,d) (p)->lpVtbl->GetMessageStatus(p,a,b,c,d) |
| #define IMAPIFolder_SetMessageStatus(p,a,b,c,d,e) (p)->lpVtbl->SetMessageStatus(p,a,b,c,d,e) |
| #define IMAPIFolder_SaveContentsSort(p,a,b) (p)->lpVtbl->SaveContentsSort(p,a,b) |
| #define IMAPIFolder_EmptyFolder(p,a,b,c) (p)->lpVtbl->EmptyFolder(p,a,b,c) |
| |
| #endif |
| |
| typedef struct |
| { |
| ULONG cb; |
| BYTE abEntry[MAPI_DIM]; |
| } FLATENTRY, *LPFLATENTRY; |
| |
| typedef struct |
| { |
| ULONG cEntries; |
| ULONG cbEntries; |
| BYTE abEntries[MAPI_DIM]; |
| } FLATENTRYLIST, *LPFLATENTRYLIST; |
| |
| typedef struct |
| { |
| ULONG cb; |
| BYTE ab[MAPI_DIM]; |
| } MTSID, *LPMTSID; |
| |
| typedef struct |
| { |
| ULONG cMTSIDs; |
| ULONG cbMTSIDs; |
| BYTE abMTSIDs[MAPI_DIM]; |
| } FLATMTSIDLIST, *LPFLATMTSIDLIST; |
| |
| typedef struct _ADRENTRY |
| { |
| ULONG ulReserved1; |
| ULONG cValues; |
| LPSPropValue rgPropVals; |
| } ADRENTRY, *LPADRENTRY; |
| |
| typedef struct _ADRLIST |
| { |
| ULONG cEntries; |
| ADRENTRY aEntries[MAPI_DIM]; |
| } ADRLIST, *LPADRLIST; |
| |
| /***************************************************************************** |
| * IMessage interface |
| */ |
| #define INTERFACE IMessage |
| DECLARE_INTERFACE_(IMessage,IMAPIProp) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| /*** IMessage methods ***/ |
| STDMETHOD(GetAttachmentTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; |
| STDMETHOD(OpenAttach)(THIS_ ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, LPATTACH *lppAttach) PURE; |
| STDMETHOD(CreateAttach)(THIS_ LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach) PURE; |
| STDMETHOD(DeleteAttach)(THIS_ ULONG ulAttachmentNum, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; |
| STDMETHOD(GetRecipientTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; |
| STDMETHOD(ModifyRecipients)(THIS_ ULONG ulFlags, LPADRLIST lpMods) PURE; |
| STDMETHOD(SubmitMessage)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(SetReadFlag)(THIS_ ULONG ulFlags) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IMessage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IMessage_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IMessage_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IMessage_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IMessage_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IMessage_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IMessage_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IMessage_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IMessage_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IMessage_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IMessage_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IMessage_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IMessage_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IMessage_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| /*** IMessage methods ***/ |
| #define IMessage_GetAttachmentTable(p,a,b) (p)->lpVtbl->GetAttachmentTable(p,a,b) |
| #define IMessage_OpenAttach(p,a,b,c,d) (p)->lpVtbl->OpenAttach(p,a,b,c,d) |
| #define IMessage_CreateAttach(p,a,b,c,d) (p)->lpVtbl->CreateAttach(p,a,b,c,d) |
| #define IMessage_DeleteAttach(p,a,b,c,d) (p)->lpVtbl->DeleteAttach(p,a,b,c,d) |
| #define IMessage_GetRecipientTable(p,a,b) (p)->lpVtbl->GetRecipientTable(p,a,b) |
| #define IMessage_ModifyRecipients(p,a,b) (p)->lpVtbl->ModifyRecipients(p,a,b) |
| #define IMessage_SubmitMessage(p,a) (p)->lpVtbl->SubmitMessage(p,a) |
| #define IMessage_SetReadFlag(p,a) (p)->lpVtbl->SetReadFlag(p,a) |
| |
| #endif |
| |
| /* Message flags (PR_MESSAGE_FLAGS) */ |
| |
| #define MSGFLAG_READ 0x00000001U |
| #define MSGFLAG_UNMODIFIED 0x00000002U |
| #define MSGFLAG_SUBMIT 0x00000004U |
| #define MSGFLAG_UNSENT 0x00000008U |
| #define MSGFLAG_HASATTACH 0x00000010U |
| #define MSGFLAG_FROMME 0x00000020U |
| |
| /***************************************************************************** |
| * IAttach interface |
| */ |
| #define INTERFACE IAttach |
| DECLARE_INTERFACE_(IAttach,IMAPIProp) |
| { |
| /*** IUnknown methods ***/ |
| STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; |
| STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG,Release)(THIS) PURE; |
| /*** IMAPIProp methods ***/ |
| STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; |
| STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; |
| STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; |
| STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; |
| STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; |
| STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, |
| LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, |
| LPSPropProblemArray *lppProbs) PURE; |
| STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, |
| LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; |
| STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, |
| LPMAPINAMEID **lpppNames) PURE; |
| STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; |
| }; |
| #undef INTERFACE |
| |
| #if !defined(__cplusplus) || defined(CINTERFACE) |
| /*** IUnknown methods ***/ |
| #define IAttach_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
| #define IAttach_AddRef(p) (p)->lpVtbl->AddRef(p) |
| #define IAttach_Release(p) (p)->lpVtbl->Release(p) |
| /*** IMAPIProp methods ***/ |
| #define IAttach_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) |
| #define IAttach_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) |
| #define IAttach_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) |
| #define IAttach_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) |
| #define IAttach_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) |
| #define IAttach_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) |
| #define IAttach_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) |
| #define IAttach_CopyTo(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->CopyTo(p,a,b,c,d,e,f,g,h,i) |
| #define IAttach_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) |
| #define IAttach_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) |
| #define IAttach_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) |
| #endif |
| |
| /* Attachment flags */ |
| |
| #define NO_ATTACHMENT 0x00000000U |
| #define ATTACH_BY_VALUE 0x00000001U |
| |
| #endif /*MAPIDEFS_H*/ |