widl: Add support for function parameter flags to SLTG typelib generator.
[wine.git] / include / mapidefs.h
blobe3e2bd40b5ff78d9a06e2ed09cd77144a4071dc8
1 /*
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
20 #ifndef MAPIDEFS_H
21 #define MAPIDEFS_H
23 #include <windows.h>
24 #include <winerror.h>
25 #include <objbase.h>
26 #include <stddef.h>
28 /* Some types from other headers */
29 #ifndef __LHANDLE
30 #define __LHANDLE
31 typedef ULONG_PTR LHANDLE, *LPLHANDLE;
32 #endif
34 #ifndef _tagCY_DEFINED
35 #define _tagCY_DEFINED
36 typedef union tagCY
38 struct
40 ULONG Lo;
41 LONG Hi;
42 } DUMMYSTRUCTNAME;
43 LONGLONG int64;
44 } CY;
45 typedef CY CURRENCY;
46 #endif /* _tagCY_DEFINED */
49 #ifndef _FILETIME_
50 #define _FILETIME_
51 typedef struct _FILETIME
53 DWORD dwLowDateTime;
54 DWORD dwHighDateTime;
55 } FILETIME, *PFILETIME, *LPFILETIME;
56 #endif
58 /* Memory allocation routines */
59 typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG,LPVOID*);
60 typedef SCODE (WINAPI ALLOCATEMORE)(ULONG,LPVOID,LPVOID*);
61 typedef ULONG (WINAPI FREEBUFFER)(LPVOID);
63 typedef ALLOCATEBUFFER *LPALLOCATEBUFFER;
64 typedef ALLOCATEMORE *LPALLOCATEMORE;
65 typedef FREEBUFFER *LPFREEBUFFER;
67 /* MAPI exposed interfaces */
68 typedef const IID *LPCIID;
70 typedef struct IAddrBook IAddrBook;
71 typedef IAddrBook *LPADRBOOK;
72 typedef struct IABContainer IABContainer;
73 typedef IABContainer *LPABCONT;
74 typedef struct IAttach *LPATTACH;
75 typedef struct IDistList IDistList;
76 typedef IDistList *LPDISTLIST;
77 typedef struct IMailUser IMailUser;
78 typedef IMailUser *LPMAILUSER;
79 typedef struct IMAPIAdviseSink *LPMAPIADVISESINK;
80 typedef struct IMAPIContainer *LPMAPICONTAINER;
81 typedef struct IMAPIFolder *LPMAPIFOLDER;
82 typedef struct IMAPIProgress IMAPIProgress;
83 typedef IMAPIProgress *LPMAPIPROGRESS;
84 typedef struct IMAPIStatus IMAPIStatus;
85 typedef IMAPIStatus *LPMAPISTATUS;
86 typedef struct IMessage *LPMESSAGE;
87 typedef struct IProfSect IProfSect;
88 typedef IProfSect *LPPROFSECT;
89 typedef struct IProviderAdmin IProviderAdmin;
90 typedef IProviderAdmin *LPPROVIDERADMIN;
92 #ifndef MAPI_DIM
93 # define MAPI_DIM 1 /* Default to one dimension for variable length arrays */
94 #endif
96 /* Flags for abFlags[0] */
97 #define MAPI_NOTRESERVED 0x08
98 #define MAPI_NOW 0x10
99 #define MAPI_THISSESSION 0x20
100 #define MAPI_NOTRECIP 0x40
101 #define MAPI_SHORTTERM 0x80
103 /* Flags for abFlags[1] */
104 #define MAPI_COMPOUND 0x80
106 typedef struct _ENTRYID
108 BYTE abFlags[4];
109 BYTE ab[MAPI_DIM];
110 } ENTRYID, *LPENTRYID;
112 /* MAPI GUID's */
113 typedef struct _MAPIUID
115 BYTE ab[sizeof(GUID)];
116 } MAPIUID, *LPMAPIUID;
118 #define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID)))
120 #define MAPI_ONE_OFF_UID { 0x81,0x2b,0x1f,0xa4,0xbe,0xa3,0x10,0x19,0x9d,0x6e, \
121 0x00,0xdd,0x01,0x0f,0x54,0x02 }
122 #define MAPI_ONE_OFF_UNICODE 0x8000
123 #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
125 /* Object types */
126 #define MAPI_STORE 1U
127 #define MAPI_ADDRBOOK 2U
128 #define MAPI_FOLDER 3U
129 #define MAPI_ABCONT 4U
130 #define MAPI_MESSAGE 5U
131 #define MAPI_MAILUSER 6U
132 #define MAPI_ATTACH 7U
133 #define MAPI_DISTLIST 8U
134 #define MAPI_PROFSECT 9U
135 #define MAPI_STATUS 10U
136 #define MAPI_SESSION 11U
137 #define MAPI_FORMINFO 12U
139 /* Flags for various calls */
140 #define MAPI_MODIFY 0x00000001U /* Object can be modified */
141 #define MAPI_CREATE 0x00000002U /* Object can be created */
142 #define MAPI_ACCESS_MODIFY MAPI_MODIFY /* Want write access */
143 #define MAPI_ACCESS_READ 0x00000002U /* Want read access */
144 #define MAPI_ACCESS_DELETE 0x00000004U /* Want delete access */
145 #define MAPI_ACCESS_CREATE_HIERARCHY 0x00000008U
146 #define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U
147 #define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U
148 #define MAPI_USE_DEFAULT 0x00000040U
149 #define MAPI_UNICODE 0x80000000U /* Strings in this call are Unicode */
151 #if defined (UNICODE) || defined (__WINESRC__)
152 #define fMapiUnicode MAPI_UNICODE
153 #else
154 #define fMapiUnicode 0U
155 #endif
157 /* IMAPISession::OpenMessageStore() flags */
158 #define MDB_NO_DIALOG 0x00000001
160 /* Types of message receivers */
161 #ifndef MAPI_ORIG
162 #define MAPI_ORIG 0 /* The original author */
163 #define MAPI_TO 1 /* The primary message receiver */
164 #define MAPI_CC 2 /* A carbon copy receiver */
165 #define MAPI_BCC 3 /* A blind carbon copy receiver */
166 #define MAPI_P1 0x10000000 /* A message resend */
167 #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */
168 #endif
170 #ifndef cchProfileNameMax
171 #define cchProfileNameMax 64 /* Maximum length of a profile name */
172 #define cchProfilePassMax 64 /* Maximum length of a profile password */
173 #endif
175 /* Properties: These are the contents of cells in MAPI tables, as well as the
176 * values returned when object properties are queried.
179 /* Property types */
180 #define PT_UNSPECIFIED 0U
181 #define PT_NULL 1U
182 #define PT_I2 2U
183 #define PT_SHORT PT_I2
184 #define PT_LONG 3U
185 #define PT_I4 PT_LONG
186 #define PT_R4 4U
187 #define PT_FLOAT PT_R4
188 #define PT_DOUBLE 5U
189 #define PT_R8 PT_DOUBLE
190 #define PT_CURRENCY 6U
191 #define PT_APPTIME 7U
192 #define PT_ERROR 10U
193 #define PT_BOOLEAN 11U
194 #define PT_OBJECT 13U
195 #define PT_I8 20U
196 #define PT_LONGLONG PT_I8
197 #define PT_STRING8 30U
198 #define PT_UNICODE 31U
199 #define PT_SYSTIME 64U
200 #define PT_CLSID 72U
201 #define PT_BINARY 258U
203 #define MV_FLAG 0x1000 /* This property type is multi-valued (an array) */
204 #define MV_INSTANCE 0x2000
205 #define MVI_FLAG (MV_FLAG|MV_INSTANCE)
206 #define MVI_PROP(t) ((t)|MVI_FLAG)
208 #ifndef WINE_NO_UNICODE_MACROS
209 # ifdef UNICODE
210 # define PT_TSTRING PT_UNICODE
211 # define PT_MV_TSTRING (MV_FLAG|PT_UNICODE)
212 # define LPSZ lpszW
213 # define LPPSZ lppszW
214 # define MVSZ MVszW
215 # else
216 # define PT_TSTRING PT_STRING8
217 # define PT_MV_TSTRING (MV_FLAG|PT_STRING8)
218 # define LPSZ lpszA
219 # define LPPSZ lppszA
220 # define MVSZ MVszA
221 # endif
222 #endif
224 #define PROP_TYPE_MASK 0xFFFFU
225 #define PROP_TYPE(t) ((t) & PROP_TYPE_MASK)
226 #define PROP_ID(t) ((t) >> 16)
227 #define PROP_TAG(t,id) (((id) << 16) | t)
228 #define PROP_ID_NULL 0
229 #define PROP_ID_INVALID 0xFFFF
230 #define PR_NULL PROP_TAG(PT_NULL, PROP_ID_NULL)
232 #define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ)
234 /* Multi-valued property types */
235 #define PT_MV_I2 (MV_FLAG|PT_I2)
236 #define PT_MV_SHORT PT_MV_I2
237 #define PT_MV_LONG (MV_FLAG|PT_LONG)
238 #define PT_MV_I4 PT_MV_LONG
239 #define PT_MV_R4 (MV_FLAG|PT_R4)
240 #define PT_MV_FLOAT PT_MV_R4
241 #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
242 #define PT_MV_R8 PT_MV_DOUBLE
243 #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
244 #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
245 #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
246 #define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
247 #define PT_MV_BINARY (MV_FLAG|PT_BINARY)
248 #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
249 #define PT_MV_CLSID (MV_FLAG|PT_CLSID)
250 #define PT_MV_I8 (MV_FLAG|PT_I8)
251 #define PT_MV_LONGLONG PT_MV_I8
254 /* The property tag structure. This describes a list of columns */
255 typedef struct _SPropTagArray
257 ULONG cValues; /* Number of elements in aulPropTag */
258 ULONG aulPropTag[MAPI_DIM]; /* Property tags */
259 } SPropTagArray, *LPSPropTagArray;
261 #define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG))
262 #define CbSPropTagArray(p) CbNewSPropTagArray((p)->cValues)
263 #define SizedSPropTagArray(n,id) \
264 struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id
266 /* Multi-valued PT_APPTIME property value */
267 typedef struct _SAppTimeArray
269 ULONG cValues; /* Number of doubles in lpat */
270 double *lpat; /* Pointer to double array of length cValues */
271 } SAppTimeArray;
273 /* PT_BINARY property value */
274 typedef struct _SBinary
276 ULONG cb; /* Number of bytes in lpb */
277 LPBYTE lpb; /* Pointer to byte array of length cb */
278 } SBinary, *LPSBinary;
280 /* Multi-valued PT_BINARY property value */
281 typedef struct _SBinaryArray
283 ULONG cValues; /* Number of SBinarys in lpbin */
284 SBinary *lpbin; /* Pointer to SBinary array of length cValues */
285 } SBinaryArray;
287 typedef SBinaryArray ENTRYLIST, *LPENTRYLIST;
289 /* Multi-valued PT_CY property value */
290 typedef struct _SCurrencyArray
292 ULONG cValues; /* Number of CYs in lpcu */
293 CY *lpcur; /* Pointer to CY array of length cValues */
294 } SCurrencyArray;
296 /* Multi-valued PT_SYSTIME property value */
297 typedef struct _SDateTimeArray
299 ULONG cValues; /* Number of FILETIMEs in lpft */
300 FILETIME *lpft; /* Pointer to FILETIME array of length cValues */
301 } SDateTimeArray;
303 /* Multi-valued PT_DOUBLE property value */
304 typedef struct _SDoubleArray
306 ULONG cValues; /* Number of doubles in lpdbl */
307 double *lpdbl; /* Pointer to double array of length cValues */
308 } SDoubleArray;
310 /* Multi-valued PT_CLSID property value */
311 typedef struct _SGuidArray
313 ULONG cValues; /* Number of GUIDs in lpguid */
314 GUID *lpguid; /* Pointer to GUID array of length cValues */
315 } SGuidArray;
317 /* Multi-valued PT_LONGLONG property value */
318 typedef struct _SLargeIntegerArray
320 ULONG cValues; /* Number of long64s in lpli */
321 LARGE_INTEGER *lpli; /* Pointer to long64 array of length cValues */
322 } SLargeIntegerArray;
324 /* Multi-valued PT_LONG property value */
325 typedef struct _SLongArray
327 ULONG cValues; /* Number of longs in lpl */
328 LONG *lpl; /* Pointer to long array of length cValues */
329 } SLongArray;
331 /* Multi-valued PT_STRING8 property value */
332 typedef struct _SLPSTRArray
334 ULONG cValues; /* Number of Ascii strings in lppszA */
335 LPSTR *lppszA; /* Pointer to Ascii string array of length cValues */
336 } SLPSTRArray;
338 /* Multi-valued PT_FLOAT property value */
339 typedef struct _SRealArray
341 ULONG cValues; /* Number of floats in lpflt */
342 float *lpflt; /* Pointer to float array of length cValues */
343 } SRealArray;
345 /* Multi-valued PT_SHORT property value */
346 typedef struct _SShortArray
348 ULONG cValues; /* Number of shorts in lpb */
349 short int *lpi; /* Pointer to short array of length cValues */
350 } SShortArray;
352 /* Multi-valued PT_UNICODE property value */
353 typedef struct _SWStringArray
355 ULONG cValues; /* Number of Unicode strings in lppszW */
356 LPWSTR *lppszW; /* Pointer to Unicode string array of length cValues */
357 } SWStringArray;
359 /* A property value */
360 typedef union _PV
362 short int i;
363 LONG l;
364 ULONG ul;
365 float flt;
366 double dbl;
367 unsigned short b;
368 CY cur;
369 double at;
370 FILETIME ft;
371 LPSTR lpszA;
372 SBinary bin;
373 LPWSTR lpszW;
374 LPGUID lpguid;
375 LARGE_INTEGER li;
376 SShortArray MVi;
377 SLongArray MVl;
378 SRealArray MVflt;
379 SDoubleArray MVdbl;
380 SCurrencyArray MVcur;
381 SAppTimeArray MVat;
382 SDateTimeArray MVft;
383 SBinaryArray MVbin;
384 SLPSTRArray MVszA;
385 SWStringArray MVszW;
386 SGuidArray MVguid;
387 SLargeIntegerArray MVli;
388 SCODE err;
389 LONG x;
390 } __UPV;
392 /* Property value structure. This is essentially a mini-Variant */
393 typedef struct _SPropValue
395 ULONG ulPropTag; /* The property type */
396 ULONG dwAlignPad; /* Alignment, treat as reserved */
397 union _PV Value; /* The property value */
398 } SPropValue, *LPSPropValue;
400 /* Structure describing a table row (a collection of property values) */
401 typedef struct _SRow
403 ULONG ulAdrEntryPad; /* Padding, treat as reserved */
404 ULONG cValues; /* Count of property values in lpProbs */
405 LPSPropValue lpProps; /* Pointer to an array of property values of length cValues */
406 } SRow, *LPSRow;
408 /* Structure describing a set of table rows */
409 typedef struct _SRowSet
411 ULONG cRows; /* Count of rows in aRow */
412 SRow aRow[MAPI_DIM]; /* Array of rows of length cRows */
413 } SRowSet, *LPSRowSet;
415 #define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow))
416 #define CbSRowSet(p) CbNewSRowSet((p)->cRows)
417 #define SizedSRowSet(n,id) \
418 struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id
420 /* Structure describing a problem with a property */
421 typedef struct _SPropProblem
423 ULONG ulIndex; /* Index of the property */
424 ULONG ulPropTag; /* Property tag of the property */
425 SCODE scode; /* Error code of the problem */
426 } SPropProblem, *LPSPropProblem;
428 /* A collection of property problems */
429 typedef struct _SPropProblemArray
431 ULONG cProblem; /* Number of problems in aProblem */
432 SPropProblem aProblem[MAPI_DIM]; /* Array of problems of length cProblem */
433 } SPropProblemArray, *LPSPropProblemArray;
435 /* FPropContainsProp flags */
436 #define FL_FULLSTRING ((ULONG)0x00000) /* Exact string match */
437 #define FL_SUBSTRING ((ULONG)0x00001) /* Substring match */
438 #define FL_PREFIX ((ULONG)0x00002) /* Prefix match */
439 #define FL_IGNORECASE ((ULONG)0x10000) /* Case insensitive */
440 #define FL_IGNORENONSPACE ((ULONG)0x20000) /* Ignore non spacing characters */
441 #define FL_LOOSE ((ULONG)0x40000) /* Try very hard to match */
444 /* Table types returned by IMAPITable_GetStatus() */
445 #define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */
446 #define TBLTYPE_KEYSET 1U /* Table has a fixed number of rows, but row values may change */
447 #define TBLTYPE_DYNAMIC 2U /* Table values and the number of rows may change */
449 /* Table status returned by IMAPITable_GetStatus() */
450 #define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */
451 #define TBLSTAT_QCHANGED 7U /* Table data has changed as expected */
452 #define TBLSTAT_SORTING 9U /* Table is being asynchronously sorted */
453 #define TBLSTAT_SORT_ERROR 10U /* An error occurred while sorting the table */
454 #define TBLSTAT_SETTING_COLS 11U /* Table columns are being asynchronously changed */
455 #define TBLSTAT_SETCOL_ERROR 13U /* An error occurred during column changing */
456 #define TBLSTAT_RESTRICTING 14U /* Table rows are being asynchronously restricted */
457 #define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */
459 /* Flags for IMAPITable operations that can be asynchronous */
460 #define TBL_NOWAIT 1U /* Perform the operation asynchronously */
461 #define TBL_BATCH 2U /* Perform the operation when the results are needed */
462 #define TBL_ASYNC TBL_NOWAIT /* Synonym for TBL_NOWAIT */
464 /* Flags for IMAPITable_FindRow() */
465 #define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */
467 /* Table bookmarks */
468 typedef ULONG BOOKMARK;
470 #define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */
471 #define BOOKMARK_CURRENT ((BOOKMARK)1) /* The current table row */
472 #define BOOKMARK_END ((BOOKMARK)2) /* The last row */
474 /* Row restrictions */
475 typedef struct _SRestriction* LPSRestriction;
477 typedef struct _SAndRestriction
479 ULONG cRes;
480 LPSRestriction lpRes;
481 } SAndRestriction;
483 typedef struct _SBitMaskRestriction
485 ULONG relBMR;
486 ULONG ulPropTag;
487 ULONG ulMask;
488 } SBitMaskRestriction;
490 typedef struct _SCommentRestriction
492 ULONG cValues;
493 LPSRestriction lpRes;
494 LPSPropValue lpProp;
495 } SCommentRestriction;
497 #define RELOP_LT 0U
498 #define RELOP_LE 1U
499 #define RELOP_GT 2U
500 #define RELOP_GE 3U
501 #define RELOP_EQ 4U
502 #define RELOP_NE 5U
503 #define RELOP_RE 6U
505 typedef struct _SComparePropsRestriction
507 ULONG relop;
508 ULONG ulPropTag1;
509 ULONG ulPropTag2;
510 } SComparePropsRestriction;
512 typedef struct _SContentRestriction
514 ULONG ulFuzzyLevel;
515 ULONG ulPropTag;
516 LPSPropValue lpProp;
517 } SContentRestriction;
519 typedef struct _SExistRestriction
521 ULONG ulReserved1;
522 ULONG ulPropTag;
523 ULONG ulReserved2;
524 } SExistRestriction;
526 typedef struct _SNotRestriction
528 ULONG ulReserved;
529 LPSRestriction lpRes;
530 } SNotRestriction;
532 typedef struct _SOrRestriction
534 ULONG cRes;
535 LPSRestriction lpRes;
536 } SOrRestriction;
538 typedef struct _SPropertyRestriction
540 ULONG relop;
541 ULONG ulPropTag;
542 LPSPropValue lpProp;
543 } SPropertyRestriction;
545 typedef struct _SSizeRestriction
547 ULONG relop;
548 ULONG ulPropTag;
549 ULONG cb;
550 } SSizeRestriction;
552 typedef struct _SSubRestriction
554 ULONG ulSubObject;
555 LPSRestriction lpRes;
556 } SSubRestriction;
558 /* Restriction types */
559 #define RES_AND 0U
560 #define RES_OR 1U
561 #define RES_NOT 2U
562 #define RES_CONTENT 3U
563 #define RES_PROPERTY 4U
564 #define RES_COMPAREPROPS 5U
565 #define RES_BITMASK 6U
566 #define RES_SIZE 7U
567 #define RES_EXIST 8U
568 #define RES_SUBRESTRICTION 9U
569 #define RES_COMMENT 10U
571 typedef struct _SRestriction
573 ULONG rt;
574 union
576 SAndRestriction resAnd;
577 SBitMaskRestriction resBitMask;
578 SCommentRestriction resComment;
579 SComparePropsRestriction resCompareProps;
580 SContentRestriction resContent;
581 SExistRestriction resExist;
582 SNotRestriction resNot;
583 SOrRestriction resOr;
584 SPropertyRestriction resProperty;
585 SSizeRestriction resSize;
586 SSubRestriction resSub;
587 } res;
588 } SRestriction;
590 /* Errors */
591 typedef struct _MAPIERROR
593 ULONG ulVersion; /* Mapi version */
594 #if defined (UNICODE) || defined (__WINESRC__)
595 LPWSTR lpszError; /* Error and component strings. These are Ascii */
596 LPWSTR lpszComponent; /* unless the MAPI_UNICODE flag is passed in */
597 #else
598 LPSTR lpszError;
599 LPSTR lpszComponent;
600 #endif
601 ULONG ulLowLevelError;
602 ULONG ulContext;
603 } MAPIERROR, *LPMAPIERROR;
605 /* Sorting */
606 #define TABLE_SORT_ASCEND 0U
607 #define TABLE_SORT_DESCEND 1U
608 #define TABLE_SORT_COMBINE 2U
610 typedef struct _SSortOrder
612 ULONG ulPropTag;
613 ULONG ulOrder;
614 } SSortOrder, *LPSSortOrder;
616 typedef struct _SSortOrderSet
618 ULONG cSorts;
619 ULONG cCategories;
620 ULONG cExpanded;
621 SSortOrder aSort[MAPI_DIM];
622 } SSortOrderSet, * LPSSortOrderSet;
624 #define MNID_ID 0
625 #define MNID_STRING 1
627 typedef struct _MAPINAMEID
629 LPGUID lpguid;
630 ULONG ulKind;
631 union
633 LONG lID;
634 LPWSTR lpwstrName;
635 } Kind;
636 } MAPINAMEID, *LPMAPINAMEID;
638 /* Desired notification types (bitflags) */
639 #define fnevCriticalError ((ULONG)0x00000001)
640 #define fnevNewMail ((ULONG)0x00000002)
641 #define fnevObjectCreated ((ULONG)0x00000004)
642 #define fnevObjectDeleted ((ULONG)0x00000008)
643 #define fnevObjectModified ((ULONG)0x00000010)
644 #define fnevObjectMoved ((ULONG)0x00000020)
645 #define fnevObjectCopied ((ULONG)0x00000040)
646 #define fnevSearchComplete ((ULONG)0x00000080)
647 #define fnevTableModified ((ULONG)0x00000100)
648 #define fnevStatusObjectModified ((ULONG)0x00000200)
649 #define fnevReservedForMapi ((ULONG)0x40000000)
650 #define fnevExtended ((ULONG)0x80000000)
652 /* Type of notification event */
653 #define TABLE_CHANGED 1U
654 #define TABLE_ERROR 2U
655 #define TABLE_ROW_ADDED 3U
656 #define TABLE_ROW_DELETED 4U
657 #define TABLE_ROW_MODIFIED 5U
658 #define TABLE_SORT_DONE 6U
659 #define TABLE_RESTRICT_DONE 7U
660 #define TABLE_SETCOL_DONE 8U
661 #define TABLE_RELOAD 9U
663 /* fnevCriticalError notification */
664 typedef struct _ERROR_NOTIFICATION
666 ULONG cbEntryID;
667 LPENTRYID lpEntryID;
668 SCODE scode;
669 ULONG ulFlags;
670 LPMAPIERROR lpMAPIError;
671 } ERROR_NOTIFICATION;
673 /* fnevNewMail notification */
674 typedef struct _NEWMAIL_NOTIFICATION
676 ULONG cbEntryID;
677 LPENTRYID lpEntryID;
678 ULONG cbParentID;
679 LPENTRYID lpParentID;
680 ULONG ulFlags;
681 #if defined (UNICODE) || defined (__WINESRC__)
682 LPWSTR lpszMessageClass;
683 #else
684 LPSTR lpszMessageClass;
685 #endif
686 ULONG ulMessageFlags;
687 } NEWMAIL_NOTIFICATION;
689 /* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */
690 typedef struct _OBJECT_NOTIFICATION
692 ULONG cbEntryID;
693 LPENTRYID lpEntryID;
694 ULONG ulObjType;
695 ULONG cbParentID;
696 LPENTRYID lpParentID;
697 ULONG cbOldID;
698 LPENTRYID lpOldID;
699 ULONG cbOldParentID;
700 LPENTRYID lpOldParentID;
701 LPSPropTagArray lpPropTagArray;
702 } OBJECT_NOTIFICATION;
704 /* fnevTableModified notification */
705 typedef struct _TABLE_NOTIFICATION
707 ULONG ulTableEvent;
708 HRESULT hResult;
709 SPropValue propIndex;
710 SPropValue propPrior;
711 SRow row;
712 ULONG ulPad;
713 } TABLE_NOTIFICATION;
715 /* fnevExtended notification */
716 typedef struct _EXTENDED_NOTIFICATION
718 ULONG ulEvent;
719 ULONG cb;
720 LPBYTE pbEventParameters;
721 } EXTENDED_NOTIFICATION;
723 /* fnevStatusObjectModified notification */
724 typedef struct
726 ULONG cbEntryID;
727 LPENTRYID lpEntryID;
728 ULONG cValues;
729 LPSPropValue lpPropVals;
730 } STATUS_OBJECT_NOTIFICATION;
732 /* The notification structure passed to advise sinks */
733 typedef struct _NOTIFICATION
735 ULONG ulEventType;
736 ULONG ulAlignPad;
737 union
739 ERROR_NOTIFICATION err;
740 NEWMAIL_NOTIFICATION newmail;
741 OBJECT_NOTIFICATION obj;
742 TABLE_NOTIFICATION tab;
743 EXTENDED_NOTIFICATION ext;
744 STATUS_OBJECT_NOTIFICATION statobj;
745 } info;
746 } NOTIFICATION, *LPNOTIFICATION;
748 typedef LONG (WINAPI NOTIFCALLBACK)(LPVOID,ULONG,LPNOTIFICATION);
749 typedef NOTIFCALLBACK *LPNOTIFCALLBACK;
751 /* IMAPIContainer::OpenEntry flags */
752 #define MAPI_BEST_ACCESS 0x00000010
754 /*****************************************************************************
755 * IMAPITable interface
757 * This is the read-only 'view' over an I(MAPI)TableData object.
759 #define INTERFACE IMAPITable
760 DECLARE_INTERFACE_(IMAPITable,IUnknown)
762 /*** IUnknown methods ***/
763 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
764 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
765 STDMETHOD_(ULONG,Release)(THIS) PURE;
766 /*** IMAPITable methods ***/
767 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppError) PURE;
768 STDMETHOD(Advise)(THIS_ ULONG ulMask, LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE;
769 STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE;
770 STDMETHOD(GetStatus)(THIS_ ULONG *lpStatus, ULONG *lpType) PURE;
771 STDMETHOD(SetColumns)(THIS_ LPSPropTagArray lpProps, ULONG ulFlags) PURE;
772 STDMETHOD(QueryColumns)(THIS_ ULONG ulFlags, LPSPropTagArray *lpCols) PURE;
773 STDMETHOD(GetRowCount)(THIS_ ULONG ulFlags, ULONG *lpCount) PURE;
774 STDMETHOD(SeekRow)(THIS_ BOOKMARK lpStart, LONG lRows, LONG *lpSeeked) PURE;
775 STDMETHOD(SeekRowApprox)(THIS_ ULONG ulNum, ULONG ulDenom) PURE;
776 STDMETHOD(QueryPosition)(THIS_ ULONG *lpRow, ULONG *lpNum, ULONG *lpDenom) PURE;
777 STDMETHOD(FindRow)(THIS_ LPSRestriction lpRestrict, BOOKMARK lpOrigin, ULONG ulFlags) PURE;
778 STDMETHOD(Restrict)(THIS_ LPSRestriction lpRestrict, ULONG ulFlags) PURE;
779 STDMETHOD(CreateBookmark)(THIS_ BOOKMARK *lppPos) PURE;
780 STDMETHOD(FreeBookmark)(THIS_ BOOKMARK lpPos) PURE;
781 STDMETHOD(SortTable)(THIS_ LPSSortOrderSet lpSortOpts, ULONG ulFlags) PURE;
782 STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet *lppSortOpts) PURE;
783 STDMETHOD(QueryRows)(THIS_ LONG lRows, ULONG ulFlags, LPSRowSet *lppRows) PURE;
784 STDMETHOD(Abort) (THIS) PURE;
785 STDMETHOD(ExpandRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulRows,
786 ULONG ulFlags, LPSRowSet *lppRows, ULONG *lpMore) PURE;
787 STDMETHOD(CollapseRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulFlags, ULONG *lpRows) PURE;
788 STDMETHOD(WaitForCompletion)(THIS_ ULONG ulFlags, ULONG ulTime, ULONG *lpState) PURE;
789 STDMETHOD(GetCollapseState)(THIS_ ULONG ulFlags, ULONG cbKey, LPBYTE lpKey,
790 ULONG *lpStateLen, LPBYTE *lpState) PURE;
791 STDMETHOD(SetCollapseState)(THIS_ ULONG ulFlags, ULONG ulLen,
792 LPBYTE lpStart, BOOKMARK *lppWhere) PURE;
794 #undef INTERFACE
796 #if !defined(__cplusplus) || defined(CINTERFACE)
797 /*** IUnknown methods ***/
798 #define IMAPITable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
799 #define IMAPITable_AddRef(p) (p)->lpVtbl->AddRef(p)
800 #define IMAPITable_Release(p) (p)->lpVtbl->Release(p)
801 /*** IMAPITable methods ***/
802 #define IMAPITable_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
803 #define IMAPITable_Advise(p,a,b,c) (p)->lpVtbl->Advise(p,a,b,c)
804 #define IMAPITable_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
805 #define IMAPITable_GetStatus(p,a,b) (p)->lpVtbl->GetStatus(p,a,b)
806 #define IMAPITable_SetColumns(p,a,b) (p)->lpVtbl->SetColumns(p,a,b)
807 #define IMAPITable_QueryColumns(p,a,b) (p)->lpVtbl->QueryColumns(p,a,b)
808 #define IMAPITable_GetRowCount(p,a,b) (p)->lpVtbl->GetRowCount(p,a,b)
809 #define IMAPITable_SeekRow(p,a,b) (p)->lpVtbl->SeekRow(p,a,b)
810 #define IMAPITable_SeekRowApprox(p,a,b) (p)->lpVtbl->SeekRowApprox(p,a,b)
811 #define IMAPITable_QueryPosition(p,a,b) (p)->lpVtbl->QueryPosition(p,a,b)
812 #define IMAPITable_FindRow(p,a,b,c) (p)->lpVtbl->FindRow(p,a,b,c)
813 #define IMAPITable_Restrict(p,a,b) (p)->lpVtbl->Recstrict(p,a,b)
814 #define IMAPITable_CreateBookmark(p,a) (p)->lpVtbl->CreateBookmark(p,a)
815 #define IMAPITable_FreeBookmark(p,a) (p)->lpVtbl->FreeBookmark(p,a)
816 #define IMAPITable_SortTable(p,a,b) (p)->lpVtbl->SortTable(p,a,b)
817 #define IMAPITable_QuerySortOrder(p,a) (p)->lpVtbl->QuerySortOrder(p,a)
818 #define IMAPITable_QueryRows(p,a,b,c) (p)->lpVtbl->QueryRows(p,a,b,c)
819 #define IMAPITable_Abort(p) (p)->lpVtbl->Abort(p)
820 #define IMAPITable_ExpandRow(p,a,b,c,d,e,f) (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f)
821 #define IMAPITable_CollapseRow(p,a,b,c,d) (p)->lpVtbl->CollapseRow(p,a,b,c,d)
822 #define IMAPITable_WaitForCompletion(p,a,b,c) (p)->lpVtbl->WaitForCompletion(p,a,b,c)
823 #define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e)
824 #define IMAPITable_SetCollapseState(p,a,b,c,d) (p)->lpVtbl->SetCollapseState(p,a,b,c,d)
825 #endif
827 typedef IMAPITable *LPMAPITABLE;
829 /*****************************************************************************
830 * IMAPIAdviseSink interface
832 #define INTERFACE IMAPIAdviseSink
833 DECLARE_INTERFACE_(IMAPIAdviseSink,IUnknown)
835 /*** IUnknown methods ***/
836 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
837 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
838 STDMETHOD_(ULONG,Release)(THIS) PURE;
839 /*** IMAPIAdviseSink methods ***/
840 STDMETHOD(OnNotify)(THIS_ ULONG NumNotif, LPNOTIFICATION lpNotif) PURE;
842 #undef INTERFACE
844 #if !defined(__cplusplus) || defined(CINTERFACE)
845 /*** IUnknown methods ***/
846 #define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
847 #define IMAPIAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p)
848 #define IMAPIAdviseSink_Release(p) (p)->lpVtbl->Release(p)
849 /*** IMAPIAdviseSink methods ***/
850 #define IMAPIAdviseSink_OnNotify(p,a,b) (p)->lpVtbl->OnNotify(p,a,b)
851 #endif
853 /*****************************************************************************
854 * IMAPIProp interface
856 #define INTERFACE IMAPIProp
857 DECLARE_INTERFACE_(IMAPIProp,IUnknown)
859 /*** IUnknown methods ***/
860 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
861 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
862 STDMETHOD_(ULONG,Release)(THIS) PURE;
863 /*** IMAPIProp methods ***/
864 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
865 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
866 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
867 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
868 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
869 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
870 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
871 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
872 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
873 LPSPropProblemArray *lppProbs) PURE;
874 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
875 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
876 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
877 LPMAPINAMEID **lpppNames) PURE;
878 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
880 #undef INTERFACE
882 #if !defined(__cplusplus) || defined(CINTERFACE)
883 /*** IUnknown methods ***/
884 #define IMAPIProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
885 #define IMAPIProp_AddRef(p) (p)->lpVtbl->AddRef(p)
886 #define IMAPIProp_Release(p) (p)->lpVtbl->Release(p)
887 /*** IMAPIProp methods ***/
888 #define IMAPIProp_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
889 #define IMAPIProp_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
890 #define IMAPIProp_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
891 #define IMAPIProp_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
892 #define IMAPIProp_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
893 #define IMAPIProp_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
894 #define IMAPIProp_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
895 #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)
896 #define IMAPIProp_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
897 #define IMAPIProp_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
898 #define IMAPIProp_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
899 #endif
901 typedef IMAPIProp *LPMAPIPROP;
903 #define KEEP_OPEN_READONLY (0x00000001U)
904 #define KEEP_OPEN_READWRITE (0x00000002U)
905 #define FORCE_SAVE (0x00000004U)
907 /*****************************************************************************
908 * IMsgStore interface
910 #define INTERFACE IMsgStore
911 DECLARE_INTERFACE_(IMsgStore,IMAPIProp)
913 /*** IUnknown methods ***/
914 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
915 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
916 STDMETHOD_(ULONG,Release)(THIS) PURE;
917 /*** IMAPIProp methods ***/
918 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
919 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
920 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
921 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
922 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
923 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
924 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
925 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
926 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
927 LPSPropProblemArray *lppProbs) PURE;
928 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
929 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
930 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
931 LPMAPINAMEID **lpppNames) PURE;
932 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
933 /*** IMsgStore methods ***/
934 STDMETHOD(Advise)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink,
935 ULONG * lpulConnection) PURE;
936 STDMETHOD(Unadvise)(THIS_ ULONG ulConnection) PURE;
937 STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2,
938 ULONG ulFlags, ULONG * lpulResult) PURE;
939 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG *lpulObjType,
940 LPUNKNOWN *lppUnk) PURE;
941 STDMETHOD(SetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE;
942 STDMETHOD(GetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG * lpcbEntryID, LPENTRYID *lppEntryID,
943 LPSTR *lppszExplicitClass) PURE;
944 STDMETHOD(GetReceiveFolderTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
945 STDMETHOD(StoreLogoff)(THIS_ ULONG * lpulFlags) PURE;
946 STDMETHOD(AbortSubmit)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags) PURE;
947 STDMETHOD(GetOutgoingQueue)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
948 STDMETHOD(SetLockState)(THIS_ LPMESSAGE lpMessage, ULONG ulLockState) PURE;
949 STDMETHOD(FinishedMsg)(THIS_ ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE;
950 STDMETHOD(NotifyNewMail)(THIS_ LPNOTIFICATION lpNotification) PURE;
952 #undef INTERFACE
954 #if !defined(__cplusplus) || defined(CINTERFACE)
955 /*** IUnknown methods ***/
956 #define IMsgStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
957 #define IMsgStore_AddRef(p) (p)->lpVtbl->AddRef(p)
958 #define IMsgStore_Release(p) (p)->lpVtbl->Release(p)
959 /*** IMAPIProp methods ***/
960 #define IMsgStore_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
961 #define IMsgStore_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
962 #define IMsgStore_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
963 #define IMsgStore_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
964 #define IMsgStore_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
965 #define IMsgStore_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
966 #define IMsgStore_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
967 #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)
968 #define IMsgStore_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
969 #define IMsgStore_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
970 #define IMsgStore_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
971 /*** IMsgStore methods ***/
972 #define IMsgStore_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e)
973 #define IMsgStore_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
974 #define IMsgStore_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f)
975 #define IMsgStore_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
976 #define IMsgStore_SetReceiveFolder(p,a,b,c,d) (p)->lpVtbl->SetReceiveFolder(p,a,b,c,d)
977 #define IMsgStore_GetReceiveFolder(p,a,b,c,d,e) (p)->lpVtbl->GetReceiveFolder(p,a,b,c,d,e)
978 #define IMsgStore_GetReceiveFolderTable(p,a,b) (p)->lpVtbl->GetReceiveFolderTable(p,a,b)
979 #define IMsgStore_StoreLogoff(p,a) (p)->lpVtbl->StoreLogoff(p,a)
980 #define IMsgStore_AbortSubmit(p,a,b,c) (p)->lpVtbl->AbortSubmit(p,a,b,c)
981 #define IMsgStore_GetOutgoingQueue(p,a,b) (p)->lpVtbl->GetOutgoingQueue(p,a,b)
982 #define IMsgStore_SetLockState(p,a,b) (p)->lpVtbl->SetLockState(p,a,b)
983 #define IMsgStore_FinishedMsg(p,a,b,c) (p)->lpVtbl->FinishedMsg(p,a,b,c)
984 #define IMsgStore_NotifyNewMail(p,a) (p)->lpVtbl->NotifyNewMail(p,a)
986 #endif
988 typedef IMsgStore *LPMDB;
990 /*****************************************************************************
991 * IMAPIContainer interface
993 #define INTERFACE IMAPIContainer
994 DECLARE_INTERFACE_(IMAPIContainer,IMAPIProp)
996 /*** IUnknown methods ***/
997 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
998 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
999 STDMETHOD_(ULONG,Release)(THIS) PURE;
1000 /*** IMAPIProp methods ***/
1001 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
1002 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
1003 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
1004 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
1005 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
1006 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
1007 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
1008 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
1009 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
1010 LPSPropProblemArray *lppProbs) PURE;
1011 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
1012 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
1013 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
1014 LPMAPINAMEID **lpppNames) PURE;
1015 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
1016 /*** IMAPIContainer methods ***/
1017 STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
1018 STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
1019 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags,
1020 ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE;
1021 STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE;
1022 STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList,
1023 ULONG * lpulSearchState) PURE;
1025 #undef INTERFACE
1027 #if !defined(__cplusplus) || defined(CINTERFACE)
1028 /*** IUnknown methods ***/
1029 #define IMAPIContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1030 #define IMAPIContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
1031 #define IMAPIContainer_Release(p) (p)->lpVtbl->Release(p)
1032 /*** IMAPIProp methods ***/
1033 #define IMAPIContainer_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1034 #define IMAPIContainer_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1035 #define IMAPIContainer_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1036 #define IMAPIContainer_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1037 #define IMAPIContainer_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1038 #define IMAPIContainer_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1039 #define IMAPIContainer_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1040 #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)
1041 #define IMAPIContainer_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1042 #define IMAPIContainer_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1043 #define IMAPIContainer_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1044 /*** IMAPIContainer methods ***/
1045 #define IMAPIContainer_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b)
1046 #define IMAPIContainer_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b)
1047 #define IMAPIContainer_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
1048 #define IMAPIContainer_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c)
1049 #define IMAPIContainer_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d)
1051 #endif
1053 /*****************************************************************************
1054 * IMAPIFolder interface
1056 #define INTERFACE IMAPIFolder
1057 DECLARE_INTERFACE_(IMAPIFolder,IMAPIContainer)
1059 /*** IUnknown methods ***/
1060 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1061 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1062 STDMETHOD_(ULONG,Release)(THIS) PURE;
1063 /*** IMAPIProp methods ***/
1064 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
1065 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
1066 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
1067 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
1068 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
1069 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
1070 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
1071 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
1072 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
1073 LPSPropProblemArray *lppProbs) PURE;
1074 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
1075 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
1076 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
1077 LPMAPINAMEID **lpppNames) PURE;
1078 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
1079 /*** IMAPIContainer methods ***/
1080 STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
1081 STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE;
1082 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags,
1083 ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE;
1084 STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE;
1085 STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList,
1086 ULONG * lpulSearchState) PURE;
1087 /*** IMAPIFolder methods ***/
1088 STDMETHOD(CreateMessage)(THIS_ LPCIID lpInterface, ULONG ulFlags, LPMESSAGE *lppMessage) PURE;
1089 STDMETHOD(CopyMessages)(THIS_ LPENTRYLIST lpMsgList, LPCIID lpInterface, LPVOID lpDestFolder, ULONG ulUIParam,
1090 LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1091 STDMETHOD(DeleteMessages)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1092 STDMETHOD(CreateFolder)(THIS_ ULONG ulFolderType, LPSTR lpszFolderName, LPSTR lpszFolderComment, LPCIID lpInterface,
1093 ULONG ulFlags, LPMAPIFOLDER lppFolder) PURE;
1094 STDMETHOD(CopyFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, LPVOID lpDestFolder,
1095 LPSTR lpszNewFolderName, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1096 STDMETHOD(DeleteFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulUIParam, LPMAPIPROGRESS lpProgress,
1097 ULONG ulFlags) PURE;
1098 STDMETHOD(SetReadFlags)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1099 STDMETHOD(GetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG * lpulMessageStatus) PURE;
1100 STDMETHOD(SetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulNewStatus,
1101 ULONG ulNewStatusMask, ULONG * lpulOldStatus) PURE;
1102 STDMETHOD(SaveContentsSort)(THIS_ LPSSortOrderSet lpSortCriteria, ULONG ulFlags) PURE;
1103 STDMETHOD(EmptyFolder) (THIS_ ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1105 #undef INTERFACE
1107 #if !defined(__cplusplus) || defined(CINTERFACE)
1108 /*** IUnknown methods ***/
1109 #define IMAPIFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1110 #define IMAPIFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
1111 #define IMAPIFolder_Release(p) (p)->lpVtbl->Release(p)
1112 /*** IMAPIProp methods ***/
1113 #define IMAPIFolder_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1114 #define IMAPIFolder_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1115 #define IMAPIFolder_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1116 #define IMAPIFolder_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1117 #define IMAPIFolder_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1118 #define IMAPIFolder_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1119 #define IMAPIFolder_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1120 #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)
1121 #define IMAPIFolder_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1122 #define IMAPIFolder_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1123 #define IMAPIFolder_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1124 /*** IMAPIContainer methods ***/
1125 #define IMAPIFolder_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b)
1126 #define IMAPIFolder_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b)
1127 #define IMAPIFolder_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
1128 #define IMAPIFolder_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c)
1129 #define IMAPIFolder_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d)
1130 /*** IMAPIFolder methods ***/
1131 #define IMAPIFolder_CreateMessage(p,a,b,c) (p)->lpVtbl->CreateMessage(p,a,b,c)
1132 #define IMAPIFolder_CopyMessages(p,a,b,c,d,e,f) (p)->lpVtbl->CopyMessages(p,a,b,c,d,e,f)
1133 #define IMAPIFolder_DeleteMessages(p,a,b,c,d) (p)->lpVtbl->DeleteMessages(p,a,b,c,d)
1134 #define IMAPIFolder_CreateFolder(p,a,b,c,d,e,f) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e,f)
1135 #define IMAPIFolder_CopyFolder(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CopyFolder(p,a,b,c,d,e,f,g,h)
1136 #define IMAPIFolder_DeleteFolder(p,a,b,c,d,e) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e)
1137 #define IMAPIFolder_SetReadFlags(p,a,b,c,d) (p)->lpVtbl->SetReadFlags(p,a,b,c,d)
1138 #define IMAPIFolder_GetMessageStatus(p,a,b,c,d) (p)->lpVtbl->GetMessageStatus(p,a,b,c,d)
1139 #define IMAPIFolder_SetMessageStatus(p,a,b,c,d,e) (p)->lpVtbl->SetMessageStatus(p,a,b,c,d,e)
1140 #define IMAPIFolder_SaveContentsSort(p,a,b) (p)->lpVtbl->SaveContentsSort(p,a,b)
1141 #define IMAPIFolder_EmptyFolder(p,a,b,c) (p)->lpVtbl->EmptyFolder(p,a,b,c)
1143 #endif
1145 typedef struct
1147 ULONG cb;
1148 BYTE abEntry[MAPI_DIM];
1149 } FLATENTRY, *LPFLATENTRY;
1151 typedef struct
1153 ULONG cEntries;
1154 ULONG cbEntries;
1155 BYTE abEntries[MAPI_DIM];
1156 } FLATENTRYLIST, *LPFLATENTRYLIST;
1158 typedef struct
1160 ULONG cb;
1161 BYTE ab[MAPI_DIM];
1162 } MTSID, *LPMTSID;
1164 typedef struct
1166 ULONG cMTSIDs;
1167 ULONG cbMTSIDs;
1168 BYTE abMTSIDs[MAPI_DIM];
1169 } FLATMTSIDLIST, *LPFLATMTSIDLIST;
1171 typedef struct _ADRENTRY
1173 ULONG ulReserved1;
1174 ULONG cValues;
1175 LPSPropValue rgPropVals;
1176 } ADRENTRY, *LPADRENTRY;
1178 typedef struct _ADRLIST
1180 ULONG cEntries;
1181 ADRENTRY aEntries[MAPI_DIM];
1182 } ADRLIST, *LPADRLIST;
1184 /*****************************************************************************
1185 * IMessage interface
1187 #define INTERFACE IMessage
1188 DECLARE_INTERFACE_(IMessage,IMAPIProp)
1190 /*** IUnknown methods ***/
1191 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1192 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1193 STDMETHOD_(ULONG,Release)(THIS) PURE;
1194 /*** IMAPIProp methods ***/
1195 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
1196 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
1197 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
1198 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
1199 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
1200 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
1201 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
1202 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
1203 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
1204 LPSPropProblemArray *lppProbs) PURE;
1205 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
1206 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
1207 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
1208 LPMAPINAMEID **lpppNames) PURE;
1209 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
1210 /*** IMessage methods ***/
1211 STDMETHOD(GetAttachmentTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE;
1212 STDMETHOD(OpenAttach)(THIS_ ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, LPATTACH *lppAttach) PURE;
1213 STDMETHOD(CreateAttach)(THIS_ LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach) PURE;
1214 STDMETHOD(DeleteAttach)(THIS_ ULONG ulAttachmentNum, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
1215 STDMETHOD(GetRecipientTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE;
1216 STDMETHOD(ModifyRecipients)(THIS_ ULONG ulFlags, LPADRLIST lpMods) PURE;
1217 STDMETHOD(SubmitMessage)(THIS_ ULONG ulFlags) PURE;
1218 STDMETHOD(SetReadFlag)(THIS_ ULONG ulFlags) PURE;
1220 #undef INTERFACE
1222 #if !defined(__cplusplus) || defined(CINTERFACE)
1223 /*** IUnknown methods ***/
1224 #define IMessage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1225 #define IMessage_AddRef(p) (p)->lpVtbl->AddRef(p)
1226 #define IMessage_Release(p) (p)->lpVtbl->Release(p)
1227 /*** IMAPIProp methods ***/
1228 #define IMessage_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1229 #define IMessage_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1230 #define IMessage_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1231 #define IMessage_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1232 #define IMessage_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1233 #define IMessage_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1234 #define IMessage_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1235 #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)
1236 #define IMessage_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1237 #define IMessage_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1238 #define IMessage_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1239 /*** IMessage methods ***/
1240 #define IMessage_GetAttachmentTable(p,a,b) (p)->lpVtbl->GetAttachmentTable(p,a,b)
1241 #define IMessage_OpenAttach(p,a,b,c,d) (p)->lpVtbl->OpenAttach(p,a,b,c,d)
1242 #define IMessage_CreateAttach(p,a,b,c,d) (p)->lpVtbl->CreateAttach(p,a,b,c,d)
1243 #define IMessage_DeleteAttach(p,a,b,c,d) (p)->lpVtbl->DeleteAttach(p,a,b,c,d)
1244 #define IMessage_GetRecipientTable(p,a,b) (p)->lpVtbl->GetRecipientTable(p,a,b)
1245 #define IMessage_ModifyRecipients(p,a,b) (p)->lpVtbl->ModifyRecipients(p,a,b)
1246 #define IMessage_SubmitMessage(p,a) (p)->lpVtbl->SubmitMessage(p,a)
1247 #define IMessage_SetReadFlag(p,a) (p)->lpVtbl->SetReadFlag(p,a)
1249 #endif
1251 /* Message flags (PR_MESSAGE_FLAGS) */
1253 #define MSGFLAG_READ 0x00000001U
1254 #define MSGFLAG_UNMODIFIED 0x00000002U
1255 #define MSGFLAG_SUBMIT 0x00000004U
1256 #define MSGFLAG_UNSENT 0x00000008U
1257 #define MSGFLAG_HASATTACH 0x00000010U
1258 #define MSGFLAG_FROMME 0x00000020U
1260 /*****************************************************************************
1261 * IAttach interface
1263 #define INTERFACE IAttach
1264 DECLARE_INTERFACE_(IAttach,IMAPIProp)
1266 /*** IUnknown methods ***/
1267 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
1268 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1269 STDMETHOD_(ULONG,Release)(THIS) PURE;
1270 /*** IMAPIProp methods ***/
1271 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE;
1272 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE;
1273 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
1274 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE;
1275 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
1276 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE;
1277 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE;
1278 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam,
1279 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags,
1280 LPSPropProblemArray *lppProbs) PURE;
1281 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
1282 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE;
1283 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
1284 LPMAPINAMEID **lpppNames) PURE;
1285 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
1287 #undef INTERFACE
1289 #if !defined(__cplusplus) || defined(CINTERFACE)
1290 /*** IUnknown methods ***/
1291 #define IAttach_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1292 #define IAttach_AddRef(p) (p)->lpVtbl->AddRef(p)
1293 #define IAttach_Release(p) (p)->lpVtbl->Release(p)
1294 /*** IMAPIProp methods ***/
1295 #define IAttach_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
1296 #define IAttach_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a)
1297 #define IAttach_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d)
1298 #define IAttach_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b)
1299 #define IAttach_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e)
1300 #define IAttach_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c)
1301 #define IAttach_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b)
1302 #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)
1303 #define IAttach_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g)
1304 #define IAttach_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e)
1305 #define IAttach_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d)
1306 #endif
1308 /* Attachment flags */
1310 #define NO_ATTACHMENT 0x00000000U
1311 #define ATTACH_BY_VALUE 0x00000001U
1313 #endif /*MAPIDEFS_H*/