diff options
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h')
-rw-r--r-- | src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h | 1332 |
1 files changed, 1332 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h b/src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h new file mode 100644 index 00000000..fe2c5c37 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h @@ -0,0 +1,1332 @@ +/* + * 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 + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#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*/ |