VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Wine/include/mapidefs.h@ 33281

Last change on this file since 33281 was 25949, checked in by vboxsync, 15 years ago

crOpenGL: update to wine 1.1.36 and disable unnecessary fbo state poll

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette