VirtualBox

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

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

Devices/Main: vmsvga updates

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

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