2 * Copyright (C) 1998 Justin Bradford
3 * Copyright (c) 2009 Owen Rudge for CodeWeavers
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
28 /* Some types from other headers */
31 typedef ULONG_PTR LHANDLE
, *LPLHANDLE
;
34 #ifndef _tagCY_DEFINED
35 #define _tagCY_DEFINED
40 #ifdef WORDS_BIGENDIAN
51 #endif /* _tagCY_DEFINED */
56 typedef struct _FILETIME
58 #ifdef WORDS_BIGENDIAN
65 } FILETIME
, *PFILETIME
, *LPFILETIME
;
68 /* Memory allocation routines */
69 typedef SCODE (WINAPI ALLOCATEBUFFER
)(ULONG
,LPVOID
*);
70 typedef SCODE (WINAPI ALLOCATEMORE
)(ULONG
,LPVOID
,LPVOID
*);
71 typedef ULONG (WINAPI FREEBUFFER
)(LPVOID
);
73 typedef ALLOCATEBUFFER
*LPALLOCATEBUFFER
;
74 typedef ALLOCATEMORE
*LPALLOCATEMORE
;
75 typedef FREEBUFFER
*LPFREEBUFFER
;
77 /* MAPI exposed interfaces */
78 typedef const IID
*LPCIID
;
80 typedef struct IAddrBook IAddrBook
;
81 typedef IAddrBook
*LPADRBOOK
;
82 typedef struct IABContainer IABContainer
;
83 typedef IABContainer
*LPABCONT
;
84 typedef struct IAttach
*LPATTACH
;
85 typedef struct IDistList IDistList
;
86 typedef IDistList
*LPDISTLIST
;
87 typedef struct IMailUser IMailUser
;
88 typedef IMailUser
*LPMAILUSER
;
89 typedef struct IMAPIAdviseSink
*LPMAPIADVISESINK
;
90 typedef struct IMAPIContainer
*LPMAPICONTAINER
;
91 typedef struct IMAPIFolder
*LPMAPIFOLDER
;
92 typedef struct IMAPIProgress IMAPIProgress
;
93 typedef IMAPIProgress
*LPMAPIPROGRESS
;
94 typedef struct IMAPIStatus IMAPIStatus
;
95 typedef IMAPIStatus
*LPMAPISTATUS
;
96 typedef struct IMessage
*LPMESSAGE
;
97 typedef struct IProfSect IProfSect
;
98 typedef IProfSect
*LPPROFSECT
;
99 typedef struct IProviderAdmin IProviderAdmin
;
100 typedef IProviderAdmin
*LPPROVIDERADMIN
;
103 # define MAPI_DIM 1 /* Default to one dimension for variable length arrays */
106 /* Flags for abFlags[0] */
107 #define MAPI_NOTRESERVED 0x08
108 #define MAPI_NOW 0x10
109 #define MAPI_THISSESSION 0x20
110 #define MAPI_NOTRECIP 0x40
111 #define MAPI_SHORTTERM 0x80
113 /* Flags for abFlags[1] */
114 #define MAPI_COMPOUND 0x80
116 typedef struct _ENTRYID
120 } ENTRYID
, *LPENTRYID
;
123 typedef struct _MAPIUID
125 BYTE ab
[sizeof(GUID
)];
126 } MAPIUID
, *LPMAPIUID
;
128 #define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID)))
130 #define MAPI_ONE_OFF_UID { 0x81,0x2b,0x1f,0xa4,0xbe,0xa3,0x10,0x19,0x9d,0x6e, \
131 0x00,0xdd,0x01,0x0f,0x54,0x02 }
132 #define MAPI_ONE_OFF_UNICODE 0x8000
133 #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
136 #define MAPI_STORE 1U
137 #define MAPI_ADDRBOOK 2U
138 #define MAPI_FOLDER 3U
139 #define MAPI_ABCONT 4U
140 #define MAPI_MESSAGE 5U
141 #define MAPI_MAILUSER 6U
142 #define MAPI_ATTACH 7U
143 #define MAPI_DISTLIST 8U
144 #define MAPI_PROFSECT 9U
145 #define MAPI_STATUS 10U
146 #define MAPI_SESSION 11U
147 #define MAPI_FORMINFO 12U
149 /* Flags for various calls */
150 #define MAPI_MODIFY 0x00000001U /* Object can be modified */
151 #define MAPI_CREATE 0x00000002U /* Object can be created */
152 #define MAPI_ACCESS_MODIFY MAPI_MODIFY /* Want write access */
153 #define MAPI_ACCESS_READ 0x00000002U /* Want read access */
154 #define MAPI_ACCESS_DELETE 0x00000004U /* Want delete access */
155 #define MAPI_ACCESS_CREATE_HIERARCHY 0x00000008U
156 #define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U
157 #define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U
158 #define MAPI_USE_DEFAULT 0x00000040U
159 #define MAPI_UNICODE 0x80000000U /* Strings in this call are Unicode */
161 #if defined (UNICODE) || defined (__WINESRC__)
162 #define fMapiUnicode MAPI_UNICODE
164 #define fMapiUnicode 0U
167 /* IMAPISession::OpenMessageStore() flags */
168 #define MDB_NO_DIALOG 0x00000001
170 /* Types of message receivers */
172 #define MAPI_ORIG 0 /* The original author */
173 #define MAPI_TO 1 /* The primary message receiver */
174 #define MAPI_CC 2 /* A carbon copy receiver */
175 #define MAPI_BCC 3 /* A blind carbon copy receiver */
176 #define MAPI_P1 0x10000000 /* A message resend */
177 #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */
180 #ifndef cchProfileNameMax
181 #define cchProfileNameMax 64 /* Maximum length of a profile name */
182 #define cchProfilePassMax 64 /* Maximum length of a profile password */
185 /* Properties: The are the contents of cells in MAPI tables, as well as the
186 * values returned when object properties are queried.
190 #define PT_UNSPECIFIED 0U
193 #define PT_SHORT PT_I2
195 #define PT_I4 PT_LONG
197 #define PT_FLOAT PT_R4
199 #define PT_R8 PT_DOUBLE
200 #define PT_CURRENCY 6U
201 #define PT_APPTIME 7U
203 #define PT_BOOLEAN 11U
204 #define PT_OBJECT 13U
206 #define PT_LONGLONG PT_I8
207 #define PT_STRING8 30U
208 #define PT_UNICODE 31U
209 #define PT_SYSTIME 64U
211 #define PT_BINARY 258U
213 #define MV_FLAG 0x1000 /* This property type is multi-valued (an array) */
214 #define MV_INSTANCE 0x2000
215 #define MVI_FLAG (MV_FLAG|MV_INSTANCE)
216 #define MVI_PROP(t) ((t)|MVI_FLAG)
218 #ifndef WINE_NO_UNICODE_MACROS
220 # define PT_TSTRING PT_UNICODE
221 # define PT_MV_TSTRING (MV_FLAG|PT_UNICODE)
223 # define LPPSZ lppszW
226 # define PT_TSTRING PT_STRING8
227 # define PT_MV_TSTRING (MV_FLAG|PT_STRING8)
229 # define LPPSZ lppszA
234 #define PROP_TYPE_MASK 0xFFFFU
235 #define PROP_TYPE(t) ((t) & PROP_TYPE_MASK)
236 #define PROP_ID(t) ((t) >> 16)
237 #define PROP_TAG(t,id) (((id) << 16) | t)
238 #define PROP_ID_NULL 0
239 #define PROP_ID_INVALID 0xFFFF
240 #define PR_NULL PROP_TAG(PT_NULL, PROP_ID_NULL)
242 #define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ)
244 /* Multi-valued property types */
245 #define PT_MV_I2 (MV_FLAG|PT_I2)
246 #define PT_MV_SHORT PT_MV_I2
247 #define PT_MV_LONG (MV_FLAG|PT_LONG)
248 #define PT_MV_I4 PT_MV_LONG
249 #define PT_MV_R4 (MV_FLAG|PT_R4)
250 #define PT_MV_FLOAT PT_MV_R4
251 #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
252 #define PT_MV_R8 PT_MV_DOUBLE
253 #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
254 #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
255 #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
256 #define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
257 #define PT_MV_BINARY (MV_FLAG|PT_BINARY)
258 #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
259 #define PT_MV_CLSID (MV_FLAG|PT_CLSID)
260 #define PT_MV_I8 (MV_FLAG|PT_I8)
261 #define PT_MV_LONGLONG PT_MV_I8
264 /* The property tag structure. This describes a list of columns */
265 typedef struct _SPropTagArray
267 ULONG cValues
; /* Number of elements in aulPropTag */
268 ULONG aulPropTag
[MAPI_DIM
]; /* Property tags */
269 } SPropTagArray
, *LPSPropTagArray
;
271 #define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG))
272 #define CbSPropTagArray(p) CbNewSPropTagArray((p)->cValues)
273 #define SizedSPropTagArray(n,id) \
274 struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id
276 /* Multi-valued PT_APPTIME property value */
277 typedef struct _SAppTimeArray
279 ULONG cValues
; /* Number of doubles in lpat */
280 double *lpat
; /* Pointer to double array of length cValues */
283 /* PT_BINARY property value */
284 typedef struct _SBinary
286 ULONG cb
; /* Number of bytes in lpb */
287 LPBYTE lpb
; /* Pointer to byte array of length cb */
288 } SBinary
, *LPSBinary
;
290 /* Multi-valued PT_BINARY property value */
291 typedef struct _SBinaryArray
293 ULONG cValues
; /* Number of SBinarys in lpbin */
294 SBinary
*lpbin
; /* Pointer to SBinary array of length cValues */
297 typedef SBinaryArray ENTRYLIST
, *LPENTRYLIST
;
299 /* Multi-valued PT_CY property value */
300 typedef struct _SCurrencyArray
302 ULONG cValues
; /* Number of CYs in lpcu */
303 CY
*lpcur
; /* Pointer to CY array of length cValues */
306 /* Multi-valued PT_SYSTIME property value */
307 typedef struct _SDateTimeArray
309 ULONG cValues
; /* Number of FILETIMEs in lpft */
310 FILETIME
*lpft
; /* Pointer to FILETIME array of length cValues */
313 /* Multi-valued PT_DOUBLE property value */
314 typedef struct _SDoubleArray
316 ULONG cValues
; /* Number of doubles in lpdbl */
317 double *lpdbl
; /* Pointer to double array of length cValues */
320 /* Multi-valued PT_CLSID property value */
321 typedef struct _SGuidArray
323 ULONG cValues
; /* Number of GUIDs in lpguid */
324 GUID
*lpguid
; /* Pointer to GUID array of length cValues */
327 /* Multi-valued PT_LONGLONG property value */
328 typedef struct _SLargeIntegerArray
330 ULONG cValues
; /* Number of long64s in lpli */
331 LARGE_INTEGER
*lpli
; /* Pointer to long64 array of length cValues */
332 } SLargeIntegerArray
;
334 /* Multi-valued PT_LONG property value */
335 typedef struct _SLongArray
337 ULONG cValues
; /* Number of longs in lpl */
338 LONG
*lpl
; /* Pointer to long array of length cValues */
341 /* Multi-valued PT_STRING8 property value */
342 typedef struct _SLPSTRArray
344 ULONG cValues
; /* Number of Ascii strings in lppszA */
345 LPSTR
*lppszA
; /* Pointer to Ascii string array of length cValues */
348 /* Multi-valued PT_FLOAT property value */
349 typedef struct _SRealArray
351 ULONG cValues
; /* Number of floats in lpflt */
352 float *lpflt
; /* Pointer to float array of length cValues */
355 /* Multi-valued PT_SHORT property value */
356 typedef struct _SShortArray
358 ULONG cValues
; /* Number of shorts in lpb */
359 short int *lpi
; /* Pointer to short array of length cValues */
362 /* Multi-valued PT_UNICODE property value */
363 typedef struct _SWStringArray
365 ULONG cValues
; /* Number of Unicode strings in lppszW */
366 LPWSTR
*lppszW
; /* Pointer to Unicode string array of length cValues */
369 /* A property value */
390 SCurrencyArray MVcur
;
397 SLargeIntegerArray MVli
;
402 /* Property value structure. This is essentially a mini-Variant */
403 typedef struct _SPropValue
405 ULONG ulPropTag
; /* The property type */
406 ULONG dwAlignPad
; /* Alignment, treat as reserved */
407 union _PV Value
; /* The property value */
408 } SPropValue
, *LPSPropValue
;
410 /* Structure describing a table row (a collection of property values) */
413 ULONG ulAdrEntryPad
; /* Padding, treat as reserved */
414 ULONG cValues
; /* Count of property values in lpProbs */
415 LPSPropValue lpProps
; /* Pointer to an array of property values of length cValues */
418 /* Structure describing a set of table rows */
419 typedef struct _SRowSet
421 ULONG cRows
; /* Count of rows in aRow */
422 SRow aRow
[MAPI_DIM
]; /* Array of rows of length cRows */
423 } SRowSet
, *LPSRowSet
;
425 #define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow))
426 #define CbSRowSet(p) CbNewSRowSet((p)->cRows)
427 #define SizedSRowSet(n,id) \
428 struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id
430 /* Structure describing a problem with a property */
431 typedef struct _SPropProblem
433 ULONG ulIndex
; /* Index of the property */
434 ULONG ulPropTag
; /* Property tag of the property */
435 SCODE scode
; /* Error code of the problem */
436 } SPropProblem
, *LPSPropProblem
;
438 /* A collection of property problems */
439 typedef struct _SPropProblemArray
441 ULONG cProblem
; /* Number of problems in aProblem */
442 SPropProblem aProblem
[MAPI_DIM
]; /* Array of problems of length cProblem */
443 } SPropProblemArray
, *LPSPropProblemArray
;
445 /* FPropContainsProp flags */
446 #define FL_FULLSTRING ((ULONG)0x00000) /* Exact string match */
447 #define FL_SUBSTRING ((ULONG)0x00001) /* Substring match */
448 #define FL_PREFIX ((ULONG)0x00002) /* Prefix match */
449 #define FL_IGNORECASE ((ULONG)0x10000) /* Case insensitive */
450 #define FL_IGNORENONSPACE ((ULONG)0x20000) /* Ignore non spacing characters */
451 #define FL_LOOSE ((ULONG)0x40000) /* Try very hard to match */
454 /* Table types returned by IMAPITable_GetStatus() */
455 #define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */
456 #define TBLTYPE_KEYSET 1U /* Table has a fixed number of rows, but row values may change */
457 #define TBLTYPE_DYNAMIC 2U /* Table values and the number of rows may change */
459 /* Table status returned by IMAPITable_GetStatus() */
460 #define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */
461 #define TBLSTAT_QCHANGED 7U /* Table data has changed as expected */
462 #define TBLSTAT_SORTING 9U /* Table is being asynchronously sorted */
463 #define TBLSTAT_SORT_ERROR 10U /* An error occurred while sorting the table */
464 #define TBLSTAT_SETTING_COLS 11U /* Table columns are being asynchronously changed */
465 #define TBLSTAT_SETCOL_ERROR 13U /* An error occurred during column changing */
466 #define TBLSTAT_RESTRICTING 14U /* Table rows are being asynchronously restricted */
467 #define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */
469 /* Flags for IMAPITable operations that can be asynchronous */
470 #define TBL_NOWAIT 1U /* Perform the operation asynchronously */
471 #define TBL_BATCH 2U /* Perform the operation when the results are needed */
472 #define TBL_ASYNC TBL_NOWAIT /* Synonym for TBL_NOWAIT */
474 /* Flags for IMAPITable_FindRow() */
475 #define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */
477 /* Table bookmarks */
478 typedef ULONG BOOKMARK
;
480 #define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */
481 #define BOOKMARK_CURRENT ((BOOKMARK)1) /* The curent table row */
482 #define BOOKMARK_END ((BOOKMARK)2) /* The last row */
484 /* Row restrictions */
485 typedef struct _SRestriction
* LPSRestriction
;
487 typedef struct _SAndRestriction
490 LPSRestriction lpRes
;
493 typedef struct _SBitMaskRestriction
498 } SBitMaskRestriction
;
500 typedef struct _SCommentRestriction
503 LPSRestriction lpRes
;
505 } SCommentRestriction
;
515 typedef struct _SComparePropsRestriction
520 } SComparePropsRestriction
;
522 typedef struct _SContentRestriction
527 } SContentRestriction
;
529 typedef struct _SExistRestriction
536 typedef struct _SNotRestriction
539 LPSRestriction lpRes
;
542 typedef struct _SOrRestriction
545 LPSRestriction lpRes
;
548 typedef struct _SPropertyRestriction
553 } SPropertyRestriction
;
555 typedef struct _SSizeRestriction
562 typedef struct _SSubRestriction
565 LPSRestriction lpRes
;
568 /* Restriction types */
572 #define RES_CONTENT 3U
573 #define RES_PROPERTY 4U
574 #define RES_COMPAREPROPS 5U
575 #define RES_BITMASK 6U
578 #define RES_SUBRESTRICTION 9U
579 #define RES_COMMENT 10U
581 typedef struct _SRestriction
586 SAndRestriction resAnd
;
587 SBitMaskRestriction resBitMask
;
588 SCommentRestriction resComment
;
589 SComparePropsRestriction resCompareProps
;
590 SContentRestriction resContent
;
591 SExistRestriction resExist
;
592 SNotRestriction resNot
;
593 SOrRestriction resOr
;
594 SPropertyRestriction resProperty
;
595 SSizeRestriction resSize
;
596 SSubRestriction resSub
;
601 typedef struct _MAPIERROR
603 ULONG ulVersion
; /* Mapi version */
604 #if defined (UNICODE) || defined (__WINESRC__)
605 LPWSTR lpszError
; /* Error and component strings. These are Ascii */
606 LPWSTR lpszComponent
; /* unless the MAPI_UNICODE flag is passed in */
611 ULONG ulLowLevelError
;
613 } MAPIERROR
, *LPMAPIERROR
;
616 #define TABLE_SORT_ASCEND 0U
617 #define TABLE_SORT_DESCEND 1U
618 #define TABLE_SORT_COMBINE 2U
620 typedef struct _SSortOrder
624 } SSortOrder
, *LPSSortOrder
;
626 typedef struct _SSortOrderSet
631 SSortOrder aSort
[MAPI_DIM
];
632 } SSortOrderSet
, * LPSSortOrderSet
;
635 #define MNID_STRING 1
637 typedef struct _MAPINAMEID
646 } MAPINAMEID
, *LPMAPINAMEID
;
648 /* Desired notification types (bitflags) */
649 #define fnevCriticalError ((ULONG)0x00000001)
650 #define fnevNewMail ((ULONG)0x00000002)
651 #define fnevObjectCreated ((ULONG)0x00000004)
652 #define fnevObjectDeleted ((ULONG)0x00000008)
653 #define fnevObjectModified ((ULONG)0x00000010)
654 #define fnevObjectMoved ((ULONG)0x00000020)
655 #define fnevObjectCopied ((ULONG)0x00000040)
656 #define fnevSearchComplete ((ULONG)0x00000080)
657 #define fnevTableModified ((ULONG)0x00000100)
658 #define fnevStatusObjectModified ((ULONG)0x00000200)
659 #define fnevReservedForMapi ((ULONG)0x40000000)
660 #define fnevExtended ((ULONG)0x80000000)
662 /* Type of notification event */
663 #define TABLE_CHANGED 1U
664 #define TABLE_ERROR 2U
665 #define TABLE_ROW_ADDED 3U
666 #define TABLE_ROW_DELETED 4U
667 #define TABLE_ROW_MODIFIED 5U
668 #define TABLE_SORT_DONE 6U
669 #define TABLE_RESTRICT_DONE 7U
670 #define TABLE_SETCOL_DONE 8U
671 #define TABLE_RELOAD 9U
673 /* fnevCriticalError notification */
674 typedef struct _ERROR_NOTIFICATION
680 LPMAPIERROR lpMAPIError
;
681 } ERROR_NOTIFICATION
;
683 /* fnevNewMail notification */
684 typedef struct _NEWMAIL_NOTIFICATION
689 LPENTRYID lpParentID
;
691 #if defined (UNICODE) || defined (__WINESRC__)
692 LPWSTR lpszMessageClass
;
694 LPSTR lpszMessageClass
;
696 ULONG ulMessageFlags
;
697 } NEWMAIL_NOTIFICATION
;
699 /* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */
700 typedef struct _OBJECT_NOTIFICATION
706 LPENTRYID lpParentID
;
710 LPENTRYID lpOldParentID
;
711 LPSPropTagArray lpPropTagArray
;
712 } OBJECT_NOTIFICATION
;
714 /* fnevTableModified notification */
715 typedef struct _TABLE_NOTIFICATION
719 SPropValue propIndex
;
720 SPropValue propPrior
;
723 } TABLE_NOTIFICATION
;
725 /* fnevExtended notification */
726 typedef struct _EXTENDED_NOTIFICATION
730 LPBYTE pbEventParameters
;
731 } EXTENDED_NOTIFICATION
;
733 /* fnevStatusObjectModified notification */
739 LPSPropValue lpPropVals
;
740 } STATUS_OBJECT_NOTIFICATION
;
742 /* The notification structure passed to advise sinks */
743 typedef struct _NOTIFICATION
749 ERROR_NOTIFICATION err
;
750 NEWMAIL_NOTIFICATION newmail
;
751 OBJECT_NOTIFICATION obj
;
752 TABLE_NOTIFICATION tab
;
753 EXTENDED_NOTIFICATION ext
;
754 STATUS_OBJECT_NOTIFICATION statobj
;
756 } NOTIFICATION
, *LPNOTIFICATION
;
758 typedef LONG (WINAPI NOTIFCALLBACK
)(LPVOID
,ULONG
,LPNOTIFICATION
);
759 typedef NOTIFCALLBACK
*LPNOTIFCALLBACK
;
761 /* IMAPIContainer::OpenEntry flags */
762 #define MAPI_BEST_ACCESS 0x00000010
764 /*****************************************************************************
765 * IMAPITable interface
767 * This is the read-only 'view' over an I(MAPI)TableData object.
769 #define INTERFACE IMAPITable
770 DECLARE_INTERFACE_(IMAPITable
,IUnknown
)
772 /*** IUnknown methods ***/
773 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
774 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
775 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
776 /*** IMAPITable methods ***/
777 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppError
) PURE
;
778 STDMETHOD(Advise
)(THIS_ ULONG ulMask
, LPMAPIADVISESINK lpSink
, ULONG
*lpCxn
) PURE
;
779 STDMETHOD(Unadvise
)(THIS_ ULONG ulCxn
) PURE
;
780 STDMETHOD(GetStatus
)(THIS_ ULONG
*lpStatus
, ULONG
*lpType
) PURE
;
781 STDMETHOD(SetColumns
)(THIS_ LPSPropTagArray lpProps
, ULONG ulFlags
) PURE
;
782 STDMETHOD(QueryColumns
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lpCols
) PURE
;
783 STDMETHOD(GetRowCount
)(THIS_ ULONG ulFlags
, ULONG
*lpCount
) PURE
;
784 STDMETHOD(SeekRow
)(THIS_ BOOKMARK lpStart
, LONG lRows
, LONG
*lpSeeked
) PURE
;
785 STDMETHOD(SeekRowApprox
)(THIS_ ULONG ulNum
, ULONG ulDenom
) PURE
;
786 STDMETHOD(QueryPosition
)(THIS_ ULONG
*lpRow
, ULONG
*lpNum
, ULONG
*lpDenom
) PURE
;
787 STDMETHOD(FindRow
)(THIS_ LPSRestriction lpRestrict
, BOOKMARK lpOrigin
, ULONG ulFlags
) PURE
;
788 STDMETHOD(Restrict
)(THIS_ LPSRestriction lpRestrict
, ULONG ulFlags
) PURE
;
789 STDMETHOD(CreateBookmark
)(THIS_ BOOKMARK
*lppPos
) PURE
;
790 STDMETHOD(FreeBookmark
)(THIS_ BOOKMARK lpPos
) PURE
;
791 STDMETHOD(SortTable
)(THIS_ LPSSortOrderSet lpSortOpts
, ULONG ulFlags
) PURE
;
792 STDMETHOD(QuerySortOrder
)(THIS_ LPSSortOrderSet
*lppSortOpts
) PURE
;
793 STDMETHOD(QueryRows
)(THIS_ LONG lRows
, ULONG ulFlags
, LPSRowSet
*lppRows
) PURE
;
794 STDMETHOD(Abort
) (THIS
) PURE
;
795 STDMETHOD(ExpandRow
)(THIS_ ULONG cbKey
, LPBYTE lpKey
, ULONG ulRows
,
796 ULONG ulFlags
, LPSRowSet
*lppRows
, ULONG
*lpMore
) PURE
;
797 STDMETHOD(CollapseRow
)(THIS_ ULONG cbKey
, LPBYTE lpKey
, ULONG ulFlags
, ULONG
*lpRows
) PURE
;
798 STDMETHOD(WaitForCompletion
)(THIS_ ULONG ulFlags
, ULONG ulTime
, ULONG
*lpState
) PURE
;
799 STDMETHOD(GetCollapseState
)(THIS_ ULONG ulFlags
, ULONG cbKey
, LPBYTE lpKey
,
800 ULONG
*lpStateLen
, LPBYTE
*lpState
) PURE
;
801 STDMETHOD(SetCollapseState
)(THIS_ ULONG ulFlags
, ULONG ulLen
,
802 LPBYTE lpStart
, BOOKMARK
*lppWhere
) PURE
;
806 #if !defined(__cplusplus) || defined(CINTERFACE)
807 /*** IUnknown methods ***/
808 #define IMAPITable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
809 #define IMAPITable_AddRef(p) (p)->lpVtbl->AddRef(p)
810 #define IMAPITable_Release(p) (p)->lpVtbl->Release(p)
811 /*** IMAPITable methods ***/
812 #define IMAPITable_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
813 #define IMAPITable_Advise(p,a,b,c) (p)->lpVtbl->Advise(p,a,b,c)
814 #define IMAPITable_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
815 #define IMAPITable_GetStatus(p,a,b) (p)->lpVtbl->GetStatus(p,a,b)
816 #define IMAPITable_SetColumns(p,a,b) (p)->lpVtbl->SetColumns(p,a,b)
817 #define IMAPITable_QueryColumns(p,a,b) (p)->lpVtbl->QueryColumns(p,a,b)
818 #define IMAPITable_GetRowCount(p,a,b) (p)->lpVtbl->GetRowCount(p,a,b)
819 #define IMAPITable_SeekRow(p,a,b) (p)->lpVtbl->SeekRow(p,a,b)
820 #define IMAPITable_SeekRowApprox(p,a,b) (p)->lpVtbl->SeekRowApprox(p,a,b)
821 #define IMAPITable_QueryPosition(p,a,b) (p)->lpVtbl->QueryPosition(p,a,b)
822 #define IMAPITable_FindRow(p,a,b,c) (p)->lpVtbl->FindRow(p,a,b,c)
823 #define IMAPITable_Restrict(p,a,b) (p)->lpVtbl->Recstrict(p,a,b)
824 #define IMAPITable_CreateBookmark(p,a) (p)->lpVtbl->CreateBookmark(p,a)
825 #define IMAPITable_FreeBookmark(p,a) (p)->lpVtbl->FreeBookmark(p,a)
826 #define IMAPITable_SortTable(p,a,b) (p)->lpVtbl->SortTable(p,a,b)
827 #define IMAPITable_QuerySortOrder(p,a) (p)->lpVtbl->QuerySortOrder(p,a)
828 #define IMAPITable_QueryRows(p,a,b,c) (p)->lpVtbl->QueryRows(p,a,b,c)
829 #define IMAPITable_Abort(p) (p)->lpVtbl->Abort(p)
830 #define IMAPITable_ExpandRow(p,a,b,c,d,e,f) (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f)
831 #define IMAPITable_CollapseRow(p,a,b,c,d) (p)->lpVtbl->CollapseRow(p,a,b,c,d)
832 #define IMAPITable_WaitForCompletion(p,a,b,c) (p)->lpVtbl->WaitForCompletion(p,a,b,c)
833 #define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e)
834 #define IMAPITable_SetCollapseState(p,a,b,c,d) (p)->lpVtbl->SetCollapseState(p,a,b,c,d)
837 typedef IMAPITable
*LPMAPITABLE
;
839 /*****************************************************************************
840 * IMAPIAdviseSink interface
842 #define INTERFACE IMAPIAdviseSink
843 DECLARE_INTERFACE_(IMAPIAdviseSink
,IUnknown
)
845 /*** IUnknown methods ***/
846 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
847 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
848 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
849 /*** IMAPIAdviseSink methods ***/
850 STDMETHOD(OnNotify
)(THIS_ ULONG NumNotif
, LPNOTIFICATION lpNotif
) PURE
;
854 #if !defined(__cplusplus) || defined(CINTERFACE)
855 /*** IUnknown methods ***/
856 #define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
857 #define IMAPIAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p)
858 #define IMAPIAdviseSink_Release(p) (p)->lpVtbl->Release(p)
859 /*** IMAPIAdviseSink methods ***/
860 #define IMAPIAdviseSink_OnNotify(p,a,b) (p)->lpVtbl->OnNotify(p,a,b)
863 /*****************************************************************************
864 * IMAPIProp interface
866 #define INTERFACE IMAPIProp
867 DECLARE_INTERFACE_(IMAPIProp
,IUnknown
)
869 /*** IUnknown methods ***/
870 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
871 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
872 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
873 /*** IMAPIProp methods ***/
874 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
875 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
876 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
877 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
878 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
879 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
880 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
881 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
882 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
883 LPSPropProblemArray
*lppProbs
) PURE
;
884 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
885 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
886 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
887 LPMAPINAMEID
**lpppNames
) PURE
;
888 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
892 #if !defined(__cplusplus) || defined(CINTERFACE)
893 /*** IUnknown methods ***/
894 #define IMAPIProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
895 #define IMAPIProp_AddRef(p) (p)->lpVtbl->AddRef(p)
896 #define IMAPIProp_Release(p) (p)->lpVtbl->Release(p)
897 /*** IMAPIProp methods ***/
898 #define IMAPIProp_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
899 #define IMAPIProp_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
900 #define IMAPIProp_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
901 #define IMAPIProp_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
902 #define IMAPIProp_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
903 #define IMAPIProp_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
904 #define IMAPIProp_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
905 #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)
906 #define IMAPIProp_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
907 #define IMAPIProp_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
908 #define IMAPIProp_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
911 typedef IMAPIProp
*LPMAPIPROP
;
913 #define KEEP_OPEN_READONLY (0x00000001U)
914 #define KEEP_OPEN_READWRITE (0x00000002U)
915 #define FORCE_SAVE (0x00000004U)
917 /*****************************************************************************
918 * IMsgStore interface
920 #define INTERFACE IMsgStore
921 DECLARE_INTERFACE_(IMsgStore
,IMAPIProp
)
923 /*** IUnknown methods ***/
924 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
925 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
926 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
927 /*** IMAPIProp methods ***/
928 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
929 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
930 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
931 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
932 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
933 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
934 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
935 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
936 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
937 LPSPropProblemArray
*lppProbs
) PURE
;
938 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
939 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
940 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
941 LPMAPINAMEID
**lpppNames
) PURE
;
942 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
943 /*** IMsgStore methods ***/
944 STDMETHOD(Advise
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, ULONG ulEventMask
, LPMAPIADVISESINK lpAdviseSink
,
945 ULONG
* lpulConnection
) PURE
;
946 STDMETHOD(Unadvise
)(THIS_ ULONG ulConnection
) PURE
;
947 STDMETHOD(CompareEntryIDs
)(THIS_ ULONG cbEntryID1
, LPENTRYID lpEntryID1
, ULONG cbEntryID2
, LPENTRYID lpEntryID2
,
948 ULONG ulFlags
, ULONG
* lpulResult
) PURE
;
949 STDMETHOD(OpenEntry
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, LPCIID lpInterface
, ULONG ulFlags
, ULONG
*lpulObjType
,
950 LPUNKNOWN
*lppUnk
) PURE
;
951 STDMETHOD(SetReceiveFolder
)(THIS_ LPSTR lpszMessageClass
, ULONG ulFlags
, ULONG cbEntryID
, LPENTRYID lpEntryID
) PURE
;
952 STDMETHOD(GetReceiveFolder
)(THIS_ LPSTR lpszMessageClass
, ULONG ulFlags
, ULONG
* lpcbEntryID
, LPENTRYID
*lppEntryID
,
953 LPSTR
*lppszExplicitClass
) PURE
;
954 STDMETHOD(GetReceiveFolderTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
955 STDMETHOD(StoreLogoff
)(THIS_ ULONG
* lpulFlags
) PURE
;
956 STDMETHOD(AbortSubmit
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, ULONG ulFlags
) PURE
;
957 STDMETHOD(GetOutgoingQueue
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
958 STDMETHOD(SetLockState
)(THIS_ LPMESSAGE lpMessage
, ULONG ulLockState
) PURE
;
959 STDMETHOD(FinishedMsg
)(THIS_ ULONG ulFlags
, ULONG cbEntryID
, LPENTRYID lpEntryID
) PURE
;
960 STDMETHOD(NotifyNewMail
)(THIS_ LPNOTIFICATION lpNotification
) PURE
;
964 #if !defined(__cplusplus) || defined(CINTERFACE)
965 /*** IUnknown methods ***/
966 #define IMsgStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
967 #define IMsgStore_AddRef(p) (p)->lpVtbl->AddRef(p)
968 #define IMsgStore_Release(p) (p)->lpVtbl->Release(p)
969 /*** IMAPIProp methods ***/
970 #define IMsgStore_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
971 #define IMsgStore_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
972 #define IMsgStore_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
973 #define IMsgStore_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
974 #define IMsgStore_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
975 #define IMsgStore_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
976 #define IMsgStore_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
977 #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)
978 #define IMsgStore_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
979 #define IMsgStore_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
980 #define IMsgStore_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
981 /*** IMsgStore methods ***/
982 #define IMsgStore_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e)
983 #define IMsgStore_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
984 #define IMsgStore_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f)
985 #define IMsgStore_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
986 #define IMsgStore_SetReceiveFolder(p,a,b,c,d) (p)->lpVtbl->SetReceiveFolder(p,a,b,c,d)
987 #define IMsgStore_GetReceiveFolder(p,a,b,c,d,e) (p)->lpVtbl->GetReceiveFolder(p,a,b,c,d,e)
988 #define IMsgStore_GetReceiveFolderTable(p,a,b) (p)->lpVtbl->GetReceiveFolderTable(p,a,b)
989 #define IMsgStore_StoreLogoff(p,a) (p)->lpVtbl->StoreLogoff(p,a)
990 #define IMsgStore_AbortSubmit(p,a,b,c) (p)->lpVtbl->AbortSubmit(p,a,b,c)
991 #define IMsgStore_GetOutgoingQueue(p,a,b) (p)->lpVtbl->GetOutgoingQueue(p,a,b)
992 #define IMsgStore_SetLockState(p,a,b) (p)->lpVtbl->SetLockState(p,a,b)
993 #define IMsgStore_FinishedMsg(p,a,b,c) (p)->lpVtbl->FinishedMsg(p,a,b,c)
994 #define IMsgStore_NotifyNewMail(p,a) (p)->lpVtbl->NotifyNewMail(p,a)
998 typedef IMsgStore
*LPMDB
;
1000 /*****************************************************************************
1001 * IMAPIContainer interface
1003 #define INTERFACE IMAPIContainer
1004 DECLARE_INTERFACE_(IMAPIContainer
,IMAPIProp
)
1006 /*** IUnknown methods ***/
1007 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
1008 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
1009 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
1010 /*** IMAPIProp methods ***/
1011 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
1012 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
1013 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
1014 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
1015 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
1016 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
1017 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
1018 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
1019 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
1020 LPSPropProblemArray
*lppProbs
) PURE
;
1021 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
1022 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
1023 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
1024 LPMAPINAMEID
**lpppNames
) PURE
;
1025 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
1026 /*** IMAPIContainer methods ***/
1027 STDMETHOD(GetContentsTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
1028 STDMETHOD(GetHierarchyTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
1029 STDMETHOD(OpenEntry
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, LPCIID lpInterface
, ULONG ulFlags
,
1030 ULONG
* lpulObjType
, LPUNKNOWN
* lppUnk
) PURE
;
1031 STDMETHOD(SetSearchCriteria
)(THIS_ LPSRestriction lpRestriction
, LPENTRYLIST lpContainerList
, ULONG ulSearchFlags
) PURE
;
1032 STDMETHOD(GetSearchCriteria
)(THIS_ ULONG ulFlags
, LPSRestriction
* lppRestriction
, LPENTRYLIST
* lppContainerList
,
1033 ULONG
* lpulSearchState
) PURE
;
1037 #if !defined(__cplusplus) || defined(CINTERFACE)
1038 /*** IUnknown methods ***/
1039 #define IMAPIContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1040 #define IMAPIContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
1041 #define IMAPIContainer_Release(p) (p)->lpVtbl->Release(p)
1042 /*** IMAPIProp methods ***/
1043 #define IMAPIContainer_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1044 #define IMAPIContainer_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1045 #define IMAPIContainer_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1046 #define IMAPIContainer_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1047 #define IMAPIContainer_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1048 #define IMAPIContainer_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1049 #define IMAPIContainer_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1050 #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)
1051 #define IMAPIContainer_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1052 #define IMAPIContainer_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1053 #define IMAPIContainer_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1054 /*** IMAPIContainer methods ***/
1055 #define IMAPIContainer_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b)
1056 #define IMAPIContainer_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b)
1057 #define IMAPIContainer_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
1058 #define IMAPIContainer_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c)
1059 #define IMAPIContainer_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d)
1063 /*****************************************************************************
1064 * IMAPIFolder interface
1066 #define INTERFACE IMAPIFolder
1067 DECLARE_INTERFACE_(IMAPIFolder
,IMAPIContainer
)
1069 /*** IUnknown methods ***/
1070 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
1071 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
1072 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
1073 /*** IMAPIProp methods ***/
1074 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
1075 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
1076 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
1077 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
1078 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
1079 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
1080 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
1081 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
1082 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
1083 LPSPropProblemArray
*lppProbs
) PURE
;
1084 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
1085 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
1086 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
1087 LPMAPINAMEID
**lpppNames
) PURE
;
1088 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
1089 /*** IMAPIContainer methods ***/
1090 STDMETHOD(GetContentsTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
1091 STDMETHOD(GetHierarchyTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
* lppTable
) PURE
;
1092 STDMETHOD(OpenEntry
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, LPCIID lpInterface
, ULONG ulFlags
,
1093 ULONG
* lpulObjType
, LPUNKNOWN
* lppUnk
) PURE
;
1094 STDMETHOD(SetSearchCriteria
)(THIS_ LPSRestriction lpRestriction
, LPENTRYLIST lpContainerList
, ULONG ulSearchFlags
) PURE
;
1095 STDMETHOD(GetSearchCriteria
)(THIS_ ULONG ulFlags
, LPSRestriction
* lppRestriction
, LPENTRYLIST
* lppContainerList
,
1096 ULONG
* lpulSearchState
) PURE
;
1097 /*** IMAPIFolder methods ***/
1098 STDMETHOD(CreateMessage
)(THIS_ LPCIID lpInterface
, ULONG ulFlags
, LPMESSAGE
*lppMessage
) PURE
;
1099 STDMETHOD(CopyMessages
)(THIS_ LPENTRYLIST lpMsgList
, LPCIID lpInterface
, LPVOID lpDestFolder
, ULONG ulUIParam
,
1100 LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1101 STDMETHOD(DeleteMessages
)(THIS_ LPENTRYLIST lpMsgList
, ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1102 STDMETHOD(CreateFolder
)(THIS_ ULONG ulFolderType
, LPSTR lpszFolderName
, LPSTR lpszFolderComment
, LPCIID lpInterface
,
1103 ULONG ulFlags
, LPMAPIFOLDER lppFolder
) PURE
;
1104 STDMETHOD(CopyFolder
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, LPCIID lpInterface
, LPVOID lpDestFolder
,
1105 LPSTR lpszNewFolderName
, ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1106 STDMETHOD(DeleteFolder
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
,
1107 ULONG ulFlags
) PURE
;
1108 STDMETHOD(SetReadFlags
)(THIS_ LPENTRYLIST lpMsgList
, ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1109 STDMETHOD(GetMessageStatus
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, ULONG ulFlags
, ULONG
* lpulMessageStatus
) PURE
;
1110 STDMETHOD(SetMessageStatus
)(THIS_ ULONG cbEntryID
, LPENTRYID lpEntryID
, ULONG ulNewStatus
,
1111 ULONG ulNewStatusMask
, ULONG
* lpulOldStatus
) PURE
;
1112 STDMETHOD(SaveContentsSort
)(THIS_ LPSSortOrderSet lpSortCriteria
, ULONG ulFlags
) PURE
;
1113 STDMETHOD(EmptyFolder
) (THIS_ ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1117 #if !defined(__cplusplus) || defined(CINTERFACE)
1118 /*** IUnknown methods ***/
1119 #define IMAPIFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1120 #define IMAPIFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
1121 #define IMAPIFolder_Release(p) (p)->lpVtbl->Release(p)
1122 /*** IMAPIProp methods ***/
1123 #define IMAPIFolder_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1124 #define IMAPIFolder_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1125 #define IMAPIFolder_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1126 #define IMAPIFolder_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1127 #define IMAPIFolder_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1128 #define IMAPIFolder_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1129 #define IMAPIFolder_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1130 #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)
1131 #define IMAPIFolder_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1132 #define IMAPIFolder_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1133 #define IMAPIFolder_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1134 /*** IMAPIContainer methods ***/
1135 #define IMAPIFolder_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b)
1136 #define IMAPIFolder_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b)
1137 #define IMAPIFolder_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
1138 #define IMAPIFolder_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c)
1139 #define IMAPIFolder_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d)
1140 /*** IMAPIFolder methods ***/
1141 #define IMAPIFolder_CreateMessage(p,a,b,c) (p)->lpVtbl->CreateMessage(p,a,b,c)
1142 #define IMAPIFolder_CopyMessages(p,a,b,c,d,e,f) (p)->lpVtbl->CopyMessages(p,a,b,c,d,e,f)
1143 #define IMAPIFolder_DeleteMessages(p,a,b,c,d) (p)->lpVtbl->DeleteMessages(p,a,b,c,d)
1144 #define IMAPIFolder_CreateFolder(p,a,b,c,d,e,f) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e,f)
1145 #define IMAPIFolder_CopyFolder(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CopyFolder(p,a,b,c,d,e,f,g,h)
1146 #define IMAPIFolder_DeleteFolder(p,a,b,c,d,e) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e)
1147 #define IMAPIFolder_SetReadFlags(p,a,b,c,d) (p)->lpVtbl->SetReadFlags(p,a,b,c,d)
1148 #define IMAPIFolder_GetMessageStatus(p,a,b,c,d) (p)->lpVtbl->GetMessageStatus(p,a,b,c,d)
1149 #define IMAPIFolder_SetMessageStatus(p,a,b,c,d,e) (p)->lpVtbl->SetMessageStatus(p,a,b,c,d,e)
1150 #define IMAPIFolder_SaveContentsSort(p,a,b) (p)->lpVtbl->SaveContentsSort(p,a,b)
1151 #define IMAPIFolder_EmptyFolder(p,a,b,c) (p)->lpVtbl->EmptyFolder(p,a,b,c)
1158 BYTE abEntry
[MAPI_DIM
];
1159 } FLATENTRY
, *LPFLATENTRY
;
1165 BYTE abEntries
[MAPI_DIM
];
1166 } FLATENTRYLIST
, *LPFLATENTRYLIST
;
1178 BYTE abMTSIDs
[MAPI_DIM
];
1179 } FLATMTSIDLIST
, *LPFLATMTSIDLIST
;
1181 typedef struct _ADRENTRY
1185 LPSPropValue rgPropVals
;
1186 } ADRENTRY
, *LPADRENTRY
;
1188 typedef struct _ADRLIST
1191 ADRENTRY aEntries
[MAPI_DIM
];
1192 } ADRLIST
, *LPADRLIST
;
1194 /*****************************************************************************
1195 * IMessage interface
1197 #define INTERFACE IMessage
1198 DECLARE_INTERFACE_(IMessage
,IMAPIProp
)
1200 /*** IUnknown methods ***/
1201 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
1202 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
1203 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
1204 /*** IMAPIProp methods ***/
1205 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
1206 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
1207 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
1208 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
1209 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
1210 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
1211 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
1212 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
1213 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
1214 LPSPropProblemArray
*lppProbs
) PURE
;
1215 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
1216 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
1217 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
1218 LPMAPINAMEID
**lpppNames
) PURE
;
1219 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
1220 /*** IMessage methods ***/
1221 STDMETHOD(GetAttachmentTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
*lppTable
) PURE
;
1222 STDMETHOD(OpenAttach
)(THIS_ ULONG ulAttachmentNum
, LPCIID lpInterface
, ULONG ulFlags
, LPATTACH
*lppAttach
) PURE
;
1223 STDMETHOD(CreateAttach
)(THIS_ LPCIID lpInterface
, ULONG ulFlags
, ULONG
*lpulAttachmentNum
, LPATTACH
*lppAttach
) PURE
;
1224 STDMETHOD(DeleteAttach
)(THIS_ ULONG ulAttachmentNum
, ULONG ulUIParam
, LPMAPIPROGRESS lpProgress
, ULONG ulFlags
) PURE
;
1225 STDMETHOD(GetRecipientTable
)(THIS_ ULONG ulFlags
, LPMAPITABLE
*lppTable
) PURE
;
1226 STDMETHOD(ModifyRecipients
)(THIS_ ULONG ulFlags
, LPADRLIST lpMods
) PURE
;
1227 STDMETHOD(SubmitMessage
)(THIS_ ULONG ulFlags
) PURE
;
1228 STDMETHOD(SetReadFlag
)(THIS_ ULONG ulFlags
) PURE
;
1232 #if !defined(__cplusplus) || defined(CINTERFACE)
1233 /*** IUnknown methods ***/
1234 #define IMessage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1235 #define IMessage_AddRef(p) (p)->lpVtbl->AddRef(p)
1236 #define IMessage_Release(p) (p)->lpVtbl->Release(p)
1237 /*** IMAPIProp methods ***/
1238 #define IMessage_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1239 #define IMessage_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1240 #define IMessage_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1241 #define IMessage_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1242 #define IMessage_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1243 #define IMessage_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1244 #define IMessage_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1245 #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)
1246 #define IMessage_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1247 #define IMessage_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1248 #define IMessage_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1249 /*** IMessage methods ***/
1250 #define IMessage_GetAttachmentTable(p,a,b) (p)->lpVtbl->GetAttachmentTable(p,a,b)
1251 #define IMessage_OpenAttach(p,a,b,c,d) (p)->lpVtbl->OpenAttach(p,a,b,c,d)
1252 #define IMessage_CreateAttach(p,a,b,c,d) (p)->lpVtbl->CreateAttach(p,a,b,c,d)
1253 #define IMessage_DeleteAttach(p,a,b,c,d) (p)->lpVtbl->DeleteAttach(p,a,b,c,d)
1254 #define IMessage_GetRecipientTable(p,a,b) (p)->lpVtbl->GetRecipientTable(p,a,b)
1255 #define IMessage_ModifyRecipients(p,a,b) (p)->lpVtbl->ModifyRecipients(p,a,b)
1256 #define IMessage_SubmitMessage(p,a) (p)->lpVtbl->SubmitMessage(p,a)
1257 #define IMessage_SetReadFlag(p,a) (p)->lpVtbl->SetReadFlag(p,a)
1261 /* Message flags (PR_MESSAGE_FLAGS) */
1263 #define MSGFLAG_READ 0x00000001U
1264 #define MSGFLAG_UNMODIFIED 0x00000002U
1265 #define MSGFLAG_SUBMIT 0x00000004U
1266 #define MSGFLAG_UNSENT 0x00000008U
1267 #define MSGFLAG_HASATTACH 0x00000010U
1268 #define MSGFLAG_FROMME 0x00000020U
1270 /*****************************************************************************
1273 #define INTERFACE IAttach
1274 DECLARE_INTERFACE_(IAttach
,IMAPIProp
)
1276 /*** IUnknown methods ***/
1277 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
1278 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
1279 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
1280 /*** IMAPIProp methods ***/
1281 STDMETHOD(GetLastError
)(THIS_ HRESULT hRes
, ULONG ulFlags
, LPMAPIERROR
*lppErr
) PURE
;
1282 STDMETHOD(SaveChanges
)(THIS_ ULONG ulFlags
) PURE
;
1283 STDMETHOD(GetProps
)(THIS_ LPSPropTagArray lpPropTags
, ULONG ulFlags
, ULONG
*lpValues
, LPSPropValue
*lppProps
) PURE
;
1284 STDMETHOD(GetPropList
)(THIS_ ULONG ulFlags
, LPSPropTagArray
*lppPropTagArray
) PURE
;
1285 STDMETHOD(OpenProperty
)(THIS_ ULONG ulPropTag
, LPCIID lpIid
, ULONG ulOpts
, ULONG ulFlags
, LPUNKNOWN
*lppUnk
) PURE
;
1286 STDMETHOD(SetProps
)(THIS_ ULONG cValues
, LPSPropValue lpProps
, LPSPropProblemArray
*lppProbs
) PURE
;
1287 STDMETHOD(DeleteProps
)(THIS_ LPSPropTagArray lpPropTags
, LPSPropProblemArray
*lppProbs
) PURE
;
1288 STDMETHOD(CopyTo
)(THIS_ ULONG ciidExclude
, LPCIID lpIid
, LPSPropTagArray lpProps
, ULONG ulParam
,
1289 LPMAPIPROGRESS lpProgress
, LPCIID lpIface
,LPVOID lpDest
, ULONG ulFlags
,
1290 LPSPropProblemArray
*lppProbs
) PURE
;
1291 STDMETHOD(CopyProps
)(THIS_ LPSPropTagArray lpIncludeProps
, ULONG ulParam
, LPMAPIPROGRESS lpProgress
,
1292 LPCIID lpIid
, LPVOID lpDestObj
, ULONG ulFlags
, LPSPropProblemArray
*lppProblems
) PURE
;
1293 STDMETHOD(GetNamesFromIDs
)(THIS_ LPSPropTagArray
*lppPropTags
, LPGUID lpIid
, ULONG ulFlags
, ULONG
*lpCount
,
1294 LPMAPINAMEID
**lpppNames
) PURE
;
1295 STDMETHOD(GetIDsFromNames
)(THIS_ ULONG cPropNames
, LPMAPINAMEID
*lppNames
, ULONG ulFlags
, LPSPropTagArray
*lppPropTags
) PURE
;
1299 #if !defined(__cplusplus) || defined(CINTERFACE)
1300 /*** IUnknown methods ***/
1301 #define IAttach_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1302 #define IAttach_AddRef(p) (p)->lpVtbl->AddRef(p)
1303 #define IAttach_Release(p) (p)->lpVtbl->Release(p)
1304 /*** IMAPIProp methods ***/
1305 #define IAttach_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1306 #define IAttach_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1307 #define IAttach_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1308 #define IAttach_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1309 #define IAttach_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1310 #define IAttach_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1311 #define IAttach_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1312 #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)
1313 #define IAttach_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1314 #define IAttach_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1315 #define IAttach_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1318 /* Attachment flags */
1320 #define NO_ATTACHMENT 0x00000000U
1321 #define ATTACH_BY_VALUE 0x00000001U
1323 #endif /*MAPIDEFS_H*/