Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmapidefs.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 1998 Justin Bradford 00003 * Copyright (c) 2009 Owen Rudge for CodeWeavers 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00018 */ 00019 00020 #ifndef MAPIDEFS_H 00021 #define MAPIDEFS_H 00022 00023 #ifndef __WINESRC__ 00024 # include <windows.h> 00025 #endif 00026 00027 #include <winerror.h> 00028 #include <objbase.h> 00029 #include <stddef.h> 00030 00031 /* Some types from other headers */ 00032 #ifndef __LHANDLE 00033 #define __LHANDLE 00034 typedef ULONG_PTR LHANDLE, *LPLHANDLE; 00035 #endif 00036 00037 #ifndef _tagCY_DEFINED 00038 #define _tagCY_DEFINED 00039 typedef union tagCY 00040 { 00041 struct 00042 { 00043 #ifdef WORDS_BIGENDIAN 00044 LONG Hi; 00045 ULONG Lo; 00046 #else 00047 ULONG Lo; 00048 LONG Hi; 00049 #endif 00050 } DUMMYSTRUCTNAME; 00051 LONGLONG int64; 00052 } CY; 00053 typedef CY CURRENCY; 00054 #endif /* _tagCY_DEFINED */ 00055 00056 00057 #ifndef _FILETIME_ 00058 #define _FILETIME_ 00059 typedef struct _FILETIME 00060 { 00061 #ifdef WORDS_BIGENDIAN 00062 DWORD dwHighDateTime; 00063 DWORD dwLowDateTime; 00064 #else 00065 DWORD dwLowDateTime; 00066 DWORD dwHighDateTime; 00067 #endif 00068 } FILETIME, *PFILETIME, *LPFILETIME; 00069 #endif 00070 00071 /* Memory allocation routines */ 00072 typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG,LPVOID*); 00073 typedef SCODE (WINAPI ALLOCATEMORE)(ULONG,LPVOID,LPVOID*); 00074 typedef ULONG (WINAPI FREEBUFFER)(LPVOID); 00075 00076 typedef ALLOCATEBUFFER *LPALLOCATEBUFFER; 00077 typedef ALLOCATEMORE *LPALLOCATEMORE; 00078 typedef FREEBUFFER *LPFREEBUFFER; 00079 00080 /* MAPI exposed interfaces */ 00081 typedef const IID *LPCIID; 00082 00083 typedef struct IAddrBook IAddrBook; 00084 typedef IAddrBook *LPADRBOOK; 00085 typedef struct IABContainer IABContainer; 00086 typedef IABContainer *LPABCONT; 00087 typedef struct IAttach *LPATTACH; 00088 typedef struct IDistList IDistList; 00089 typedef IDistList *LPDISTLIST; 00090 typedef struct IMailUser IMailUser; 00091 typedef IMailUser *LPMAILUSER; 00092 typedef struct IMAPIAdviseSink *LPMAPIADVISESINK; 00093 typedef struct IMAPIContainer *LPMAPICONTAINER; 00094 typedef struct IMAPIFolder *LPMAPIFOLDER; 00095 typedef struct IMAPIProgress IMAPIProgress; 00096 typedef IMAPIProgress *LPMAPIPROGRESS; 00097 typedef struct IMAPIStatus IMAPIStatus; 00098 typedef IMAPIStatus *LPMAPISTATUS; 00099 typedef struct IMessage *LPMESSAGE; 00100 typedef struct IProfSect IProfSect; 00101 typedef IProfSect *LPPROFSECT; 00102 typedef struct IProviderAdmin IProviderAdmin; 00103 typedef IProviderAdmin *LPPROVIDERADMIN; 00104 00105 #ifndef MAPI_DIM 00106 # define MAPI_DIM 1 /* Default to one dimension for variable length arrays */ 00107 #endif 00108 00109 /* Flags for abFlags[0] */ 00110 #define MAPI_NOTRESERVED 0x08 00111 #define MAPI_NOW 0x10 00112 #define MAPI_THISSESSION 0x20 00113 #define MAPI_NOTRECIP 0x40 00114 #define MAPI_SHORTTERM 0x80 00115 00116 /* Flags for abFlags[1] */ 00117 #define MAPI_COMPOUND 0x80 00118 00119 typedef struct _ENTRYID 00120 { 00121 BYTE abFlags[4]; 00122 BYTE ab[MAPI_DIM]; 00123 } ENTRYID, *LPENTRYID; 00124 00125 /* MAPI GUID's */ 00126 typedef struct _MAPIUID 00127 { 00128 BYTE ab[sizeof(GUID)]; 00129 } MAPIUID, *LPMAPIUID; 00130 00131 #define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID))) 00132 00133 #define MAPI_ONE_OFF_UID { 0x81,0x2b,0x1f,0xa4,0xbe,0xa3,0x10,0x19,0x9d,0x6e, \ 00134 0x00,0xdd,0x01,0x0f,0x54,0x02 } 00135 #define MAPI_ONE_OFF_UNICODE 0x8000 00136 #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001 00137 00138 /* Object types */ 00139 #define MAPI_STORE 1U 00140 #define MAPI_ADDRBOOK 2U 00141 #define MAPI_FOLDER 3U 00142 #define MAPI_ABCONT 4U 00143 #define MAPI_MESSAGE 5U 00144 #define MAPI_MAILUSER 6U 00145 #define MAPI_ATTACH 7U 00146 #define MAPI_DISTLIST 8U 00147 #define MAPI_PROFSECT 9U 00148 #define MAPI_STATUS 10U 00149 #define MAPI_SESSION 11U 00150 #define MAPI_FORMINFO 12U 00151 00152 /* Flags for various calls */ 00153 #define MAPI_MODIFY 0x00000001U /* Object can be modified */ 00154 #define MAPI_CREATE 0x00000002U /* Object can be created */ 00155 #define MAPI_ACCESS_MODIFY MAPI_MODIFY /* Want write access */ 00156 #define MAPI_ACCESS_READ 0x00000002U /* Want read access */ 00157 #define MAPI_ACCESS_DELETE 0x00000004U /* Want delete access */ 00158 #define MAPI_ACCESS_CREATE_HIERARCHY 0x00000008U 00159 #define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U 00160 #define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U 00161 #define MAPI_USE_DEFAULT 0x00000040U 00162 #define MAPI_UNICODE 0x80000000U /* Strings in this call are Unicode */ 00163 00164 #if defined (UNICODE) || defined (__WINESRC__) 00165 #define fMapiUnicode MAPI_UNICODE 00166 #else 00167 #define fMapiUnicode 0U 00168 #endif 00169 00170 /* IMAPISession::OpenMessageStore() flags */ 00171 #define MDB_NO_DIALOG 0x00000001 00172 00173 /* Types of message receivers */ 00174 #ifndef MAPI_ORIG 00175 #define MAPI_ORIG 0 /* The original author */ 00176 #define MAPI_TO 1 /* The primary message receiver */ 00177 #define MAPI_CC 2 /* A carbon copy receiver */ 00178 #define MAPI_BCC 3 /* A blind carbon copy receiver */ 00179 #define MAPI_P1 0x10000000 /* A message resend */ 00180 #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */ 00181 #endif 00182 00183 #ifndef cchProfileNameMax 00184 #define cchProfileNameMax 64 /* Maximum length of a profile name */ 00185 #define cchProfilePassMax 64 /* Maximum length of a profile password */ 00186 #endif 00187 00188 /* Properties: The are the contents of cells in MAPI tables, as well as the 00189 * values returned when object properties are queried. 00190 */ 00191 00192 /* Property types */ 00193 #define PT_UNSPECIFIED 0U 00194 #define PT_NULL 1U 00195 #define PT_I2 2U 00196 #define PT_SHORT PT_I2 00197 #define PT_LONG 3U 00198 #define PT_I4 PT_LONG 00199 #define PT_R4 4U 00200 #define PT_FLOAT PT_R4 00201 #define PT_DOUBLE 5U 00202 #define PT_R8 PT_DOUBLE 00203 #define PT_CURRENCY 6U 00204 #define PT_APPTIME 7U 00205 #define PT_ERROR 10U 00206 #define PT_BOOLEAN 11U 00207 #define PT_OBJECT 13U 00208 #define PT_I8 20U 00209 #define PT_LONGLONG PT_I8 00210 #define PT_STRING8 30U 00211 #define PT_UNICODE 31U 00212 #define PT_SYSTIME 64U 00213 #define PT_CLSID 72U 00214 #define PT_BINARY 258U 00215 00216 #define MV_FLAG 0x1000 /* This property type is multi-valued (an array) */ 00217 #define MV_INSTANCE 0x2000 00218 #define MVI_FLAG (MV_FLAG|MV_INSTANCE) 00219 #define MVI_PROP(t) ((t)|MVI_FLAG) 00220 00221 #ifndef WINE_NO_UNICODE_MACROS 00222 # ifdef UNICODE 00223 # define PT_TSTRING PT_UNICODE 00224 # define PT_MV_TSTRING (MV_FLAG|PT_UNICODE) 00225 # define LPSZ lpszW 00226 # define LPPSZ lppszW 00227 # define MVSZ MVszW 00228 # else 00229 # define PT_TSTRING PT_STRING8 00230 # define PT_MV_TSTRING (MV_FLAG|PT_STRING8) 00231 # define LPSZ lpszA 00232 # define LPPSZ lppszA 00233 # define MVSZ MVszA 00234 # endif 00235 #endif 00236 00237 #define PROP_TYPE_MASK 0xFFFFU 00238 #define PROP_TYPE(t) ((t) & PROP_TYPE_MASK) 00239 #define PROP_ID(t) ((t) >> 16) 00240 #define PROP_TAG(t,id) (((id) << 16) | t) 00241 #define PROP_ID_NULL 0 00242 #define PROP_ID_INVALID 0xFFFF 00243 #define PR_NULL PROP_TAG(PT_NULL, PROP_ID_NULL) 00244 00245 #define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ) 00246 00247 /* Multi-valued property types */ 00248 #define PT_MV_I2 (MV_FLAG|PT_I2) 00249 #define PT_MV_SHORT PT_MV_I2 00250 #define PT_MV_LONG (MV_FLAG|PT_LONG) 00251 #define PT_MV_I4 PT_MV_LONG 00252 #define PT_MV_R4 (MV_FLAG|PT_R4) 00253 #define PT_MV_FLOAT PT_MV_R4 00254 #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE) 00255 #define PT_MV_R8 PT_MV_DOUBLE 00256 #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY) 00257 #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME) 00258 #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME) 00259 #define PT_MV_STRING8 (MV_FLAG|PT_STRING8) 00260 #define PT_MV_BINARY (MV_FLAG|PT_BINARY) 00261 #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE) 00262 #define PT_MV_CLSID (MV_FLAG|PT_CLSID) 00263 #define PT_MV_I8 (MV_FLAG|PT_I8) 00264 #define PT_MV_LONGLONG PT_MV_I8 00265 00266 00267 /* The property tag structure. This describes a list of columns */ 00268 typedef struct _SPropTagArray 00269 { 00270 ULONG cValues; /* Number of elements in aulPropTag */ 00271 ULONG aulPropTag[MAPI_DIM]; /* Property tags */ 00272 } SPropTagArray, *LPSPropTagArray; 00273 00274 #define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG)) 00275 #define CbSPropTagArray(p) CbNewSPropTagArray((p)->cValues) 00276 #define SizedSPropTagArray(n,id) \ 00277 struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id 00278 00279 /* Multi-valued PT_APPTIME property value */ 00280 typedef struct _SAppTimeArray 00281 { 00282 ULONG cValues; /* Number of doubles in lpat */ 00283 double *lpat; /* Pointer to double array of length cValues */ 00284 } SAppTimeArray; 00285 00286 /* PT_BINARY property value */ 00287 typedef struct _SBinary 00288 { 00289 ULONG cb; /* Number of bytes in lpb */ 00290 LPBYTE lpb; /* Pointer to byte array of length cb */ 00291 } SBinary, *LPSBinary; 00292 00293 /* Multi-valued PT_BINARY property value */ 00294 typedef struct _SBinaryArray 00295 { 00296 ULONG cValues; /* Number of SBinarys in lpbin */ 00297 SBinary *lpbin; /* Pointer to SBinary array of length cValues */ 00298 } SBinaryArray; 00299 00300 typedef SBinaryArray ENTRYLIST, *LPENTRYLIST; 00301 00302 /* Multi-valued PT_CY property value */ 00303 typedef struct _SCurrencyArray 00304 { 00305 ULONG cValues; /* Number of CYs in lpcu */ 00306 CY *lpcur; /* Pointer to CY array of length cValues */ 00307 } SCurrencyArray; 00308 00309 /* Multi-valued PT_SYSTIME property value */ 00310 typedef struct _SDateTimeArray 00311 { 00312 ULONG cValues; /* Number of FILETIMEs in lpft */ 00313 FILETIME *lpft; /* Pointer to FILETIME array of length cValues */ 00314 } SDateTimeArray; 00315 00316 /* Multi-valued PT_DOUBLE property value */ 00317 typedef struct _SDoubleArray 00318 { 00319 ULONG cValues; /* Number of doubles in lpdbl */ 00320 double *lpdbl; /* Pointer to double array of length cValues */ 00321 } SDoubleArray; 00322 00323 /* Multi-valued PT_CLSID property value */ 00324 typedef struct _SGuidArray 00325 { 00326 ULONG cValues; /* Number of GUIDs in lpguid */ 00327 GUID *lpguid; /* Pointer to GUID array of length cValues */ 00328 } SGuidArray; 00329 00330 /* Multi-valued PT_LONGLONG property value */ 00331 typedef struct _SLargeIntegerArray 00332 { 00333 ULONG cValues; /* Number of long64s in lpli */ 00334 LARGE_INTEGER *lpli; /* Pointer to long64 array of length cValues */ 00335 } SLargeIntegerArray; 00336 00337 /* Multi-valued PT_LONG property value */ 00338 typedef struct _SLongArray 00339 { 00340 ULONG cValues; /* Number of longs in lpl */ 00341 LONG *lpl; /* Pointer to long array of length cValues */ 00342 } SLongArray; 00343 00344 /* Multi-valued PT_STRING8 property value */ 00345 typedef struct _SLPSTRArray 00346 { 00347 ULONG cValues; /* Number of Ascii strings in lppszA */ 00348 LPSTR *lppszA; /* Pointer to Ascii string array of length cValues */ 00349 } SLPSTRArray; 00350 00351 /* Multi-valued PT_FLOAT property value */ 00352 typedef struct _SRealArray 00353 { 00354 ULONG cValues; /* Number of floats in lpflt */ 00355 float *lpflt; /* Pointer to float array of length cValues */ 00356 } SRealArray; 00357 00358 /* Multi-valued PT_SHORT property value */ 00359 typedef struct _SShortArray 00360 { 00361 ULONG cValues; /* Number of shorts in lpb */ 00362 short int *lpi; /* Pointer to short array of length cValues */ 00363 } SShortArray; 00364 00365 /* Multi-valued PT_UNICODE property value */ 00366 typedef struct _SWStringArray 00367 { 00368 ULONG cValues; /* Number of Unicode strings in lppszW */ 00369 LPWSTR *lppszW; /* Pointer to Unicode string array of length cValues */ 00370 } SWStringArray; 00371 00372 /* A property value */ 00373 typedef union _PV 00374 { 00375 short int i; 00376 LONG l; 00377 ULONG ul; 00378 float flt; 00379 double dbl; 00380 unsigned short b; 00381 CY cur; 00382 double at; 00383 FILETIME ft; 00384 LPSTR lpszA; 00385 SBinary bin; 00386 LPWSTR lpszW; 00387 LPGUID lpguid; 00388 LARGE_INTEGER li; 00389 SShortArray MVi; 00390 SLongArray MVl; 00391 SRealArray MVflt; 00392 SDoubleArray MVdbl; 00393 SCurrencyArray MVcur; 00394 SAppTimeArray MVat; 00395 SDateTimeArray MVft; 00396 SBinaryArray MVbin; 00397 SLPSTRArray MVszA; 00398 SWStringArray MVszW; 00399 SGuidArray MVguid; 00400 SLargeIntegerArray MVli; 00401 SCODE err; 00402 LONG x; 00403 } __UPV; 00404 00405 /* Property value structure. This is essentially a mini-Variant */ 00406 typedef struct _SPropValue 00407 { 00408 ULONG ulPropTag; /* The property type */ 00409 ULONG dwAlignPad; /* Alignment, treat as reserved */ 00410 union _PV Value; /* The property value */ 00411 } SPropValue, *LPSPropValue; 00412 00413 /* Structure describing a table row (a collection of property values) */ 00414 typedef struct _SRow 00415 { 00416 ULONG ulAdrEntryPad; /* Padding, treat as reserved */ 00417 ULONG cValues; /* Count of property values in lpProbs */ 00418 LPSPropValue lpProps; /* Pointer to an array of property values of length cValues */ 00419 } SRow, *LPSRow; 00420 00421 /* Structure describing a set of table rows */ 00422 typedef struct _SRowSet 00423 { 00424 ULONG cRows; /* Count of rows in aRow */ 00425 SRow aRow[MAPI_DIM]; /* Array of rows of length cRows */ 00426 } SRowSet, *LPSRowSet; 00427 00428 #define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow)) 00429 #define CbSRowSet(p) CbNewSRowSet((p)->cRows) 00430 #define SizedSRowSet(n,id) \ 00431 struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id 00432 00433 /* Structure describing a problem with a property */ 00434 typedef struct _SPropProblem 00435 { 00436 ULONG ulIndex; /* Index of the property */ 00437 ULONG ulPropTag; /* Property tag of the property */ 00438 SCODE scode; /* Error code of the problem */ 00439 } SPropProblem, *LPSPropProblem; 00440 00441 /* A collection of property problems */ 00442 typedef struct _SPropProblemArray 00443 { 00444 ULONG cProblem; /* Number of problems in aProblem */ 00445 SPropProblem aProblem[MAPI_DIM]; /* Array of problems of length cProblem */ 00446 } SPropProblemArray, *LPSPropProblemArray; 00447 00448 /* FPropContainsProp flags */ 00449 #define FL_FULLSTRING 0x00000ul /* Exact string match */ 00450 #define FL_SUBSTRING 0x00001ul /* Substring match */ 00451 #define FL_PREFIX 0x00002ul /* Prefix match */ 00452 #define FL_IGNORECASE 0x10000ul /* Case insensitive */ 00453 #define FL_IGNORENONSPACE 0x20000ul /* Ignore non spacing characters */ 00454 #define FL_LOOSE 0x40000ul /* Try very hard to match */ 00455 00456 00457 /* Table types returned by IMAPITable_GetStatus() */ 00458 #define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */ 00459 #define TBLTYPE_KEYSET 1U /* Table has a fixed number of rows, but row values may change */ 00460 #define TBLTYPE_DYNAMIC 2U /* Table values and the number of rows may change */ 00461 00462 /* Table status returned by IMAPITable_GetStatus() */ 00463 #define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */ 00464 #define TBLSTAT_QCHANGED 7U /* Table data has changed as expected */ 00465 #define TBLSTAT_SORTING 9U /* Table is being asynchronously sorted */ 00466 #define TBLSTAT_SORT_ERROR 10U /* An error occurred while sorting the table */ 00467 #define TBLSTAT_SETTING_COLS 11U /* Table columns are being asynchronously changed */ 00468 #define TBLSTAT_SETCOL_ERROR 13U /* An error occurred during column changing */ 00469 #define TBLSTAT_RESTRICTING 14U /* Table rows are being asynchronously restricted */ 00470 #define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */ 00471 00472 /* Flags for IMAPITable operations that can be asynchronous */ 00473 #define TBL_NOWAIT 1U /* Perform the operation asynchronously */ 00474 #define TBL_BATCH 2U /* Perform the operation when the results are needed */ 00475 #define TBL_ASYNC TBL_NOWAIT /* Synonym for TBL_NOWAIT */ 00476 00477 /* Flags for IMAPITable_FindRow() */ 00478 #define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */ 00479 00480 /* Table bookmarks */ 00481 typedef ULONG BOOKMARK; 00482 00483 #define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */ 00484 #define BOOKMARK_CURRENT ((BOOKMARK)1) /* The curent table row */ 00485 #define BOOKMARK_END ((BOOKMARK)2) /* The last row */ 00486 00487 /* Row restrictions */ 00488 typedef struct _SRestriction* LPSRestriction; 00489 00490 typedef struct _SAndRestriction 00491 { 00492 ULONG cRes; 00493 LPSRestriction lpRes; 00494 } SAndRestriction; 00495 00496 typedef struct _SBitMaskRestriction 00497 { 00498 ULONG relBMR; 00499 ULONG ulPropTag; 00500 ULONG ulMask; 00501 } SBitMaskRestriction; 00502 00503 typedef struct _SCommentRestriction 00504 { 00505 ULONG cValues; 00506 LPSRestriction lpRes; 00507 LPSPropValue lpProp; 00508 } SCommentRestriction; 00509 00510 #define RELOP_LT 0U 00511 #define RELOP_LE 1U 00512 #define RELOP_GT 2U 00513 #define RELOP_GE 3U 00514 #define RELOP_EQ 4U 00515 #define RELOP_NE 5U 00516 #define RELOP_RE 6U 00517 00518 typedef struct _SComparePropsRestriction 00519 { 00520 ULONG relop; 00521 ULONG ulPropTag1; 00522 ULONG ulPropTag2; 00523 } SComparePropsRestriction; 00524 00525 typedef struct _SContentRestriction 00526 { 00527 ULONG ulFuzzyLevel; 00528 ULONG ulPropTag; 00529 LPSPropValue lpProp; 00530 } SContentRestriction; 00531 00532 typedef struct _SExistRestriction 00533 { 00534 ULONG ulReserved1; 00535 ULONG ulPropTag; 00536 ULONG ulReserved2; 00537 } SExistRestriction; 00538 00539 typedef struct _SNotRestriction 00540 { 00541 ULONG ulReserved; 00542 LPSRestriction lpRes; 00543 } SNotRestriction; 00544 00545 typedef struct _SOrRestriction 00546 { 00547 ULONG cRes; 00548 LPSRestriction lpRes; 00549 } SOrRestriction; 00550 00551 typedef struct _SPropertyRestriction 00552 { 00553 ULONG relop; 00554 ULONG ulPropTag; 00555 LPSPropValue lpProp; 00556 } SPropertyRestriction; 00557 00558 typedef struct _SSizeRestriction 00559 { 00560 ULONG relop; 00561 ULONG ulPropTag; 00562 ULONG cb; 00563 } SSizeRestriction; 00564 00565 typedef struct _SSubRestriction 00566 { 00567 ULONG ulSubObject; 00568 LPSRestriction lpRes; 00569 } SSubRestriction; 00570 00571 /* Restriction types */ 00572 #define RES_AND 0U 00573 #define RES_OR 1U 00574 #define RES_NOT 2U 00575 #define RES_CONTENT 3U 00576 #define RES_PROPERTY 4U 00577 #define RES_COMPAREPROPS 5U 00578 #define RES_BITMASK 6U 00579 #define RES_SIZE 7U 00580 #define RES_EXIST 8U 00581 #define RES_SUBRESTRICTION 9U 00582 #define RES_COMMENT 10U 00583 00584 typedef struct _SRestriction 00585 { 00586 ULONG rt; 00587 union 00588 { 00589 SAndRestriction resAnd; 00590 SBitMaskRestriction resBitMask; 00591 SCommentRestriction resComment; 00592 SComparePropsRestriction resCompareProps; 00593 SContentRestriction resContent; 00594 SExistRestriction resExist; 00595 SNotRestriction resNot; 00596 SOrRestriction resOr; 00597 SPropertyRestriction resProperty; 00598 SSizeRestriction resSize; 00599 SSubRestriction resSub; 00600 } res; 00601 } SRestriction; 00602 00603 /* Errors */ 00604 typedef struct _MAPIERROR 00605 { 00606 ULONG ulVersion; /* Mapi version */ 00607 #if defined (UNICODE) || defined (__WINESRC__) 00608 LPWSTR lpszError; /* Error and component strings. These are Ascii */ 00609 LPWSTR lpszComponent; /* unless the MAPI_UNICODE flag is passed in */ 00610 #else 00611 LPSTR lpszError; 00612 LPSTR lpszComponent; 00613 #endif 00614 ULONG ulLowLevelError; 00615 ULONG ulContext; 00616 } MAPIERROR, *LPMAPIERROR; 00617 00618 /* Sorting */ 00619 #define TABLE_SORT_ASCEND 0U 00620 #define TABLE_SORT_DESCEND 1U 00621 #define TABLE_SORT_COMBINE 2U 00622 00623 typedef struct _SSortOrder 00624 { 00625 ULONG ulPropTag; 00626 ULONG ulOrder; 00627 } SSortOrder, *LPSSortOrder; 00628 00629 typedef struct _SSortOrderSet 00630 { 00631 ULONG cSorts; 00632 ULONG cCategories; 00633 ULONG cExpanded; 00634 SSortOrder aSort[MAPI_DIM]; 00635 } SSortOrderSet, * LPSSortOrderSet; 00636 00637 #define MNID_ID 0 00638 #define MNID_STRING 1 00639 00640 typedef struct _MAPINAMEID 00641 { 00642 LPGUID lpguid; 00643 ULONG ulKind; 00644 union 00645 { 00646 LONG lID; 00647 LPWSTR lpwstrName; 00648 } Kind; 00649 } MAPINAMEID, *LPMAPINAMEID; 00650 00651 /* Desired notification types (bitflags) */ 00652 #define fnevCriticalError 0x00000001UL 00653 #define fnevNewMail 0x00000002UL 00654 #define fnevObjectCreated 0x00000004UL 00655 #define fnevObjectDeleted 0x00000008UL 00656 #define fnevObjectModified 0x00000010UL 00657 #define fnevObjectMoved 0x00000020UL 00658 #define fnevObjectCopied 0x00000040UL 00659 #define fnevSearchComplete 0x00000080UL 00660 #define fnevTableModified 0x00000100UL 00661 #define fnevStatusObjectModified 0x00000200UL 00662 #define fnevReservedForMapi 0x40000000UL 00663 #define fnevExtended 0x80000000UL 00664 00665 /* Type of notification event */ 00666 #define TABLE_CHANGED 1U 00667 #define TABLE_ERROR 2U 00668 #define TABLE_ROW_ADDED 3U 00669 #define TABLE_ROW_DELETED 4U 00670 #define TABLE_ROW_MODIFIED 5U 00671 #define TABLE_SORT_DONE 6U 00672 #define TABLE_RESTRICT_DONE 7U 00673 #define TABLE_SETCOL_DONE 8U 00674 #define TABLE_RELOAD 9U 00675 00676 /* fnevCriticalError notification */ 00677 typedef struct _ERROR_NOTIFICATION 00678 { 00679 ULONG cbEntryID; 00680 LPENTRYID lpEntryID; 00681 SCODE scode; 00682 ULONG ulFlags; 00683 LPMAPIERROR lpMAPIError; 00684 } ERROR_NOTIFICATION; 00685 00686 /* fnevNewMail notification */ 00687 typedef struct _NEWMAIL_NOTIFICATION 00688 { 00689 ULONG cbEntryID; 00690 LPENTRYID lpEntryID; 00691 ULONG cbParentID; 00692 LPENTRYID lpParentID; 00693 ULONG ulFlags; 00694 #if defined (UNICODE) || defined (__WINESRC__) 00695 LPWSTR lpszMessageClass; 00696 #else 00697 LPSTR lpszMessageClass; 00698 #endif 00699 ULONG ulMessageFlags; 00700 } NEWMAIL_NOTIFICATION; 00701 00702 /* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */ 00703 typedef struct _OBJECT_NOTIFICATION 00704 { 00705 ULONG cbEntryID; 00706 LPENTRYID lpEntryID; 00707 ULONG ulObjType; 00708 ULONG cbParentID; 00709 LPENTRYID lpParentID; 00710 ULONG cbOldID; 00711 LPENTRYID lpOldID; 00712 ULONG cbOldParentID; 00713 LPENTRYID lpOldParentID; 00714 LPSPropTagArray lpPropTagArray; 00715 } OBJECT_NOTIFICATION; 00716 00717 /* fnevTableModified notification */ 00718 typedef struct _TABLE_NOTIFICATION 00719 { 00720 ULONG ulTableEvent; 00721 HRESULT hResult; 00722 SPropValue propIndex; 00723 SPropValue propPrior; 00724 SRow row; 00725 ULONG ulPad; 00726 } TABLE_NOTIFICATION; 00727 00728 /* fnevExtended notification */ 00729 typedef struct _EXTENDED_NOTIFICATION 00730 { 00731 ULONG ulEvent; 00732 ULONG cb; 00733 LPBYTE pbEventParameters; 00734 } EXTENDED_NOTIFICATION; 00735 00736 /* fnevStatusObjectModified notification */ 00737 typedef struct 00738 { 00739 ULONG cbEntryID; 00740 LPENTRYID lpEntryID; 00741 ULONG cValues; 00742 LPSPropValue lpPropVals; 00743 } STATUS_OBJECT_NOTIFICATION; 00744 00745 /* The notification structure passed to advise sinks */ 00746 typedef struct _NOTIFICATION 00747 { 00748 ULONG ulEventType; 00749 ULONG ulAlignPad; 00750 union 00751 { 00752 ERROR_NOTIFICATION err; 00753 NEWMAIL_NOTIFICATION newmail; 00754 OBJECT_NOTIFICATION obj; 00755 TABLE_NOTIFICATION tab; 00756 EXTENDED_NOTIFICATION ext; 00757 STATUS_OBJECT_NOTIFICATION statobj; 00758 } info; 00759 } NOTIFICATION, *LPNOTIFICATION; 00760 00761 typedef LONG (WINAPI NOTIFCALLBACK)(LPVOID,ULONG,LPNOTIFICATION); 00762 typedef NOTIFCALLBACK *LPNOTIFCALLBACK; 00763 00764 /* IMAPIContainer::OpenEntry flags */ 00765 #define MAPI_BEST_ACCESS 0x00000010 00766 00767 /***************************************************************************** 00768 * IMAPITable interface 00769 * 00770 * This is the read-only 'view' over an I(MAPI)TableData object. 00771 */ 00772 #define INTERFACE IMAPITable 00773 DECLARE_INTERFACE_(IMAPITable,IUnknown) 00774 { 00775 /*** IUnknown methods ***/ 00776 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00777 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00778 STDMETHOD_(ULONG,Release)(THIS) PURE; 00779 /*** IMAPITable methods ***/ 00780 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppError) PURE; 00781 STDMETHOD(Advise)(THIS_ ULONG ulMask, LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE; 00782 STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE; 00783 STDMETHOD(GetStatus)(THIS_ ULONG *lpStatus, ULONG *lpType) PURE; 00784 STDMETHOD(SetColumns)(THIS_ LPSPropTagArray lpProps, ULONG ulFlags) PURE; 00785 STDMETHOD(QueryColumns)(THIS_ ULONG ulFlags, LPSPropTagArray *lpCols) PURE; 00786 STDMETHOD(GetRowCount)(THIS_ ULONG ulFlags, ULONG *lpCount) PURE; 00787 STDMETHOD(SeekRow)(THIS_ BOOKMARK lpStart, LONG lRows, LONG *lpSeeked) PURE; 00788 STDMETHOD(SeekRowApprox)(THIS_ ULONG ulNum, ULONG ulDenom) PURE; 00789 STDMETHOD(QueryPosition)(THIS_ ULONG *lpRow, ULONG *lpNum, ULONG *lpDenom) PURE; 00790 STDMETHOD(FindRow)(THIS_ LPSRestriction lpRestrict, BOOKMARK lpOrigin, ULONG ulFlags) PURE; 00791 STDMETHOD(Restrict)(THIS_ LPSRestriction lpRestrict, ULONG ulFlags) PURE; 00792 STDMETHOD(CreateBookmark)(THIS_ BOOKMARK *lppPos) PURE; 00793 STDMETHOD(FreeBookmark)(THIS_ BOOKMARK lpPos) PURE; 00794 STDMETHOD(SortTable)(THIS_ LPSSortOrderSet lpSortOpts, ULONG ulFlags) PURE; 00795 STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet *lppSortOpts) PURE; 00796 STDMETHOD(QueryRows)(THIS_ LONG lRows, ULONG ulFlags, LPSRowSet *lppRows) PURE; 00797 STDMETHOD(Abort) (THIS) PURE; 00798 STDMETHOD(ExpandRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulRows, 00799 ULONG ulFlags, LPSRowSet *lppRows, ULONG *lpMore) PURE; 00800 STDMETHOD(CollapseRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulFlags, ULONG *lpRows) PURE; 00801 STDMETHOD(WaitForCompletion)(THIS_ ULONG ulFlags, ULONG ulTime, ULONG *lpState) PURE; 00802 STDMETHOD(GetCollapseState)(THIS_ ULONG ulFlags, ULONG cbKey, LPBYTE lpKey, 00803 ULONG *lpStateLen, LPBYTE *lpState) PURE; 00804 STDMETHOD(SetCollapseState)(THIS_ ULONG ulFlags, ULONG ulLen, 00805 LPBYTE lpStart, BOOKMARK *lppWhere) PURE; 00806 }; 00807 #undef INTERFACE 00808 00809 #if !defined(__cplusplus) || defined(CINTERFACE) 00810 /*** IUnknown methods ***/ 00811 #define IMAPITable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00812 #define IMAPITable_AddRef(p) (p)->lpVtbl->AddRef(p) 00813 #define IMAPITable_Release(p) (p)->lpVtbl->Release(p) 00814 /*** IMAPITable methods ***/ 00815 #define IMAPITable_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 00816 #define IMAPITable_Advise(p,a,b,c) (p)->lpVtbl->Advise(p,a,b,c) 00817 #define IMAPITable_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) 00818 #define IMAPITable_GetStatus(p,a,b) (p)->lpVtbl->GetStatus(p,a,b) 00819 #define IMAPITable_SetColumns(p,a,b) (p)->lpVtbl->SetColumns(p,a,b) 00820 #define IMAPITable_QueryColumns(p,a,b) (p)->lpVtbl->QueryColumns(p,a,b) 00821 #define IMAPITable_GetRowCount(p,a,b) (p)->lpVtbl->GetRowCount(p,a,b) 00822 #define IMAPITable_SeekRow(p,a,b) (p)->lpVtbl->SeekRow(p,a,b) 00823 #define IMAPITable_SeekRowApprox(p,a,b) (p)->lpVtbl->SeekRowApprox(p,a,b) 00824 #define IMAPITable_QueryPosition(p,a,b) (p)->lpVtbl->QueryPosition(p,a,b) 00825 #define IMAPITable_FindRow(p,a,b,c) (p)->lpVtbl->FindRow(p,a,b,c) 00826 #define IMAPITable_Restrict(p,a,b) (p)->lpVtbl->Recstrict(p,a,b) 00827 #define IMAPITable_CreateBookmark(p,a) (p)->lpVtbl->CreateBookmark(p,a) 00828 #define IMAPITable_FreeBookmark(p,a) (p)->lpVtbl->FreeBookmark(p,a) 00829 #define IMAPITable_SortTable(p,a,b) (p)->lpVtbl->SortTable(p,a,b) 00830 #define IMAPITable_QuerySortOrder(p,a) (p)->lpVtbl->QuerySortOrder(p,a) 00831 #define IMAPITable_QueryRows(p,a,b,c) (p)->lpVtbl->QueryRows(p,a,b,c) 00832 #define IMAPITable_Abort(p) (p)->lpVtbl->Abort(p) 00833 #define IMAPITable_ExpandRow(p,a,b,c,d,e,f) (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f) 00834 #define IMAPITable_CollapseRow(p,a,b,c,d) (p)->lpVtbl->CollapseRow(p,a,b,c,d) 00835 #define IMAPITable_WaitForCompletion(p,a,b,c) (p)->lpVtbl->WaitForCompletion(p,a,b,c) 00836 #define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e) 00837 #define IMAPITable_SetCollapseState(p,a,b,c,d) (p)->lpVtbl->SetCollapseState(p,a,b,c,d) 00838 #endif 00839 00840 typedef IMAPITable *LPMAPITABLE; 00841 00842 /***************************************************************************** 00843 * IMAPIAdviseSink interface 00844 */ 00845 #define INTERFACE IMAPIAdviseSink 00846 DECLARE_INTERFACE_(IMAPIAdviseSink,IUnknown) 00847 { 00848 /*** IUnknown methods ***/ 00849 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00850 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00851 STDMETHOD_(ULONG,Release)(THIS) PURE; 00852 /*** IMAPIAdviseSink methods ***/ 00853 STDMETHOD(OnNotify)(THIS_ ULONG NumNotif, LPNOTIFICATION lpNotif) PURE; 00854 }; 00855 #undef INTERFACE 00856 00857 #if !defined(__cplusplus) || defined(CINTERFACE) 00858 /*** IUnknown methods ***/ 00859 #define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00860 #define IMAPIAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p) 00861 #define IMAPIAdviseSink_Release(p) (p)->lpVtbl->Release(p) 00862 /*** IMAPIAdviseSink methods ***/ 00863 #define IMAPIAdviseSink_OnNotify(p,a,b) (p)->lpVtbl->OnNotify(p,a,b) 00864 #endif 00865 00866 /***************************************************************************** 00867 * IMAPIProp interface 00868 */ 00869 #define INTERFACE IMAPIProp 00870 DECLARE_INTERFACE_(IMAPIProp,IUnknown) 00871 { 00872 /*** IUnknown methods ***/ 00873 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00874 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00875 STDMETHOD_(ULONG,Release)(THIS) PURE; 00876 /*** IMAPIProp methods ***/ 00877 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 00878 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 00879 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 00880 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 00881 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 00882 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 00883 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 00884 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 00885 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 00886 LPSPropProblemArray *lppProbs) PURE; 00887 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 00888 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 00889 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 00890 LPMAPINAMEID **lpppNames) PURE; 00891 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 00892 }; 00893 #undef INTERFACE 00894 00895 #if !defined(__cplusplus) || defined(CINTERFACE) 00896 /*** IUnknown methods ***/ 00897 #define IMAPIProp_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00898 #define IMAPIProp_AddRef(p) (p)->lpVtbl->AddRef(p) 00899 #define IMAPIProp_Release(p) (p)->lpVtbl->Release(p) 00900 /*** IMAPIProp methods ***/ 00901 #define IMAPIProp_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 00902 #define IMAPIProp_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 00903 #define IMAPIProp_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 00904 #define IMAPIProp_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 00905 #define IMAPIProp_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 00906 #define IMAPIProp_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 00907 #define IMAPIProp_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 00908 #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) 00909 #define IMAPIProp_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 00910 #define IMAPIProp_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 00911 #define IMAPIProp_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 00912 #endif 00913 00914 typedef IMAPIProp *LPMAPIPROP; 00915 00916 #define KEEP_OPEN_READONLY (0x00000001U) 00917 #define KEEP_OPEN_READWRITE (0x00000002U) 00918 #define FORCE_SAVE (0x00000004U) 00919 00920 /***************************************************************************** 00921 * IMsgStore interface 00922 */ 00923 #define INTERFACE IMsgStore 00924 DECLARE_INTERFACE_(IMsgStore,IMAPIProp) 00925 { 00926 /*** IUnknown methods ***/ 00927 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 00928 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 00929 STDMETHOD_(ULONG,Release)(THIS) PURE; 00930 /*** IMAPIProp methods ***/ 00931 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 00932 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 00933 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 00934 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 00935 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 00936 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 00937 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 00938 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 00939 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 00940 LPSPropProblemArray *lppProbs) PURE; 00941 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 00942 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 00943 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 00944 LPMAPINAMEID **lpppNames) PURE; 00945 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 00946 /*** IMsgStore methods ***/ 00947 STDMETHOD(Advise)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink, 00948 ULONG * lpulConnection) PURE; 00949 STDMETHOD(Unadvise)(THIS_ ULONG ulConnection) PURE; 00950 STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2, 00951 ULONG ulFlags, ULONG * lpulResult) PURE; 00952 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG *lpulObjType, 00953 LPUNKNOWN *lppUnk) PURE; 00954 STDMETHOD(SetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE; 00955 STDMETHOD(GetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG * lpcbEntryID, LPENTRYID *lppEntryID, 00956 LPSTR *lppszExplicitClass) PURE; 00957 STDMETHOD(GetReceiveFolderTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 00958 STDMETHOD(StoreLogoff)(THIS_ ULONG * lpulFlags) PURE; 00959 STDMETHOD(AbortSubmit)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags) PURE; 00960 STDMETHOD(GetOutgoingQueue)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 00961 STDMETHOD(SetLockState)(THIS_ LPMESSAGE lpMessage, ULONG ulLockState) PURE; 00962 STDMETHOD(FinishedMsg)(THIS_ ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE; 00963 STDMETHOD(NotifyNewMail)(THIS_ LPNOTIFICATION lpNotification) PURE; 00964 }; 00965 #undef INTERFACE 00966 00967 #if !defined(__cplusplus) || defined(CINTERFACE) 00968 /*** IUnknown methods ***/ 00969 #define IMsgStore_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 00970 #define IMsgStore_AddRef(p) (p)->lpVtbl->AddRef(p) 00971 #define IMsgStore_Release(p) (p)->lpVtbl->Release(p) 00972 /*** IMAPIProp methods ***/ 00973 #define IMsgStore_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 00974 #define IMsgStore_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 00975 #define IMsgStore_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 00976 #define IMsgStore_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 00977 #define IMsgStore_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 00978 #define IMsgStore_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 00979 #define IMsgStore_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 00980 #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) 00981 #define IMsgStore_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 00982 #define IMsgStore_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 00983 #define IMsgStore_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 00984 /*** IMsgStore methods ***/ 00985 #define IMsgStore_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e) 00986 #define IMsgStore_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) 00987 #define IMsgStore_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f) 00988 #define IMsgStore_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) 00989 #define IMsgStore_SetReceiveFolder(p,a,b,c,d) (p)->lpVtbl->SetReceiveFolder(p,a,b,c,d) 00990 #define IMsgStore_GetReceiveFolder(p,a,b,c,d,e) (p)->lpVtbl->GetReceiveFolder(p,a,b,c,d,e) 00991 #define IMsgStore_GetReceiveFolderTable(p,a,b) (p)->lpVtbl->GetReceiveFolderTable(p,a,b) 00992 #define IMsgStore_StoreLogoff(p,a) (p)->lpVtbl->StoreLogoff(p,a) 00993 #define IMsgStore_AbortSubmit(p,a,b,c) (p)->lpVtbl->AbortSubmit(p,a,b,c) 00994 #define IMsgStore_GetOutgoingQueue(p,a,b) (p)->lpVtbl->GetOutgoingQueue(p,a,b) 00995 #define IMsgStore_SetLockState(p,a,b) (p)->lpVtbl->SetLockState(p,a,b) 00996 #define IMsgStore_FinishedMsg(p,a,b,c) (p)->lpVtbl->FinishedMsg(p,a,b,c) 00997 #define IMsgStore_NotifyNewMail(p,a) (p)->lpVtbl->NotifyNewMail(p,a) 00998 00999 #endif 01000 01001 typedef IMsgStore *LPMDB; 01002 01003 /***************************************************************************** 01004 * IMAPIContainer interface 01005 */ 01006 #define INTERFACE IMAPIContainer 01007 DECLARE_INTERFACE_(IMAPIContainer,IMAPIProp) 01008 { 01009 /*** IUnknown methods ***/ 01010 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 01011 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 01012 STDMETHOD_(ULONG,Release)(THIS) PURE; 01013 /*** IMAPIProp methods ***/ 01014 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 01015 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 01016 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 01017 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 01018 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 01019 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 01020 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 01021 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 01022 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 01023 LPSPropProblemArray *lppProbs) PURE; 01024 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 01025 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 01026 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 01027 LPMAPINAMEID **lpppNames) PURE; 01028 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 01029 /*** IMAPIContainer methods ***/ 01030 STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 01031 STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 01032 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, 01033 ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE; 01034 STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE; 01035 STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList, 01036 ULONG * lpulSearchState) PURE; 01037 }; 01038 #undef INTERFACE 01039 01040 #if !defined(__cplusplus) || defined(CINTERFACE) 01041 /*** IUnknown methods ***/ 01042 #define IMAPIContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 01043 #define IMAPIContainer_AddRef(p) (p)->lpVtbl->AddRef(p) 01044 #define IMAPIContainer_Release(p) (p)->lpVtbl->Release(p) 01045 /*** IMAPIProp methods ***/ 01046 #define IMAPIContainer_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 01047 #define IMAPIContainer_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 01048 #define IMAPIContainer_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 01049 #define IMAPIContainer_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 01050 #define IMAPIContainer_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 01051 #define IMAPIContainer_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 01052 #define IMAPIContainer_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 01053 #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) 01054 #define IMAPIContainer_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 01055 #define IMAPIContainer_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 01056 #define IMAPIContainer_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 01057 /*** IMAPIContainer methods ***/ 01058 #define IMAPIContainer_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b) 01059 #define IMAPIContainer_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b) 01060 #define IMAPIContainer_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) 01061 #define IMAPIContainer_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c) 01062 #define IMAPIContainer_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d) 01063 01064 #endif 01065 01066 /***************************************************************************** 01067 * IMAPIFolder interface 01068 */ 01069 #define INTERFACE IMAPIFolder 01070 DECLARE_INTERFACE_(IMAPIFolder,IMAPIContainer) 01071 { 01072 /*** IUnknown methods ***/ 01073 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 01074 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 01075 STDMETHOD_(ULONG,Release)(THIS) PURE; 01076 /*** IMAPIProp methods ***/ 01077 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 01078 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 01079 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 01080 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 01081 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 01082 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 01083 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 01084 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 01085 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 01086 LPSPropProblemArray *lppProbs) PURE; 01087 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 01088 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 01089 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 01090 LPMAPINAMEID **lpppNames) PURE; 01091 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 01092 /*** IMAPIContainer methods ***/ 01093 STDMETHOD(GetContentsTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 01094 STDMETHOD(GetHierarchyTable)(THIS_ ULONG ulFlags, LPMAPITABLE * lppTable) PURE; 01095 STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, 01096 ULONG * lpulObjType, LPUNKNOWN * lppUnk) PURE; 01097 STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE; 01098 STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList, 01099 ULONG * lpulSearchState) PURE; 01100 /*** IMAPIFolder methods ***/ 01101 STDMETHOD(CreateMessage)(THIS_ LPCIID lpInterface, ULONG ulFlags, LPMESSAGE *lppMessage) PURE; 01102 STDMETHOD(CopyMessages)(THIS_ LPENTRYLIST lpMsgList, LPCIID lpInterface, LPVOID lpDestFolder, ULONG ulUIParam, 01103 LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01104 STDMETHOD(DeleteMessages)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01105 STDMETHOD(CreateFolder)(THIS_ ULONG ulFolderType, LPSTR lpszFolderName, LPSTR lpszFolderComment, LPCIID lpInterface, 01106 ULONG ulFlags, LPMAPIFOLDER lppFolder) PURE; 01107 STDMETHOD(CopyFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, LPVOID lpDestFolder, 01108 LPSTR lpszNewFolderName, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01109 STDMETHOD(DeleteFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, 01110 ULONG ulFlags) PURE; 01111 STDMETHOD(SetReadFlags)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01112 STDMETHOD(GetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG * lpulMessageStatus) PURE; 01113 STDMETHOD(SetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulNewStatus, 01114 ULONG ulNewStatusMask, ULONG * lpulOldStatus) PURE; 01115 STDMETHOD(SaveContentsSort)(THIS_ LPSSortOrderSet lpSortCriteria, ULONG ulFlags) PURE; 01116 STDMETHOD(EmptyFolder) (THIS_ ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01117 }; 01118 #undef INTERFACE 01119 01120 #if !defined(__cplusplus) || defined(CINTERFACE) 01121 /*** IUnknown methods ***/ 01122 #define IMAPIFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 01123 #define IMAPIFolder_AddRef(p) (p)->lpVtbl->AddRef(p) 01124 #define IMAPIFolder_Release(p) (p)->lpVtbl->Release(p) 01125 /*** IMAPIProp methods ***/ 01126 #define IMAPIFolder_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 01127 #define IMAPIFolder_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 01128 #define IMAPIFolder_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 01129 #define IMAPIFolder_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 01130 #define IMAPIFolder_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 01131 #define IMAPIFolder_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 01132 #define IMAPIFolder_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 01133 #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) 01134 #define IMAPIFolder_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 01135 #define IMAPIFolder_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 01136 #define IMAPIFolder_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 01137 /*** IMAPIContainer methods ***/ 01138 #define IMAPIFolder_GetContentsTable(p,a,b) (p)->lpVtbl->GetContentsTable(p,a,b) 01139 #define IMAPIFolder_GetHierarchyTable(p,a,b) (p)->lpVtbl->GetHierarchyTable(p,a,b) 01140 #define IMAPIFolder_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f) 01141 #define IMAPIFolder_SetSearchCriteria(p,a,b,c) (p)->lpVtbl->SetSearchCriteria(p,a,b,c) 01142 #define IMAPIFolder_GetSearchCriteria(p,a,b,c,d) (p)->lpVtbl->GetSearchCriteria(p,a,b,c,d) 01143 /*** IMAPIFolder methods ***/ 01144 #define IMAPIFolder_CreateMessage(p,a,b,c) (p)->lpVtbl->CreateMessage(p,a,b,c) 01145 #define IMAPIFolder_CopyMessages(p,a,b,c,d,e,f) (p)->lpVtbl->CopyMessages(p,a,b,c,d,e,f) 01146 #define IMAPIFolder_DeleteMessages(p,a,b,c,d) (p)->lpVtbl->DeleteMessages(p,a,b,c,d) 01147 #define IMAPIFolder_CreateFolder(p,a,b,c,d,e,f) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e,f) 01148 #define IMAPIFolder_CopyFolder(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CopyFolder(p,a,b,c,d,e,f,g,h) 01149 #define IMAPIFolder_DeleteFolder(p,a,b,c,d,e) (p)->lpVtbl->CreateFolder(p,a,b,c,d,e) 01150 #define IMAPIFolder_SetReadFlags(p,a,b,c,d) (p)->lpVtbl->SetReadFlags(p,a,b,c,d) 01151 #define IMAPIFolder_GetMessageStatus(p,a,b,c,d) (p)->lpVtbl->GetMessageStatus(p,a,b,c,d) 01152 #define IMAPIFolder_SetMessageStatus(p,a,b,c,d,e) (p)->lpVtbl->SetMessageStatus(p,a,b,c,d,e) 01153 #define IMAPIFolder_SaveContentsSort(p,a,b) (p)->lpVtbl->SaveContentsSort(p,a,b) 01154 #define IMAPIFolder_EmptyFolder(p,a,b,c) (p)->lpVtbl->EmptyFolder(p,a,b,c) 01155 01156 #endif 01157 01158 typedef struct 01159 { 01160 ULONG cb; 01161 BYTE abEntry[MAPI_DIM]; 01162 } FLATENTRY, *LPFLATENTRY; 01163 01164 typedef struct 01165 { 01166 ULONG cEntries; 01167 ULONG cbEntries; 01168 BYTE abEntries[MAPI_DIM]; 01169 } FLATENTRYLIST, *LPFLATENTRYLIST; 01170 01171 typedef struct 01172 { 01173 ULONG cb; 01174 BYTE ab[MAPI_DIM]; 01175 } MTSID, *LPMTSID; 01176 01177 typedef struct 01178 { 01179 ULONG cMTSIDs; 01180 ULONG cbMTSIDs; 01181 BYTE abMTSIDs[MAPI_DIM]; 01182 } FLATMTSIDLIST, *LPFLATMTSIDLIST; 01183 01184 typedef struct _ADRENTRY 01185 { 01186 ULONG ulReserved1; 01187 ULONG cValues; 01188 LPSPropValue rgPropVals; 01189 } ADRENTRY, *LPADRENTRY; 01190 01191 typedef struct _ADRLIST 01192 { 01193 ULONG cEntries; 01194 ADRENTRY aEntries[MAPI_DIM]; 01195 } ADRLIST, *LPADRLIST; 01196 01197 /***************************************************************************** 01198 * IMessage interface 01199 */ 01200 #define INTERFACE IMessage 01201 DECLARE_INTERFACE_(IMessage,IMAPIProp) 01202 { 01203 /*** IUnknown methods ***/ 01204 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 01205 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 01206 STDMETHOD_(ULONG,Release)(THIS) PURE; 01207 /*** IMAPIProp methods ***/ 01208 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 01209 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 01210 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 01211 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 01212 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 01213 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 01214 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 01215 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 01216 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 01217 LPSPropProblemArray *lppProbs) PURE; 01218 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 01219 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 01220 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 01221 LPMAPINAMEID **lpppNames) PURE; 01222 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 01223 /*** IMessage methods ***/ 01224 STDMETHOD(GetAttachmentTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; 01225 STDMETHOD(OpenAttach)(THIS_ ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, LPATTACH *lppAttach) PURE; 01226 STDMETHOD(CreateAttach)(THIS_ LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach) PURE; 01227 STDMETHOD(DeleteAttach)(THIS_ ULONG ulAttachmentNum, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE; 01228 STDMETHOD(GetRecipientTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; 01229 STDMETHOD(ModifyRecipients)(THIS_ ULONG ulFlags, LPADRLIST lpMods) PURE; 01230 STDMETHOD(SubmitMessage)(THIS_ ULONG ulFlags) PURE; 01231 STDMETHOD(SetReadFlag)(THIS_ ULONG ulFlags) PURE; 01232 }; 01233 #undef INTERFACE 01234 01235 #if !defined(__cplusplus) || defined(CINTERFACE) 01236 /*** IUnknown methods ***/ 01237 #define IMessage_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 01238 #define IMessage_AddRef(p) (p)->lpVtbl->AddRef(p) 01239 #define IMessage_Release(p) (p)->lpVtbl->Release(p) 01240 /*** IMAPIProp methods ***/ 01241 #define IMessage_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 01242 #define IMessage_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 01243 #define IMessage_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 01244 #define IMessage_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 01245 #define IMessage_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 01246 #define IMessage_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 01247 #define IMessage_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 01248 #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) 01249 #define IMessage_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 01250 #define IMessage_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 01251 #define IMessage_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 01252 /*** IMessage methods ***/ 01253 #define IMessage_GetAttachmentTable(p,a,b) (p)->lpVtbl->GetAttachmentTable(p,a,b) 01254 #define IMessage_OpenAttach(p,a,b,c,d) (p)->lpVtbl->OpenAttach(p,a,b,c,d) 01255 #define IMessage_CreateAttach(p,a,b,c,d) (p)->lpVtbl->CreateAttach(p,a,b,c,d) 01256 #define IMessage_DeleteAttach(p,a,b,c,d) (p)->lpVtbl->DeleteAttach(p,a,b,c,d) 01257 #define IMessage_GetRecipientTable(p,a,b) (p)->lpVtbl->GetRecipientTable(p,a,b) 01258 #define IMessage_ModifyRecipients(p,a,b) (p)->lpVtbl->ModifyRecipients(p,a,b) 01259 #define IMessage_SubmitMessage(p,a) (p)->lpVtbl->SubmitMessage(p,a) 01260 #define IMessage_SetReadFlag(p,a) (p)->lpVtbl->SetReadFlag(p,a) 01261 01262 #endif 01263 01264 /* Message flags (PR_MESSAGE_FLAGS) */ 01265 01266 #define MSGFLAG_READ 0x00000001U 01267 #define MSGFLAG_UNMODIFIED 0x00000002U 01268 #define MSGFLAG_SUBMIT 0x00000004U 01269 #define MSGFLAG_UNSENT 0x00000008U 01270 #define MSGFLAG_HASATTACH 0x00000010U 01271 #define MSGFLAG_FROMME 0x00000020U 01272 01273 /***************************************************************************** 01274 * IAttach interface 01275 */ 01276 #define INTERFACE IAttach 01277 DECLARE_INTERFACE_(IAttach,IMAPIProp) 01278 { 01279 /*** IUnknown methods ***/ 01280 STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 01281 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 01282 STDMETHOD_(ULONG,Release)(THIS) PURE; 01283 /*** IMAPIProp methods ***/ 01284 STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppErr) PURE; 01285 STDMETHOD(SaveChanges)(THIS_ ULONG ulFlags) PURE; 01286 STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE; 01287 STDMETHOD(GetPropList)(THIS_ ULONG ulFlags, LPSPropTagArray *lppPropTagArray) PURE; 01288 STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE; 01289 STDMETHOD(SetProps)(THIS_ ULONG cValues, LPSPropValue lpProps, LPSPropProblemArray *lppProbs) PURE; 01290 STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray lpPropTags, LPSPropProblemArray *lppProbs) PURE; 01291 STDMETHOD(CopyTo)(THIS_ ULONG ciidExclude, LPCIID lpIid, LPSPropTagArray lpProps, ULONG ulParam, 01292 LPMAPIPROGRESS lpProgress, LPCIID lpIface,LPVOID lpDest, ULONG ulFlags, 01293 LPSPropProblemArray *lppProbs) PURE; 01294 STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress, 01295 LPCIID lpIid, LPVOID lpDestObj, ULONG ulFlags, LPSPropProblemArray *lppProblems) PURE; 01296 STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount, 01297 LPMAPINAMEID **lpppNames) PURE; 01298 STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE; 01299 }; 01300 #undef INTERFACE 01301 01302 #if !defined(__cplusplus) || defined(CINTERFACE) 01303 /*** IUnknown methods ***/ 01304 #define IAttach_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 01305 #define IAttach_AddRef(p) (p)->lpVtbl->AddRef(p) 01306 #define IAttach_Release(p) (p)->lpVtbl->Release(p) 01307 /*** IMAPIProp methods ***/ 01308 #define IAttach_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c) 01309 #define IAttach_SaveChanges(p,a) (p)->lpVtbl->SaveChanges(p,a) 01310 #define IAttach_GetProps(p,a,b,c,d) (p)->lpVtbl->GetProps(p,a,b,c,d) 01311 #define IAttach_GetPropList(p,a,b) (p)->lpVtbl->GetPropList(p,a,b) 01312 #define IAttach_OpenProperty(p,a,b,c,d,e) (p)->lpVtbl->OpenProperty(p,a,b,c,d,e) 01313 #define IAttach_SetProps(p,a,b,c) (p)->lpVtbl->SetProps(p,a,b,c) 01314 #define IAttach_DeleteProps(p,a,b) (p)->lpVtbl->DeleteProps(p,a,b) 01315 #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) 01316 #define IAttach_CopyProps(p,a,b,c,d,e,f,g) (p)->lpVtbl->CopyProps(p,a,b,c,d,e,f,g) 01317 #define IAttach_GetNamesFromIDs(p,a,b,c,d,e) (p)->lpVtbl->GetNamesFromIDs(p,a,b,c,d,e) 01318 #define IAttach_GetIDsFromNames(p,a,b,c,d) (p)->lpVtbl->GetIDsFromNames(p,a,b,c,d) 01319 #endif 01320 01321 /* Attachment flags */ 01322 01323 #define NO_ATTACHMENT 0x00000000U 01324 #define ATTACH_BY_VALUE 0x00000001U 01325 01326 #endif /*MAPIDEFS_H*/ Generated on Sun May 27 2012 04:31:38 for ReactOS by
1.7.6.1
|