VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/shaderlib/wine/include/mapidefs.h

最後變更 在這個檔案是 53206,由 vboxsync 提交於 10 年 前

Devices/vmsvga: header fixes

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

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