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