Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327/* * 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
#ifndef __WINESRC__# include <windows.h>#endif
#include <winerror.h>#include <objbase.h>#include <stddef.h>
/* Some types from other headers */#ifndef __LHANDLE#define __LHANDLEtypedef ULONG_PTR LHANDLE, *LPLHANDLE;#endif
#ifndef _tagCY_DEFINED#define _tagCY_DEFINEDtypedef 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 IMAPITableDECLARE_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 IMAPIAdviseSinkDECLARE_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 IMAPIPropDECLARE_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 IMsgStoreDECLARE_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 IMAPIContainerDECLARE_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 IMAPIFolderDECLARE_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 IMessageDECLARE_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 IAttachDECLARE_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*/