1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef MAPIDEFS_H 7 #define MAPIDEFS_H 8 9 #ifndef _WINDOWS_ 10 #define INC_OLE2 11 #define INC_RPC 12 #define _OLE_H_ 13 #include <windows.h> 14 #endif 15 16 #ifndef _OLEERROR_H_ 17 #include <winerror.h> 18 #endif 19 #include <objbase.h> 20 #include <stddef.h> 21 22 #ifndef MAPI_DIM 23 #define MAPI_DIM 1 24 #endif 25 26 #ifndef STDMAPIINITCALLTYPE 27 #define STDMAPIINITCALLTYPE __cdecl 28 #define STDINITMETHODIMP HRESULT __cdecl 29 #define STDINITMETHODIMP_(type) type __cdecl 30 #endif 31 32 #define MAPI_NT_SERVICE ((ULONG) 0x00010000) 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 #ifndef __WCHAR_DEFINED 39 #define __WCHAR_DEFINED 40 typedef wchar_t WCHAR; 41 #endif 42 43 #if defined(UNICODE) 44 typedef WCHAR TCHAR; 45 #else 46 typedef char TCHAR; 47 #endif 48 49 typedef WCHAR *LPWSTR; 50 typedef const WCHAR *LPCWSTR; 51 typedef TCHAR *LPTSTR; 52 typedef const TCHAR *LPCTSTR; 53 typedef BYTE *LPBYTE; 54 typedef ULONG *LPULONG; 55 56 #ifndef __LHANDLE 57 #define __LHANDLE 58 typedef ULONG_PTR LHANDLE,*LPLHANDLE; 59 #endif 60 61 #if !defined(_WINBASE_) && !defined(_FILETIME_) 62 #define _FILETIME_ 63 typedef struct _FILETIME { 64 DWORD dwLowDateTime; 65 DWORD dwHighDateTime; 66 } FILETIME,*LPFILETIME; 67 #endif 68 69 #ifndef BEGIN_INTERFACE 70 #define BEGIN_INTERFACE 71 #endif 72 73 #define MAPI_MODIFY ((ULONG) 0x00000001) 74 75 #define MAPI_ACCESS_MODIFY ((ULONG) 0x00000001) 76 #define MAPI_ACCESS_READ ((ULONG) 0x00000002) 77 #define MAPI_ACCESS_DELETE ((ULONG) 0x00000004) 78 #define MAPI_ACCESS_CREATE_HIERARCHY ((ULONG) 0x00000008) 79 #define MAPI_ACCESS_CREATE_CONTENTS ((ULONG) 0x00000010) 80 #define MAPI_ACCESS_CREATE_ASSOCIATED ((ULONG) 0x00000020) 81 82 #define MAPI_UNICODE ((ULONG) 0x80000000) 83 84 #if defined(UNICODE) 85 #define fMapiUnicode MAPI_UNICODE 86 #else 87 #define fMapiUnicode 0 88 #endif 89 90 #define hrSuccess 0 91 92 #ifndef MAPI_ORIG 93 #define MAPI_ORIG 0 94 #define MAPI_TO 1 95 #define MAPI_CC 2 96 #define MAPI_BCC 3 97 #define MAPI_P1 0x10000000 98 #define MAPI_SUBMITTED 0x80000000 99 #endif 100 101 #define MAPI_SHORTTERM 0x80 102 #define MAPI_NOTRECIP 0x40 103 #define MAPI_THISSESSION 0x20 104 #define MAPI_NOW 0x10 105 #define MAPI_NOTRESERVED 0x08 106 107 #define MAPI_COMPOUND 0x80 108 109 typedef struct { 110 BYTE abFlags[4]; 111 BYTE ab[MAPI_DIM]; 112 } ENTRYID,*LPENTRYID; 113 114 #define CbNewENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb)) 115 #define CbENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb)) 116 #define SizedENTRYID(_cb,_name) struct _ENTRYID_ ## _name { BYTE abFlags[4]; BYTE ab[_cb]; } _name 117 118 typedef struct _MAPIUID { 119 BYTE ab[16]; 120 } MAPIUID,*LPMAPIUID; 121 122 #define IsEqualMAPIUID(lpuid1,lpuid2) (!memcmp(lpuid1,lpuid2,sizeof(MAPIUID))) 123 124 #define MAPI_ONE_OFF_UID { 0x81,0x2b,0x1f,0xa4,0xbe,0xa3,0x10,0x19,0x9d,0x6e,0x00,0xdd,0x01,0x0f,0x54,0x02 } 125 #define MAPI_ONE_OFF_UNICODE 0x8000 126 #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001 127 128 #define MAPI_STORE ((ULONG) 0x00000001) 129 #define MAPI_ADDRBOOK ((ULONG) 0x00000002) 130 #define MAPI_FOLDER ((ULONG) 0x00000003) 131 #define MAPI_ABCONT ((ULONG) 0x00000004) 132 #define MAPI_MESSAGE ((ULONG) 0x00000005) 133 #define MAPI_MAILUSER ((ULONG) 0x00000006) 134 #define MAPI_ATTACH ((ULONG) 0x00000007) 135 #define MAPI_DISTLIST ((ULONG) 0x00000008) 136 #define MAPI_PROFSECT ((ULONG) 0x00000009) 137 #define MAPI_STATUS ((ULONG) 0x0000000A) 138 #define MAPI_SESSION ((ULONG) 0x0000000B) 139 #define MAPI_FORMINFO ((ULONG) 0x0000000C) 140 141 #ifndef cchProfileNameMax 142 #define cchProfileNameMax 64 143 #define cchProfilePassMax 64 144 #endif 145 146 #define MV_FLAG 0x1000 147 148 #define PT_UNSPECIFIED ((ULONG) 0) 149 #define PT_NULL ((ULONG) 1) 150 #define PT_I2 ((ULONG) 2) 151 #define PT_LONG ((ULONG) 3) 152 #define PT_R4 ((ULONG) 4) 153 #define PT_DOUBLE ((ULONG) 5) 154 #define PT_CURRENCY ((ULONG) 6) 155 #define PT_APPTIME ((ULONG) 7) 156 #define PT_ERROR ((ULONG) 10) 157 #define PT_BOOLEAN ((ULONG) 11) 158 #define PT_OBJECT ((ULONG) 13) 159 #define PT_I8 ((ULONG) 20) 160 #define PT_STRING8 ((ULONG) 30) 161 #define PT_UNICODE ((ULONG) 31) 162 #define PT_SYSTIME ((ULONG) 64) 163 #define PT_CLSID ((ULONG) 72) 164 #define PT_BINARY ((ULONG) 258) 165 166 #define PT_SHORT PT_I2 167 #define PT_I4 PT_LONG 168 #define PT_FLOAT PT_R4 169 #define PT_R8 PT_DOUBLE 170 #define PT_LONGLONG PT_I8 171 172 #if defined(UNICODE) 173 #define PT_TSTRING PT_UNICODE 174 #define PT_MV_TSTRING (MV_FLAG|PT_UNICODE) 175 #define LPSZ lpszW 176 #define LPPSZ lppszW 177 #define MVSZ MVszW 178 #else 179 #define PT_TSTRING PT_STRING8 180 #define PT_MV_TSTRING (MV_FLAG|PT_STRING8) 181 #define LPSZ lpszA 182 #define LPPSZ lppszA 183 #define MVSZ MVszA 184 #endif 185 186 #define PROP_TYPE_MASK ((ULONG)0x0000FFFF) 187 #define PROP_TYPE(ulPropTag) (((ULONG)(ulPropTag))&PROP_TYPE_MASK) 188 #define PROP_ID(ulPropTag) (((ULONG)(ulPropTag))>>16) 189 #define PROP_TAG(ulPropType,ulPropID) ((((ULONG)(ulPropID))<<16)|((ULONG)(ulPropType))) 190 #define PROP_ID_NULL 0 191 #define PROP_ID_INVALID 0xFFFF 192 #define PR_NULL PROP_TAG(PT_NULL,PROP_ID_NULL) 193 #define CHANGE_PROP_TYPE(ulPropTag,ulPropType) (((ULONG)0xFFFF0000 & ulPropTag) | ulPropType) 194 195 #define PT_MV_I2 (MV_FLAG|PT_I2) 196 #define PT_MV_LONG (MV_FLAG|PT_LONG) 197 #define PT_MV_R4 (MV_FLAG|PT_R4) 198 #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE) 199 #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY) 200 #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME) 201 #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME) 202 #define PT_MV_STRING8 (MV_FLAG|PT_STRING8) 203 #define PT_MV_BINARY (MV_FLAG|PT_BINARY) 204 #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE) 205 #define PT_MV_CLSID (MV_FLAG|PT_CLSID) 206 #define PT_MV_I8 (MV_FLAG|PT_I8) 207 208 #define PT_MV_SHORT PT_MV_I2 209 #define PT_MV_I4 PT_MV_LONG 210 #define PT_MV_FLOAT PT_MV_R4 211 #define PT_MV_R8 PT_MV_DOUBLE 212 #define PT_MV_LONGLONG PT_MV_I8 213 214 #define MV_INSTANCE 0x2000 215 #define MVI_FLAG (MV_FLAG | MV_INSTANCE) 216 #define MVI_PROP(tag) ((tag) | MVI_FLAG) 217 218 typedef struct _SPropTagArray { 219 ULONG cValues; 220 ULONG aulPropTag[MAPI_DIM]; 221 } SPropTagArray,*LPSPropTagArray; 222 223 #define CbNewSPropTagArray(_ctag) (offsetof(SPropTagArray,aulPropTag) + (_ctag)*sizeof(ULONG)) 224 #define CbSPropTagArray(_lparray) (offsetof(SPropTagArray,aulPropTag) + (UINT)((_lparray)->cValues)*sizeof(ULONG)) 225 #define SizedSPropTagArray(_ctag,_name) struct _SPropTagArray_ ## _name { ULONG cValues; ULONG aulPropTag[_ctag]; } _name 226 227 typedef struct _SPropValue SPropValue; 228 229 #ifndef _tagCY_DEFINED 230 #define _tagCY_DEFINED 231 #define _CY_DEFINED 232 typedef union tagCY { 233 struct { 234 unsigned __LONG32 Lo; 235 __LONG32 Hi; 236 }; 237 LONGLONG int64; 238 } CY; 239 #endif 240 241 typedef CY CURRENCY; 242 243 typedef struct _SBinary { 244 ULONG cb; 245 LPBYTE lpb; 246 } SBinary,*LPSBinary; 247 248 typedef struct _SShortArray { 249 ULONG cValues; 250 short int *lpi; 251 } SShortArray; 252 253 typedef struct _SGuidArray { 254 ULONG cValues; 255 GUID *lpguid; 256 } SGuidArray; 257 258 typedef struct _SRealArray { 259 ULONG cValues; 260 float *lpflt; 261 } SRealArray; 262 263 typedef struct _SLongArray { 264 ULONG cValues; 265 LONG *lpl; 266 } SLongArray; 267 268 typedef struct _SLargeIntegerArray { 269 ULONG cValues; 270 LARGE_INTEGER *lpli; 271 } SLargeIntegerArray; 272 273 typedef struct _SDateTimeArray { 274 ULONG cValues; 275 FILETIME *lpft; 276 } SDateTimeArray; 277 278 typedef struct _SAppTimeArray { 279 ULONG cValues; 280 double *lpat; 281 } SAppTimeArray; 282 283 typedef struct _SCurrencyArray { 284 ULONG cValues; 285 CURRENCY *lpcur; 286 } SCurrencyArray; 287 288 typedef struct _SBinaryArray { 289 ULONG cValues; 290 SBinary *lpbin; 291 } SBinaryArray; 292 293 typedef struct _SDoubleArray { 294 ULONG cValues; 295 double *lpdbl; 296 } SDoubleArray; 297 298 typedef struct _SWStringArray { 299 ULONG cValues; 300 LPWSTR *lppszW; 301 } SWStringArray; 302 303 typedef struct _SLPSTRArray { 304 ULONG cValues; 305 LPSTR *lppszA; 306 } SLPSTRArray; 307 308 typedef union _PV { 309 short int i; 310 LONG l; 311 ULONG ul; 312 float flt; 313 double dbl; 314 unsigned short int b; 315 CURRENCY cur; 316 double at; 317 FILETIME ft; 318 LPSTR lpszA; 319 SBinary bin; 320 LPWSTR lpszW; 321 LPGUID lpguid; 322 LARGE_INTEGER li; 323 SShortArray MVi; 324 SLongArray MVl; 325 SRealArray MVflt; 326 SDoubleArray MVdbl; 327 SCurrencyArray MVcur; 328 SAppTimeArray MVat; 329 SDateTimeArray MVft; 330 SBinaryArray MVbin; 331 SLPSTRArray MVszA; 332 SWStringArray MVszW; 333 SGuidArray MVguid; 334 SLargeIntegerArray MVli; 335 SCODE err; 336 LONG x; 337 } __UPV; 338 339 typedef struct _SPropValue { 340 ULONG ulPropTag; 341 ULONG dwAlignPad; 342 union _PV Value; 343 } SPropValue,*LPSPropValue; 344 345 typedef struct _SPropProblem { 346 ULONG ulIndex; 347 ULONG ulPropTag; 348 SCODE scode; 349 } SPropProblem,*LPSPropProblem; 350 351 typedef struct _SPropProblemArray { 352 ULONG cProblem; 353 SPropProblem aProblem[MAPI_DIM]; 354 } SPropProblemArray,*LPSPropProblemArray; 355 356 #define CbNewSPropProblemArray(_cprob) (offsetof(SPropProblemArray,aProblem) + (_cprob)*sizeof(SPropProblem)) 357 #define CbSPropProblemArray(_lparray) (offsetof(SPropProblemArray,aProblem) + (UINT) ((_lparray)->cProblem*sizeof(SPropProblem))) 358 #define SizedSPropProblemArray(_cprob,_name) struct _SPropProblemArray_ ## _name { ULONG cProblem; SPropProblem aProblem[_cprob]; } _name 359 360 typedef SBinaryArray ENTRYLIST,*LPENTRYLIST; 361 typedef struct { 362 ULONG cb; 363 BYTE abEntry[MAPI_DIM]; 364 } FLATENTRY,*LPFLATENTRY; 365 366 typedef struct { 367 ULONG cEntries; 368 ULONG cbEntries; 369 BYTE abEntries[MAPI_DIM]; 370 } FLATENTRYLIST,*LPFLATENTRYLIST; 371 372 typedef struct { 373 ULONG cb; 374 BYTE ab[MAPI_DIM]; 375 } MTSID,*LPMTSID; 376 377 typedef struct { 378 ULONG cMTSIDs; 379 ULONG cbMTSIDs; 380 BYTE abMTSIDs[MAPI_DIM]; 381 } FLATMTSIDLIST,*LPFLATMTSIDLIST; 382 383 #define CbNewFLATENTRY(_cb) (offsetof(FLATENTRY,abEntry) + (_cb)) 384 #define CbFLATENTRY(_lpentry) (offsetof(FLATENTRY,abEntry) + (_lpentry)->cb) 385 #define CbNewFLATENTRYLIST(_cb) (offsetof(FLATENTRYLIST,abEntries) + (_cb)) 386 #define CbFLATENTRYLIST(_lplist) (offsetof(FLATENTRYLIST,abEntries) + (_lplist)->cbEntries) 387 #define CbNewMTSID(_cb) (offsetof(MTSID,ab) + (_cb)) 388 #define CbMTSID(_lpentry) (offsetof(MTSID,ab) + (_lpentry)->cb) 389 #define CbNewFLATMTSIDLIST(_cb) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_cb)) 390 #define CbFLATMTSIDLIST(_lplist) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_lplist)->cbMTSIDs) 391 392 typedef struct _ADRENTRY { 393 ULONG ulReserved1; 394 ULONG cValues; 395 LPSPropValue rgPropVals; 396 } ADRENTRY,*LPADRENTRY; 397 398 typedef struct _ADRLIST { 399 ULONG cEntries; 400 ADRENTRY aEntries[MAPI_DIM]; 401 } ADRLIST,*LPADRLIST; 402 403 #define CbNewADRLIST(_centries) (offsetof(ADRLIST,aEntries) + (_centries)*sizeof(ADRENTRY)) 404 #define CbADRLIST(_lpadrlist) (offsetof(ADRLIST,aEntries) + (UINT)(_lpadrlist)->cEntries*sizeof(ADRENTRY)) 405 #define SizedADRLIST(_centries,_name) struct _ADRLIST_ ## _name { ULONG cEntries; ADRENTRY aEntries[_centries]; } _name 406 407 typedef struct _SRow { 408 ULONG ulAdrEntryPad; 409 ULONG cValues; 410 LPSPropValue lpProps; 411 } SRow,*LPSRow; 412 413 typedef struct _SRowSet { 414 ULONG cRows; 415 SRow aRow[MAPI_DIM]; 416 } SRowSet,*LPSRowSet; 417 418 #define CbNewSRowSet(_crow) (offsetof(SRowSet,aRow) + (_crow)*sizeof(SRow)) 419 #define CbSRowSet(_lprowset) (offsetof(SRowSet,aRow) + (UINT)((_lprowset)->cRows*sizeof(SRow))) 420 #define SizedSRowSet(_crow,_name) struct _SRowSet_ ## _name { ULONG cRows; SRow aRow[_crow]; } _name 421 422 typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG cbSize,LPVOID *lppBuffer); 423 typedef SCODE (WINAPI ALLOCATEMORE)(ULONG cbSize,LPVOID lpObject,LPVOID *lppBuffer); 424 typedef ULONG (WINAPI FREEBUFFER)(LPVOID lpBuffer); 425 426 typedef ALLOCATEBUFFER *LPALLOCATEBUFFER; 427 typedef ALLOCATEMORE *LPALLOCATEMORE; 428 typedef FREEBUFFER *LPFREEBUFFER; 429 430 #if defined(MAPI_IF) && (!defined(__cplusplus) || defined(CINTERFACE)) 431 #define DECLARE_MAPI_INTERFACE(iface) typedef struct iface##Vtbl iface##Vtbl,*iface; struct iface##Vtbl 432 #define DECLARE_MAPI_INTERFACE_(iface,baseiface) DECLARE_MAPI_INTERFACE(iface) 433 #define DECLARE_MAPI_INTERFACE_PTR(iface,piface) typedef struct iface##Vtbl iface##Vtbl,*iface,**piface; 434 #else 435 #define DECLARE_MAPI_INTERFACE(iface) DECLARE_INTERFACE(iface) 436 #define DECLARE_MAPI_INTERFACE_(iface,baseiface) DECLARE_INTERFACE_(iface,baseiface) 437 #ifdef __cplusplus 438 #define DECLARE_MAPI_INTERFACE_PTR(iface,piface) struct iface; typedef iface *piface 439 #else 440 #define DECLARE_MAPI_INTERFACE_PTR(iface,piface) typedef struct iface iface,*piface 441 #endif 442 #endif 443 444 #define MAPIMETHOD(method) MAPIMETHOD_(HRESULT,method) 445 #define MAPIMETHOD_(type,method) STDMETHOD_(type,method) 446 #define MAPIMETHOD_DECLARE(type,method,prefix) STDMETHODIMP_(type) prefix##method 447 #define MAPIMETHOD_TYPEDEF(type,method,prefix) typedef type (WINAPI prefix##method##_METHOD) 448 449 #define MAPI_IUNKNOWN_METHODS(IPURE) MAPIMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) IPURE; MAPIMETHOD_(ULONG,AddRef) (THIS) IPURE; MAPIMETHOD_(ULONG,Release) (THIS) IPURE; 450 #undef IMPL 451 #define IMPL 452 453 typedef const IID *LPCIID; 454 455 DECLARE_MAPI_INTERFACE_PTR(IMsgStore,LPMDB); 456 DECLARE_MAPI_INTERFACE_PTR(IMAPIFolder,LPMAPIFOLDER); 457 DECLARE_MAPI_INTERFACE_PTR(IMessage,LPMESSAGE); 458 DECLARE_MAPI_INTERFACE_PTR(IAttach,LPATTACH); 459 DECLARE_MAPI_INTERFACE_PTR(IAddrBook,LPADRBOOK); 460 DECLARE_MAPI_INTERFACE_PTR(IABContainer,LPABCONT); 461 DECLARE_MAPI_INTERFACE_PTR(IMailUser,LPMAILUSER); 462 DECLARE_MAPI_INTERFACE_PTR(IDistList,LPDISTLIST); 463 DECLARE_MAPI_INTERFACE_PTR(IMAPIStatus,LPMAPISTATUS); 464 DECLARE_MAPI_INTERFACE_PTR(IMAPITable,LPMAPITABLE); 465 DECLARE_MAPI_INTERFACE_PTR(IProfSect,LPPROFSECT); 466 DECLARE_MAPI_INTERFACE_PTR(IMAPIProp,LPMAPIPROP); 467 DECLARE_MAPI_INTERFACE_PTR(IMAPIContainer,LPMAPICONTAINER); 468 DECLARE_MAPI_INTERFACE_PTR(IMAPIAdviseSink,LPMAPIADVISESINK); 469 DECLARE_MAPI_INTERFACE_PTR(IMAPIProgress,LPMAPIPROGRESS); 470 DECLARE_MAPI_INTERFACE_PTR(IProviderAdmin,LPPROVIDERADMIN); 471 472 typedef struct _MAPIERROR { 473 ULONG ulVersion; 474 LPTSTR lpszError; 475 LPTSTR lpszComponent; 476 ULONG ulLowLevelError; 477 ULONG ulContext; 478 } MAPIERROR,*LPMAPIERROR; 479 480 #define fnevCriticalError ((ULONG) 0x00000001) 481 #define fnevNewMail ((ULONG) 0x00000002) 482 #define fnevObjectCreated ((ULONG) 0x00000004) 483 #define fnevObjectDeleted ((ULONG) 0x00000008) 484 #define fnevObjectModified ((ULONG) 0x00000010) 485 #define fnevObjectMoved ((ULONG) 0x00000020) 486 #define fnevObjectCopied ((ULONG) 0x00000040) 487 #define fnevSearchComplete ((ULONG) 0x00000080) 488 #define fnevTableModified ((ULONG) 0x00000100) 489 #define fnevStatusObjectModified ((ULONG) 0x00000200) 490 #define fnevReservedForMapi ((ULONG) 0x40000000) 491 #define fnevExtended ((ULONG) 0x80000000) 492 493 #define TABLE_CHANGED 1 494 #define TABLE_ERROR 2 495 #define TABLE_ROW_ADDED 3 496 #define TABLE_ROW_DELETED 4 497 #define TABLE_ROW_MODIFIED 5 498 #define TABLE_SORT_DONE 6 499 #define TABLE_RESTRICT_DONE 7 500 #define TABLE_SETCOL_DONE 8 501 #define TABLE_RELOAD 9 502 503 typedef struct _ERROR_NOTIFICATION { 504 ULONG cbEntryID; 505 LPENTRYID lpEntryID; 506 SCODE scode; 507 ULONG ulFlags; 508 LPMAPIERROR lpMAPIError; 509 } ERROR_NOTIFICATION; 510 511 typedef struct _NEWMAIL_NOTIFICATION { 512 ULONG cbEntryID; 513 LPENTRYID lpEntryID; 514 ULONG cbParentID; 515 LPENTRYID lpParentID; 516 ULONG ulFlags; 517 LPTSTR lpszMessageClass; 518 ULONG ulMessageFlags; 519 } NEWMAIL_NOTIFICATION; 520 521 typedef struct _OBJECT_NOTIFICATION { 522 ULONG cbEntryID; 523 LPENTRYID lpEntryID; 524 ULONG ulObjType; 525 ULONG cbParentID; 526 LPENTRYID lpParentID; 527 ULONG cbOldID; 528 LPENTRYID lpOldID; 529 ULONG cbOldParentID; 530 LPENTRYID lpOldParentID; 531 LPSPropTagArray lpPropTagArray; 532 } OBJECT_NOTIFICATION; 533 534 typedef struct _TABLE_NOTIFICATION { 535 ULONG ulTableEvent; 536 HRESULT hResult; 537 SPropValue propIndex; 538 SPropValue propPrior; 539 SRow row; 540 ULONG ulPad; 541 } TABLE_NOTIFICATION; 542 543 typedef struct _EXTENDED_NOTIFICATION { 544 ULONG ulEvent; 545 ULONG cb; 546 LPBYTE pbEventParameters; 547 } EXTENDED_NOTIFICATION; 548 549 typedef struct { 550 ULONG cbEntryID; 551 LPENTRYID lpEntryID; 552 ULONG cValues; 553 LPSPropValue lpPropVals; 554 } STATUS_OBJECT_NOTIFICATION; 555 556 typedef struct _NOTIFICATION { 557 ULONG ulEventType; 558 ULONG ulAlignPad; 559 union { 560 ERROR_NOTIFICATION err; 561 NEWMAIL_NOTIFICATION newmail; 562 OBJECT_NOTIFICATION obj; 563 TABLE_NOTIFICATION tab; 564 EXTENDED_NOTIFICATION ext; 565 STATUS_OBJECT_NOTIFICATION statobj; 566 } info; 567 } NOTIFICATION,*LPNOTIFICATION; 568 569 #define MAPI_IMAPIADVISESINK_METHODS(IPURE) MAPIMETHOD_(ULONG,OnNotify) (THIS_ ULONG cNotif,LPNOTIFICATION lpNotifications) IPURE; 570 #undef INTERFACE 571 #define INTERFACE IMAPIAdviseSink 572 DECLARE_MAPI_INTERFACE_(IMAPIAdviseSink,IUnknown) { 573 BEGIN_INTERFACE 574 MAPI_IUNKNOWN_METHODS(PURE) 575 MAPI_IMAPIADVISESINK_METHODS(PURE) 576 }; 577 578 typedef __LONG32 (WINAPI NOTIFCALLBACK) (LPVOID lpvContext,ULONG cNotification,LPNOTIFICATION lpNotifications); 579 typedef NOTIFCALLBACK *LPNOTIFCALLBACK; 580 581 #define szMAPINotificationMsg "MAPI Notify window message" 582 #define MAPI_TOP_LEVEL ((ULONG) 0x00000001) 583 #define MAPI_IMAPIPROGRESS_METHODS(IPURE) MAPIMETHOD(Progress) (THIS_ ULONG ulValue,ULONG ulCount,ULONG ulTotal) IPURE; MAPIMETHOD(GetFlags) (THIS_ ULONG *lpulFlags) IPURE; MAPIMETHOD(GetMax) (THIS_ ULONG *lpulMax) IPURE; MAPIMETHOD(GetMin) (THIS_ ULONG *lpulMin) IPURE; MAPIMETHOD(SetLimits) (THIS_ LPULONG lpulMin,LPULONG lpulMax,LPULONG lpulFlags) IPURE; 584 #undef INTERFACE 585 #define INTERFACE IMAPIProgress 586 DECLARE_MAPI_INTERFACE_(IMAPIProgress,IUnknown) { 587 BEGIN_INTERFACE 588 MAPI_IUNKNOWN_METHODS(PURE) 589 MAPI_IMAPIPROGRESS_METHODS(PURE) 590 }; 591 592 #define MAPI_ERROR_VERSION __MSABI_LONG(0x00000000) 593 594 #define KEEP_OPEN_READONLY ((ULONG) 0x00000001) 595 #define KEEP_OPEN_READWRITE ((ULONG) 0x00000002) 596 #define FORCE_SAVE ((ULONG) 0x00000004) 597 598 #define MAPI_CREATE ((ULONG) 0x00000002) 599 #define STREAM_APPEND ((ULONG) 0x00000004) 600 601 #define MAPI_MOVE ((ULONG) 0x00000001) 602 #define MAPI_NOREPLACE ((ULONG) 0x00000002) 603 #define MAPI_DECLINE_OK ((ULONG) 0x00000004) 604 605 #ifndef MAPI_DIALOG 606 #define MAPI_DIALOG ((ULONG) 0x00000008) 607 #endif 608 609 #ifndef MAPI_USE_DEFAULT 610 #define MAPI_USE_DEFAULT 0x00000040 611 #endif 612 613 #define MAPI_NO_STRINGS ((ULONG) 0x00000001) 614 #define MAPI_NO_IDS ((ULONG) 0x00000002) 615 616 #define MNID_ID 0 617 #define MNID_STRING 1 618 typedef struct _MAPINAMEID { 619 LPGUID lpguid; 620 ULONG ulKind; 621 union { 622 LONG lID; 623 LPWSTR lpwstrName; 624 } Kind; 625 } MAPINAMEID,*LPMAPINAMEID; 626 627 #define MAPI_IMAPIPROP_METHODS(IPURE) MAPIMETHOD(GetLastError) (THIS_ HRESULT hResult,ULONG ulFlags,LPMAPIERROR *lppMAPIError) IPURE; MAPIMETHOD(SaveChanges) (THIS_ ULONG ulFlags) IPURE; MAPIMETHOD(GetProps) (THIS_ LPSPropTagArray lpPropTagArray,ULONG ulFlags,ULONG *lpcValues,LPSPropValue *lppPropArray) IPURE; MAPIMETHOD(GetPropList) (THIS_ ULONG ulFlags,LPSPropTagArray *lppPropTagArray) IPURE; MAPIMETHOD(OpenProperty) (THIS_ ULONG ulPropTag,LPCIID lpiid,ULONG ulInterfaceOptions,ULONG ulFlags,LPUNKNOWN *lppUnk) IPURE; MAPIMETHOD(SetProps) (THIS_ ULONG cValues,LPSPropValue lpPropArray,LPSPropProblemArray *lppProblems) IPURE; MAPIMETHOD(DeleteProps) (THIS_ LPSPropTagArray lpPropTagArray,LPSPropProblemArray *lppProblems) IPURE; MAPIMETHOD(CopyTo) (THIS_ ULONG ciidExclude,LPCIID rgiidExclude,LPSPropTagArray lpExcludeProps,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,LPCIID lpInterface,LPVOID lpDestObj,ULONG ulFlags,LPSPropProblemArray *lppProblems) IPURE; MAPIMETHOD(CopyProps) (THIS_ LPSPropTagArray lpIncludeProps,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,LPCIID lpInterface,LPVOID lpDestObj,ULONG ulFlags,LPSPropProblemArray *lppProblems) IPURE; MAPIMETHOD(GetNamesFromIDs) (THIS_ LPSPropTagArray *lppPropTags,LPGUID lpPropSetGuid,ULONG ulFlags,ULONG *lpcPropNames,LPMAPINAMEID **lpppPropNames) IPURE; MAPIMETHOD(GetIDsFromNames) (THIS_ ULONG cPropNames,LPMAPINAMEID *lppPropNames,ULONG ulFlags,LPSPropTagArray *lppPropTags) IPURE; 628 #undef INTERFACE 629 #define INTERFACE IMAPIProp 630 DECLARE_MAPI_INTERFACE_(IMAPIProp,IUnknown) { 631 BEGIN_INTERFACE 632 MAPI_IUNKNOWN_METHODS(PURE) 633 MAPI_IMAPIPROP_METHODS(PURE) 634 }; 635 636 #define TBLSTAT_COMPLETE ((ULONG) 0) 637 #define TBLSTAT_QCHANGED ((ULONG) 7) 638 #define TBLSTAT_SORTING ((ULONG) 9) 639 #define TBLSTAT_SORT_ERROR ((ULONG) 10) 640 #define TBLSTAT_SETTING_COLS ((ULONG) 11) 641 #define TBLSTAT_SETCOL_ERROR ((ULONG) 13) 642 #define TBLSTAT_RESTRICTING ((ULONG) 14) 643 #define TBLSTAT_RESTRICT_ERROR ((ULONG) 15) 644 645 #define TBLTYPE_SNAPSHOT ((ULONG) 0) 646 #define TBLTYPE_KEYSET ((ULONG) 1) 647 #define TBLTYPE_DYNAMIC ((ULONG) 2) 648 649 #define TABLE_SORT_ASCEND ((ULONG) 0x00000000) 650 #define TABLE_SORT_DESCEND ((ULONG) 0x00000001) 651 #define TABLE_SORT_COMBINE ((ULONG) 0x00000002) 652 653 typedef struct _SSortOrder { 654 ULONG ulPropTag; 655 ULONG ulOrder; 656 } SSortOrder,*LPSSortOrder; 657 658 typedef struct _SSortOrderSet { 659 ULONG cSorts; 660 ULONG cCategories; 661 ULONG cExpanded; 662 SSortOrder aSort[MAPI_DIM]; 663 } SSortOrderSet,*LPSSortOrderSet; 664 665 #define CbNewSSortOrderSet(_csort) (offsetof(SSortOrderSet,aSort) + (_csort)*sizeof(SSortOrder)) 666 #define CbSSortOrderSet(_lpset) (offsetof(SSortOrderSet,aSort) + (UINT)((_lpset)->cSorts*sizeof(SSortOrder))) 667 #define SizedSSortOrderSet(_csort,_name) struct _SSortOrderSet_ ## _name { ULONG cSorts; ULONG cCategories; ULONG cExpanded; SSortOrder aSort[_csort]; } _name 668 669 typedef ULONG BOOKMARK; 670 671 #define BOOKMARK_BEGINNING ((BOOKMARK) 0) 672 #define BOOKMARK_CURRENT ((BOOKMARK) 1) 673 #define BOOKMARK_END ((BOOKMARK) 2) 674 675 #define FL_FULLSTRING ((ULONG) 0x00000000) 676 #define FL_SUBSTRING ((ULONG) 0x00000001) 677 #define FL_PREFIX ((ULONG) 0x00000002) 678 679 #define FL_IGNORECASE ((ULONG) 0x00010000) 680 #define FL_IGNORENONSPACE ((ULONG) 0x00020000) 681 #define FL_LOOSE ((ULONG) 0x00040000) 682 683 typedef struct _SRestriction *LPSRestriction; 684 685 #define RES_AND ((ULONG) 0x00000000) 686 #define RES_OR ((ULONG) 0x00000001) 687 #define RES_NOT ((ULONG) 0x00000002) 688 #define RES_CONTENT ((ULONG) 0x00000003) 689 #define RES_PROPERTY ((ULONG) 0x00000004) 690 #define RES_COMPAREPROPS ((ULONG) 0x00000005) 691 #define RES_BITMASK ((ULONG) 0x00000006) 692 #define RES_SIZE ((ULONG) 0x00000007) 693 #define RES_EXIST ((ULONG) 0x00000008) 694 #define RES_SUBRESTRICTION ((ULONG) 0x00000009) 695 #define RES_COMMENT ((ULONG) 0x0000000A) 696 697 #define RELOP_LT ((ULONG) 0) 698 #define RELOP_LE ((ULONG) 1) 699 #define RELOP_GT ((ULONG) 2) 700 #define RELOP_GE ((ULONG) 3) 701 #define RELOP_EQ ((ULONG) 4) 702 #define RELOP_NE ((ULONG) 5) 703 #define RELOP_RE ((ULONG) 6) 704 705 #define BMR_EQZ ((ULONG) 0) 706 #define BMR_NEZ ((ULONG) 1) 707 708 typedef struct _SAndRestriction { 709 ULONG cRes; 710 LPSRestriction lpRes; 711 } SAndRestriction; 712 713 typedef struct _SOrRestriction { 714 ULONG cRes; 715 LPSRestriction lpRes; 716 } SOrRestriction; 717 718 typedef struct _SNotRestriction { 719 ULONG ulReserved; 720 LPSRestriction lpRes; 721 } SNotRestriction; 722 723 typedef struct _SContentRestriction { 724 ULONG ulFuzzyLevel; 725 ULONG ulPropTag; 726 LPSPropValue lpProp; 727 } SContentRestriction; 728 729 typedef struct _SBitMaskRestriction { 730 ULONG relBMR; 731 ULONG ulPropTag; 732 ULONG ulMask; 733 } SBitMaskRestriction; 734 735 typedef struct _SPropertyRestriction { 736 ULONG relop; 737 ULONG ulPropTag; 738 LPSPropValue lpProp; 739 } SPropertyRestriction; 740 741 typedef struct _SComparePropsRestriction { 742 ULONG relop; 743 ULONG ulPropTag1; 744 ULONG ulPropTag2; 745 } SComparePropsRestriction; 746 747 typedef struct _SSizeRestriction { 748 ULONG relop; 749 ULONG ulPropTag; 750 ULONG cb; 751 } SSizeRestriction; 752 753 typedef struct _SExistRestriction { 754 ULONG ulReserved1; 755 ULONG ulPropTag; 756 ULONG ulReserved2; 757 } SExistRestriction; 758 759 typedef struct _SSubRestriction { 760 ULONG ulSubObject; 761 LPSRestriction lpRes; 762 } SSubRestriction; 763 764 typedef struct _SCommentRestriction { 765 ULONG cValues; 766 LPSRestriction lpRes; 767 LPSPropValue lpProp; 768 } SCommentRestriction; 769 770 typedef struct _SRestriction { 771 ULONG rt; 772 union { 773 SComparePropsRestriction resCompareProps; 774 SAndRestriction resAnd; 775 SOrRestriction resOr; 776 SNotRestriction resNot; 777 SContentRestriction resContent; 778 SPropertyRestriction resProperty; 779 SBitMaskRestriction resBitMask; 780 SSizeRestriction resSize; 781 SExistRestriction resExist; 782 SSubRestriction resSub; 783 SCommentRestriction resComment; 784 } res; 785 } SRestriction; 786 787 #define TBL_ALL_COLUMNS ((ULONG) 0x00000001) 788 789 #define TBL_LEAF_ROW ((ULONG) 1) 790 #define TBL_EMPTY_CATEGORY ((ULONG) 2) 791 #define TBL_EXPANDED_CATEGORY ((ULONG) 3) 792 #define TBL_COLLAPSED_CATEGORY ((ULONG) 4) 793 794 #define TBL_NOWAIT ((ULONG) 0x00000001) 795 796 #define TBL_ASYNC ((ULONG) 0x00000001) 797 #define TBL_BATCH ((ULONG) 0x00000002) 798 799 #define DIR_BACKWARD ((ULONG) 0x00000001) 800 801 #define TBL_NOADVANCE ((ULONG) 0x00000001) 802 803 #define MAPI_IMAPITABLE_METHODS(IPURE) MAPIMETHOD(GetLastError) (THIS_ HRESULT hResult,ULONG ulFlags,LPMAPIERROR *lppMAPIError) IPURE; MAPIMETHOD(Advise) (THIS_ ULONG ulEventMask,LPMAPIADVISESINK lpAdviseSink,ULONG *lpulConnection) IPURE; MAPIMETHOD(Unadvise) (THIS_ ULONG ulConnection) IPURE; MAPIMETHOD(GetStatus) (THIS_ ULONG *lpulTableStatus,ULONG *lpulTableType) IPURE; MAPIMETHOD(SetColumns) (THIS_ LPSPropTagArray lpPropTagArray,ULONG ulFlags) IPURE; MAPIMETHOD(QueryColumns) (THIS_ ULONG ulFlags,LPSPropTagArray *lpPropTagArray) IPURE; MAPIMETHOD(GetRowCount) (THIS_ ULONG ulFlags,ULONG *lpulCount) IPURE; MAPIMETHOD(SeekRow) (THIS_ BOOKMARK bkOrigin,LONG lRowCount,LONG *lplRowsSought) IPURE; MAPIMETHOD(SeekRowApprox) (THIS_ ULONG ulNumerator,ULONG ulDenominator) IPURE; MAPIMETHOD(QueryPosition) (THIS_ ULONG *lpulRow,ULONG *lpulNumerator,ULONG *lpulDenominator) IPURE; MAPIMETHOD(FindRow) (THIS_ LPSRestriction lpRestriction,BOOKMARK bkOrigin,ULONG ulFlags) IPURE; MAPIMETHOD(Restrict) (THIS_ LPSRestriction lpRestriction,ULONG ulFlags) IPURE; MAPIMETHOD(CreateBookmark) (THIS_ BOOKMARK *lpbkPosition) IPURE; MAPIMETHOD(FreeBookmark) (THIS_ BOOKMARK bkPosition) IPURE; MAPIMETHOD(SortTable) (THIS_ LPSSortOrderSet lpSortCriteria,ULONG ulFlags) IPURE; MAPIMETHOD(QuerySortOrder) (THIS_ LPSSortOrderSet *lppSortCriteria) IPURE; MAPIMETHOD(QueryRows) (THIS_ LONG lRowCount,ULONG ulFlags,LPSRowSet *lppRows) IPURE; MAPIMETHOD(Abort) (THIS) IPURE; MAPIMETHOD(ExpandRow) (THIS_ ULONG cbInstanceKey,LPBYTE pbInstanceKey,ULONG ulRowCount,ULONG ulFlags,LPSRowSet *lppRows,ULONG *lpulMoreRows) IPURE; MAPIMETHOD(CollapseRow) (THIS_ ULONG cbInstanceKey,LPBYTE pbInstanceKey,ULONG ulFlags,ULONG *lpulRowCount) IPURE; MAPIMETHOD(WaitForCompletion) (THIS_ ULONG ulFlags,ULONG ulTimeout,ULONG *lpulTableStatus) IPURE; MAPIMETHOD(GetCollapseState) (THIS_ ULONG ulFlags,ULONG cbInstanceKey,LPBYTE lpbInstanceKey,ULONG *lpcbCollapseState,LPBYTE *lppbCollapseState) IPURE; MAPIMETHOD(SetCollapseState) (THIS_ ULONG ulFlags,ULONG cbCollapseState,LPBYTE pbCollapseState,BOOKMARK *lpbkLocation) IPURE; 804 #undef INTERFACE 805 #define INTERFACE IMAPITable 806 DECLARE_MAPI_INTERFACE_(IMAPITable,IUnknown) { 807 BEGIN_INTERFACE 808 MAPI_IUNKNOWN_METHODS(PURE) 809 MAPI_IMAPITABLE_METHODS(PURE) 810 }; 811 812 #define PS_PROFILE_PROPERTIES_INIT { 0x98,0x15,0xAC,0x08,0xAA,0xB0,0x10,0x1A,0x8C,0x93,0x08,0x00,0x2B,0x2A,0x56,0xC2 } 813 814 #define MAPI_IPROFSECT_METHODS(IPURE) 815 816 #undef INTERFACE 817 #define INTERFACE IProfSect 818 DECLARE_MAPI_INTERFACE_(IProfSect,IMAPIProp) { 819 BEGIN_INTERFACE 820 MAPI_IUNKNOWN_METHODS(PURE) 821 MAPI_IMAPIPROP_METHODS(PURE) 822 MAPI_IPROFSECT_METHODS(PURE) 823 }; 824 825 #define MAPI_STORE_PROVIDER ((ULONG) 33) 826 #define MAPI_AB ((ULONG) 34) 827 #define MAPI_AB_PROVIDER ((ULONG) 35) 828 #define MAPI_TRANSPORT_PROVIDER ((ULONG) 36) 829 #define MAPI_SPOOLER ((ULONG) 37) 830 #define MAPI_PROFILE_PROVIDER ((ULONG) 38) 831 #define MAPI_SUBSYSTEM ((ULONG) 39) 832 #define MAPI_HOOK_PROVIDER ((ULONG) 40) 833 834 #define STATUS_VALIDATE_STATE ((ULONG) 0x00000001) 835 #define STATUS_SETTINGS_DIALOG ((ULONG) 0x00000002) 836 #define STATUS_CHANGE_PASSWORD ((ULONG) 0x00000004) 837 #define STATUS_FLUSH_QUEUES ((ULONG) 0x00000008) 838 839 #define STATUS_DEFAULT_OUTBOUND ((ULONG) 0x00000001) 840 #define STATUS_DEFAULT_STORE ((ULONG) 0x00000002) 841 #define STATUS_PRIMARY_IDENTITY ((ULONG) 0x00000004) 842 #define STATUS_SIMPLE_STORE ((ULONG) 0x00000008) 843 #define STATUS_XP_PREFER_LAST ((ULONG) 0x00000010) 844 #define STATUS_NO_PRIMARY_IDENTITY ((ULONG) 0x00000020) 845 #define STATUS_NO_DEFAULT_STORE ((ULONG) 0x00000040) 846 #define STATUS_TEMP_SECTION ((ULONG) 0x00000080) 847 #define STATUS_OWN_STORE ((ULONG) 0x00000100) 848 849 #define STATUS_NEED_IPM_TREE ((ULONG) 0x00000800) 850 #define STATUS_PRIMARY_STORE ((ULONG) 0x00001000) 851 #define STATUS_SECONDARY_STORE ((ULONG) 0x00002000) 852 853 #define STATUS_AVAILABLE ((ULONG) 0x00000001) 854 #define STATUS_OFFLINE ((ULONG) 0x00000002) 855 #define STATUS_FAILURE ((ULONG) 0x00000004) 856 857 #define STATUS_INBOUND_ENABLED ((ULONG) 0x00010000) 858 #define STATUS_INBOUND_ACTIVE ((ULONG) 0x00020000) 859 #define STATUS_INBOUND_FLUSH ((ULONG) 0x00040000) 860 #define STATUS_OUTBOUND_ENABLED ((ULONG) 0x00100000) 861 #define STATUS_OUTBOUND_ACTIVE ((ULONG) 0x00200000) 862 #define STATUS_OUTBOUND_FLUSH ((ULONG) 0x00400000) 863 #define STATUS_REMOTE_ACCESS ((ULONG) 0x00800000) 864 865 #define SUPPRESS_UI ((ULONG) 0x00000001) 866 #define REFRESH_XP_HEADER_CACHE ((ULONG) 0x00010000) 867 #define PROCESS_XP_HEADER_CACHE ((ULONG) 0x00020000) 868 #define FORCE_XP_CONNECT ((ULONG) 0x00040000) 869 #define FORCE_XP_DISCONNECT ((ULONG) 0x00080000) 870 #define CONFIG_CHANGED ((ULONG) 0x00100000) 871 #define ABORT_XP_HEADER_OPERATION ((ULONG) 0x00200000) 872 #define SHOW_XP_SESSION_UI ((ULONG) 0x00400000) 873 874 #define UI_READONLY ((ULONG) 0x00000001) 875 876 #define FLUSH_UPLOAD ((ULONG) 0x00000002) 877 #define FLUSH_DOWNLOAD ((ULONG) 0x00000004) 878 #define FLUSH_FORCE ((ULONG) 0x00000008) 879 #define FLUSH_NO_UI ((ULONG) 0x00000010) 880 #define FLUSH_ASYNC_OK ((ULONG) 0x00000020) 881 882 #define MAPI_IMAPISTATUS_METHODS(IPURE) MAPIMETHOD(ValidateState) (THIS_ ULONG ulUIParam,ULONG ulFlags) IPURE; MAPIMETHOD(SettingsDialog) (THIS_ ULONG ulUIParam,ULONG ulFlags) IPURE; MAPIMETHOD(ChangePassword) (THIS_ LPTSTR lpOldPass,LPTSTR lpNewPass,ULONG ulFlags) IPURE; MAPIMETHOD(FlushQueues) (THIS_ ULONG ulUIParam,ULONG cbTargetTransport,LPENTRYID lpTargetTransport,ULONG ulFlags) IPURE; 883 #undef INTERFACE 884 #define INTERFACE IMAPIStatus 885 DECLARE_MAPI_INTERFACE_(IMAPIStatus,IMAPIProp) { 886 BEGIN_INTERFACE 887 MAPI_IUNKNOWN_METHODS(PURE) 888 MAPI_IMAPIPROP_METHODS(PURE) 889 MAPI_IMAPISTATUS_METHODS(PURE) 890 }; 891 892 #define MAPI_BEST_ACCESS ((ULONG) 0x00000010) 893 894 #define CONVENIENT_DEPTH ((ULONG) 0x00000001) 895 896 #define SEARCH_RUNNING ((ULONG) 0x00000001) 897 #define SEARCH_REBUILD ((ULONG) 0x00000002) 898 #define SEARCH_RECURSIVE ((ULONG) 0x00000004) 899 #define SEARCH_FOREGROUND ((ULONG) 0x00000008) 900 901 #define STOP_SEARCH ((ULONG) 0x00000001) 902 #define RESTART_SEARCH ((ULONG) 0x00000002) 903 #define RECURSIVE_SEARCH ((ULONG) 0x00000004) 904 #define SHALLOW_SEARCH ((ULONG) 0x00000008) 905 #define FOREGROUND_SEARCH ((ULONG) 0x00000010) 906 #define BACKGROUND_SEARCH ((ULONG) 0x00000020) 907 908 #define MAPI_IMAPICONTAINER_METHODS(IPURE) MAPIMETHOD(GetContentsTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(GetHierarchyTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(OpenEntry) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,LPCIID lpInterface,ULONG ulFlags,ULONG *lpulObjType,LPUNKNOWN *lppUnk) IPURE; MAPIMETHOD(SetSearchCriteria) (THIS_ LPSRestriction lpRestriction,LPENTRYLIST lpContainerList,ULONG ulSearchFlags) IPURE; MAPIMETHOD(GetSearchCriteria) (THIS_ ULONG ulFlags,LPSRestriction *lppRestriction,LPENTRYLIST *lppContainerList,ULONG *lpulSearchState)IPURE; 909 #undef INTERFACE 910 #define INTERFACE IMAPIContainer 911 DECLARE_MAPI_INTERFACE_(IMAPIContainer,IMAPIProp) { 912 BEGIN_INTERFACE 913 MAPI_IUNKNOWN_METHODS(PURE) 914 MAPI_IMAPIPROP_METHODS(PURE) 915 MAPI_IMAPICONTAINER_METHODS(PURE) 916 }; 917 918 typedef struct _flaglist { 919 ULONG cFlags; 920 ULONG ulFlag[MAPI_DIM]; 921 } FlagList,*LPFlagList; 922 923 #define AB_RECIPIENTS ((ULONG) 0x00000001) 924 #define AB_SUBCONTAINERS ((ULONG) 0x00000002) 925 #define AB_MODIFIABLE ((ULONG) 0x00000004) 926 #define AB_UNMODIFIABLE ((ULONG) 0x00000008) 927 #define AB_FIND_ON_OPEN ((ULONG) 0x00000010) 928 #define AB_NOT_DEFAULT ((ULONG) 0x00000020) 929 930 #define CREATE_CHECK_DUP_STRICT ((ULONG) 0x00000001) 931 #define CREATE_CHECK_DUP_LOOSE ((ULONG) 0x00000002) 932 #define CREATE_REPLACE ((ULONG) 0x00000004) 933 934 #define MAPI_UNRESOLVED ((ULONG) 0x00000000) 935 #define MAPI_AMBIGUOUS ((ULONG) 0x00000001) 936 #define MAPI_RESOLVED ((ULONG) 0x00000002) 937 938 #define MAPI_IABCONTAINER_METHODS(IPURE) MAPIMETHOD(CreateEntry) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulCreateFlags,LPMAPIPROP *lppMAPIPropEntry) IPURE; MAPIMETHOD(CopyEntries) (THIS_ LPENTRYLIST lpEntries,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(DeleteEntries) (THIS_ LPENTRYLIST lpEntries,ULONG ulFlags) IPURE; MAPIMETHOD(ResolveNames) (THIS_ LPSPropTagArray lpPropTagArray,ULONG ulFlags,LPADRLIST lpAdrList,LPFlagList lpFlagList) IPURE; 939 #undef INTERFACE 940 #define INTERFACE IABContainer 941 DECLARE_MAPI_INTERFACE_(IABContainer,IMAPIContainer) { 942 BEGIN_INTERFACE 943 MAPI_IUNKNOWN_METHODS(PURE) 944 MAPI_IMAPIPROP_METHODS(PURE) 945 MAPI_IMAPICONTAINER_METHODS(PURE) 946 MAPI_IABCONTAINER_METHODS(PURE) 947 }; 948 949 #define MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000) 950 951 #define MAPI_DIAG(_code) ((LONG) _code) 952 953 #define MAPI_DIAG_NO_DIAGNOSTIC MAPI_DIAG(-1) 954 #define MAPI_DIAG_OR_NAME_UNRECOGNIZED MAPI_DIAG(0) 955 #define MAPI_DIAG_OR_NAME_AMBIGUOUS MAPI_DIAG(1) 956 #define MAPI_DIAG_MTS_CONGESTED MAPI_DIAG(2) 957 #define MAPI_DIAG_LOOP_DETECTED MAPI_DIAG(3) 958 #define MAPI_DIAG_RECIPIENT_UNAVAILABLE MAPI_DIAG(4) 959 #define MAPI_DIAG_MAXIMUM_TIME_EXPIRED MAPI_DIAG(5) 960 #define MAPI_DIAG_EITS_UNSUPPORTED MAPI_DIAG(6) 961 #define MAPI_DIAG_CONTENT_TOO_LONG MAPI_DIAG(7) 962 #define MAPI_DIAG_IMPRACTICAL_TO_CONVERT MAPI_DIAG(8) 963 #define MAPI_DIAG_PROHIBITED_TO_CONVERT MAPI_DIAG(9) 964 #define MAPI_DIAG_CONVERSION_UNSUBSCRIBED MAPI_DIAG(10) 965 #define MAPI_DIAG_PARAMETERS_INVALID MAPI_DIAG(11) 966 #define MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR MAPI_DIAG(12) 967 #define MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD MAPI_DIAG(13) 968 #define MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD MAPI_DIAG(14) 969 #define MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED MAPI_DIAG(15) 970 #define MAPI_DIAG_TOO_MANY_RECIPIENTS MAPI_DIAG(16) 971 #define MAPI_DIAG_NO_BILATERAL_AGREEMENT MAPI_DIAG(17) 972 #define MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED MAPI_DIAG(18) 973 #define MAPI_DIAG_CONVERSION_LOSS_PROHIB MAPI_DIAG(19) 974 #define MAPI_DIAG_LINE_TOO_LONG MAPI_DIAG(20) 975 #define MAPI_DIAG_PAGE_TOO_LONG MAPI_DIAG(21) 976 #define MAPI_DIAG_PICTORIAL_SYMBOL_LOST MAPI_DIAG(22) 977 #define MAPI_DIAG_PUNCTUATION_SYMBOL_LOST MAPI_DIAG(23) 978 #define MAPI_DIAG_ALPHABETIC_CHARACTER_LOST MAPI_DIAG(24) 979 #define MAPI_DIAG_MULTIPLE_INFO_LOSSES MAPI_DIAG(25) 980 #define MAPI_DIAG_REASSIGNMENT_PROHIBITED MAPI_DIAG(26) 981 #define MAPI_DIAG_REDIRECTION_LOOP_DETECTED MAPI_DIAG(27) 982 #define MAPI_DIAG_EXPANSION_PROHIBITED MAPI_DIAG(28) 983 #define MAPI_DIAG_SUBMISSION_PROHIBITED MAPI_DIAG(29) 984 #define MAPI_DIAG_EXPANSION_FAILED MAPI_DIAG(30) 985 #define MAPI_DIAG_RENDITION_UNSUPPORTED MAPI_DIAG(31) 986 #define MAPI_DIAG_MAIL_ADDRESS_INCORRECT MAPI_DIAG(32) 987 #define MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD MAPI_DIAG(33) 988 #define MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE MAPI_DIAG(34) 989 #define MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN MAPI_DIAG(35) 990 #define MAPI_DIAG_MAIL_RECIPIENT_DECEASED MAPI_DIAG(36) 991 #define MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED MAPI_DIAG(37) 992 #define MAPI_DIAG_MAIL_REFUSED MAPI_DIAG(38) 993 #define MAPI_DIAG_MAIL_UNCLAIMED MAPI_DIAG(39) 994 #define MAPI_DIAG_MAIL_RECIPIENT_MOVED MAPI_DIAG(40) 995 #define MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING MAPI_DIAG(41) 996 #define MAPI_DIAG_MAIL_RECIPIENT_DEPARTED MAPI_DIAG(42) 997 #define MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN MAPI_DIAG(43) 998 #define MAPI_DIAG_MAIL_FORWARDING_UNWANTED MAPI_DIAG(44) 999 #define MAPI_DIAG_MAIL_FORWARDING_PROHIB MAPI_DIAG(45) 1000 #define MAPI_DIAG_SECURE_MESSAGING_ERROR MAPI_DIAG(46) 1001 #define MAPI_DIAG_DOWNGRADING_IMPOSSIBLE MAPI_DIAG(47) 1002 1003 #define MAPI_MH_DP_PUBLIC_UA ((ULONG) 0) 1004 #define MAPI_MH_DP_PRIVATE_UA ((ULONG) 1) 1005 #define MAPI_MH_DP_MS ((ULONG) 2) 1006 #define MAPI_MH_DP_ML ((ULONG) 3) 1007 #define MAPI_MH_DP_PDAU ((ULONG) 4) 1008 #define MAPI_MH_DP_PDS_PATRON ((ULONG) 5) 1009 #define MAPI_MH_DP_OTHER_AU ((ULONG) 6) 1010 1011 #define MAPI_IMAILUSER_METHODS(IPURE) 1012 1013 #undef INTERFACE 1014 #define INTERFACE IMailUser 1015 DECLARE_MAPI_INTERFACE_(IMailUser,IMAPIProp) { 1016 BEGIN_INTERFACE 1017 MAPI_IUNKNOWN_METHODS(PURE) 1018 MAPI_IMAPIPROP_METHODS(PURE) 1019 MAPI_IMAILUSER_METHODS(PURE) 1020 }; 1021 1022 #define MAPI_IDISTLIST_METHODS(IPURE) MAPIMETHOD(CreateEntry) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulCreateFlags,LPMAPIPROP *lppMAPIPropEntry) IPURE; MAPIMETHOD(CopyEntries) (THIS_ LPENTRYLIST lpEntries,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(DeleteEntries) (THIS_ LPENTRYLIST lpEntries,ULONG ulFlags) IPURE; MAPIMETHOD(ResolveNames) (THIS_ LPSPropTagArray lpPropTagArray,ULONG ulFlags,LPADRLIST lpAdrList,LPFlagList lpFlagList) IPURE; 1023 #undef INTERFACE 1024 #define INTERFACE IDistList 1025 DECLARE_MAPI_INTERFACE_(IDistList,IMAPIContainer) { 1026 BEGIN_INTERFACE 1027 MAPI_IUNKNOWN_METHODS(PURE) 1028 MAPI_IMAPIPROP_METHODS(PURE) 1029 MAPI_IMAPICONTAINER_METHODS(PURE) 1030 MAPI_IDISTLIST_METHODS(PURE) 1031 }; 1032 1033 #define FOLDER_ROOT ((ULONG) 0x00000000) 1034 #define FOLDER_GENERIC ((ULONG) 0x00000001) 1035 #define FOLDER_SEARCH ((ULONG) 0x00000002) 1036 1037 #define MESSAGE_MOVE ((ULONG) 0x00000001) 1038 #define MESSAGE_DIALOG ((ULONG) 0x00000002) 1039 1040 #define OPEN_IF_EXISTS ((ULONG) 0x00000001) 1041 1042 #define DEL_MESSAGES ((ULONG) 0x00000001) 1043 #define FOLDER_DIALOG ((ULONG) 0x00000002) 1044 #define DEL_FOLDERS ((ULONG) 0x00000004) 1045 1046 #define DEL_ASSOCIATED ((ULONG) 0x00000008) 1047 1048 #define FOLDER_MOVE ((ULONG) 0x00000001) 1049 1050 #define COPY_SUBFOLDERS ((ULONG) 0x00000010) 1051 1052 #define MSGSTATUS_HIGHLIGHTED ((ULONG) 0x00000001) 1053 #define MSGSTATUS_TAGGED ((ULONG) 0x00000002) 1054 #define MSGSTATUS_HIDDEN ((ULONG) 0x00000004) 1055 #define MSGSTATUS_DELMARKED ((ULONG) 0x00000008) 1056 1057 #define MSGSTATUS_REMOTE_DOWNLOAD ((ULONG) 0x00001000) 1058 #define MSGSTATUS_REMOTE_DELETE ((ULONG) 0x00002000) 1059 1060 #define RECURSIVE_SORT ((ULONG) 0x00000002) 1061 1062 #define FLDSTATUS_HIGHLIGHTED ((ULONG) 0x00000001) 1063 #define FLDSTATUS_TAGGED ((ULONG) 0x00000002) 1064 #define FLDSTATUS_HIDDEN ((ULONG) 0x00000004) 1065 #define FLDSTATUS_DELMARKED ((ULONG) 0x00000008) 1066 1067 #define MAPI_IMAPIFOLDER_METHODS(IPURE) MAPIMETHOD(CreateMessage) (THIS_ LPCIID lpInterface,ULONG ulFlags,LPMESSAGE *lppMessage) IPURE; MAPIMETHOD(CopyMessages) (THIS_ LPENTRYLIST lpMsgList,LPCIID lpInterface,LPVOID lpDestFolder,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(DeleteMessages) (THIS_ LPENTRYLIST lpMsgList,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(CreateFolder) (THIS_ ULONG ulFolderType,LPTSTR lpszFolderName,LPTSTR lpszFolderComment,LPCIID lpInterface,ULONG ulFlags,LPMAPIFOLDER *lppFolder) IPURE; MAPIMETHOD(CopyFolder) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,LPCIID lpInterface,LPVOID lpDestFolder,LPTSTR lpszNewFolderName,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(DeleteFolder) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(SetReadFlags) (THIS_ LPENTRYLIST lpMsgList,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(GetMessageStatus) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulFlags,ULONG *lpulMessageStatus) IPURE; MAPIMETHOD(SetMessageStatus) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulNewStatus,ULONG ulNewStatusMask,ULONG *lpulOldStatus) IPURE; MAPIMETHOD(SaveContentsSort) (THIS_ LPSSortOrderSet lpSortCriteria,ULONG ulFlags) IPURE; MAPIMETHOD(EmptyFolder) (THIS_ ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; 1068 #undef INTERFACE 1069 #define INTERFACE IMAPIFolder 1070 DECLARE_MAPI_INTERFACE_(IMAPIFolder,IMAPIContainer) { 1071 BEGIN_INTERFACE 1072 MAPI_IUNKNOWN_METHODS(PURE) 1073 MAPI_IMAPIPROP_METHODS(PURE) 1074 MAPI_IMAPICONTAINER_METHODS(PURE) 1075 MAPI_IMAPIFOLDER_METHODS(PURE) 1076 }; 1077 1078 #define STORE_ENTRYID_UNIQUE ((ULONG) 0x00000001) 1079 #define STORE_READONLY ((ULONG) 0x00000002) 1080 #define STORE_SEARCH_OK ((ULONG) 0x00000004) 1081 #define STORE_MODIFY_OK ((ULONG) 0x00000008) 1082 #define STORE_CREATE_OK ((ULONG) 0x00000010) 1083 #define STORE_ATTACH_OK ((ULONG) 0x00000020) 1084 #define STORE_OLE_OK ((ULONG) 0x00000040) 1085 #define STORE_SUBMIT_OK ((ULONG) 0x00000080) 1086 #define STORE_NOTIFY_OK ((ULONG) 0x00000100) 1087 #define STORE_MV_PROPS_OK ((ULONG) 0x00000200) 1088 #define STORE_CATEGORIZE_OK ((ULONG) 0x00000400) 1089 #define STORE_RTF_OK ((ULONG) 0x00000800) 1090 #define STORE_RESTRICTION_OK ((ULONG) 0x00001000) 1091 #define STORE_SORT_OK ((ULONG) 0x00002000) 1092 #define STORE_PUBLIC_FOLDERS ((ULONG) 0x00004000) 1093 #define STORE_UNCOMPRESSED_RTF ((ULONG) 0x00008000) 1094 1095 #define STORE_HAS_SEARCHES ((ULONG) 0x01000000) 1096 1097 #define LOGOFF_NO_WAIT ((ULONG) 0x00000001) 1098 #define LOGOFF_ORDERLY ((ULONG) 0x00000002) 1099 #define LOGOFF_PURGE ((ULONG) 0x00000004) 1100 #define LOGOFF_ABORT ((ULONG) 0x00000008) 1101 #define LOGOFF_QUIET ((ULONG) 0x00000010) 1102 1103 #define LOGOFF_COMPLETE ((ULONG) 0x00010000) 1104 #define LOGOFF_INBOUND ((ULONG) 0x00020000) 1105 #define LOGOFF_OUTBOUND ((ULONG) 0x00040000) 1106 #define LOGOFF_OUTBOUND_QUEUE ((ULONG) 0x00080000) 1107 1108 #define MSG_LOCKED ((ULONG) 0x00000001) 1109 #define MSG_UNLOCKED ((ULONG) 0x00000000) 1110 1111 #define FOLDER_IPM_SUBTREE_VALID ((ULONG) 0x00000001) 1112 #define FOLDER_IPM_INBOX_VALID ((ULONG) 0x00000002) 1113 #define FOLDER_IPM_OUTBOX_VALID ((ULONG) 0x00000004) 1114 #define FOLDER_IPM_WASTEBASKET_VALID ((ULONG) 0x00000008) 1115 #define FOLDER_IPM_SENTMAIL_VALID ((ULONG) 0x00000010) 1116 #define FOLDER_VIEWS_VALID ((ULONG) 0x00000020) 1117 #define FOLDER_COMMON_VIEWS_VALID ((ULONG) 0x00000040) 1118 #define FOLDER_FINDER_VALID ((ULONG) 0x00000080) 1119 1120 #define MAPI_IMSGSTORE_METHODS(IPURE) MAPIMETHOD(Advise) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulEventMask,LPMAPIADVISESINK lpAdviseSink,ULONG *lpulConnection) IPURE; MAPIMETHOD(Unadvise) (THIS_ ULONG ulConnection) IPURE; MAPIMETHOD(CompareEntryIDs) (THIS_ ULONG cbEntryID1,LPENTRYID lpEntryID1,ULONG cbEntryID2,LPENTRYID lpEntryID2,ULONG ulFlags,ULONG *lpulResult) IPURE; MAPIMETHOD(OpenEntry) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,LPCIID lpInterface,ULONG ulFlags,ULONG *lpulObjType,LPUNKNOWN *lppUnk) IPURE; MAPIMETHOD(SetReceiveFolder) (THIS_ LPTSTR lpszMessageClass,ULONG ulFlags,ULONG cbEntryID,LPENTRYID lpEntryID) IPURE; MAPIMETHOD(GetReceiveFolder) (THIS_ LPTSTR lpszMessageClass,ULONG ulFlags,ULONG *lpcbEntryID,LPENTRYID *lppEntryID,LPTSTR *lppszExplicitClass) IPURE; MAPIMETHOD(GetReceiveFolderTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(StoreLogoff) (THIS_ ULONG *lpulFlags) IPURE; MAPIMETHOD(AbortSubmit) (THIS_ ULONG cbEntryID,LPENTRYID lpEntryID,ULONG ulFlags) IPURE; MAPIMETHOD(GetOutgoingQueue) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(SetLockState) (THIS_ LPMESSAGE lpMessage,ULONG ulLockState) IPURE; MAPIMETHOD(FinishedMsg) (THIS_ ULONG ulFlags,ULONG cbEntryID,LPENTRYID lpEntryID) IPURE; MAPIMETHOD(NotifyNewMail) (THIS_ LPNOTIFICATION lpNotification) IPURE; 1121 #undef INTERFACE 1122 #define INTERFACE IMsgStore 1123 DECLARE_MAPI_INTERFACE_(IMsgStore,IMAPIProp) { 1124 BEGIN_INTERFACE 1125 MAPI_IUNKNOWN_METHODS(PURE) 1126 MAPI_IMAPIPROP_METHODS(PURE) 1127 MAPI_IMSGSTORE_METHODS(PURE) 1128 }; 1129 1130 #define FORCE_SUBMIT ((ULONG) 0x00000001) 1131 1132 #define MSGFLAG_READ ((ULONG) 0x00000001) 1133 #define MSGFLAG_UNMODIFIED ((ULONG) 0x00000002) 1134 #define MSGFLAG_SUBMIT ((ULONG) 0x00000004) 1135 #define MSGFLAG_UNSENT ((ULONG) 0x00000008) 1136 #define MSGFLAG_HASATTACH ((ULONG) 0x00000010) 1137 #define MSGFLAG_FROMME ((ULONG) 0x00000020) 1138 #define MSGFLAG_ASSOCIATED ((ULONG) 0x00000040) 1139 #define MSGFLAG_RESEND ((ULONG) 0x00000080) 1140 #define MSGFLAG_RN_PENDING ((ULONG) 0x00000100) 1141 #define MSGFLAG_NRN_PENDING ((ULONG) 0x00000200) 1142 1143 #define SUBMITFLAG_LOCKED ((ULONG) 0x00000001) 1144 #define SUBMITFLAG_PREPROCESS ((ULONG) 0x00000002) 1145 1146 #define MODRECIP_ADD ((ULONG) 0x00000002) 1147 #define MODRECIP_MODIFY ((ULONG) 0x00000004) 1148 #define MODRECIP_REMOVE ((ULONG) 0x00000008) 1149 1150 #define SUPPRESS_RECEIPT ((ULONG) 0x00000001) 1151 #define CLEAR_READ_FLAG ((ULONG) 0x00000004) 1152 1153 #define GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010) 1154 #define CLEAR_RN_PENDING ((ULONG) 0x00000020) 1155 #define CLEAR_NRN_PENDING ((ULONG) 0x00000040) 1156 1157 #define ATTACH_DIALOG ((ULONG) 0x00000001) 1158 1159 #define SECURITY_SIGNED ((ULONG) 0x00000001) 1160 #define SECURITY_ENCRYPTED ((ULONG) 0x00000002) 1161 1162 #define PRIO_URGENT ((__LONG32) 1) 1163 #define PRIO_NORMAL ((__LONG32) 0) 1164 #define PRIO_NONURGENT ((__LONG32) -1) 1165 1166 #define SENSITIVITY_NONE ((ULONG) 0x00000000) 1167 #define SENSITIVITY_PERSONAL ((ULONG) 0x00000001) 1168 #define SENSITIVITY_PRIVATE ((ULONG) 0x00000002) 1169 #define SENSITIVITY_COMPANY_CONFIDENTIAL ((ULONG) 0x00000003) 1170 1171 #define IMPORTANCE_LOW ((__LONG32) 0) 1172 #define IMPORTANCE_NORMAL ((__LONG32) 1) 1173 #define IMPORTANCE_HIGH ((__LONG32) 2) 1174 1175 #define MAPI_IMESSAGE_METHODS(IPURE) MAPIMETHOD(GetAttachmentTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(OpenAttach) (THIS_ ULONG ulAttachmentNum,LPCIID lpInterface,ULONG ulFlags,LPATTACH *lppAttach) IPURE; MAPIMETHOD(CreateAttach) (THIS_ LPCIID lpInterface,ULONG ulFlags,ULONG *lpulAttachmentNum,LPATTACH *lppAttach) IPURE; MAPIMETHOD(DeleteAttach) (THIS_ ULONG ulAttachmentNum,ULONG ulUIParam,LPMAPIPROGRESS lpProgress,ULONG ulFlags) IPURE; MAPIMETHOD(GetRecipientTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(ModifyRecipients) (THIS_ ULONG ulFlags,LPADRLIST lpMods) IPURE; MAPIMETHOD(SubmitMessage) (THIS_ ULONG ulFlags) IPURE; MAPIMETHOD(SetReadFlag) (THIS_ ULONG ulFlags) IPURE; 1176 #undef INTERFACE 1177 #define INTERFACE IMessage 1178 DECLARE_MAPI_INTERFACE_(IMessage,IMAPIProp) { 1179 BEGIN_INTERFACE 1180 MAPI_IUNKNOWN_METHODS(PURE) 1181 MAPI_IMAPIPROP_METHODS(PURE) 1182 MAPI_IMESSAGE_METHODS(PURE) 1183 }; 1184 1185 #define NO_ATTACHMENT ((ULONG) 0x00000000) 1186 #define ATTACH_BY_VALUE ((ULONG) 0x00000001) 1187 #define ATTACH_BY_REFERENCE ((ULONG) 0x00000002) 1188 #define ATTACH_BY_REF_RESOLVE ((ULONG) 0x00000003) 1189 #define ATTACH_BY_REF_ONLY ((ULONG) 0x00000004) 1190 #define ATTACH_EMBEDDED_MSG ((ULONG) 0x00000005) 1191 #define ATTACH_OLE ((ULONG) 0x00000006) 1192 1193 #define MAPI_IATTACH_METHODS(IPURE) 1194 1195 #undef INTERFACE 1196 #define INTERFACE IAttach 1197 DECLARE_MAPI_INTERFACE_(IAttach,IMAPIProp) { 1198 BEGIN_INTERFACE 1199 MAPI_IUNKNOWN_METHODS(PURE) 1200 MAPI_IMAPIPROP_METHODS(PURE) 1201 MAPI_IATTACH_METHODS(PURE) 1202 }; 1203 1204 #define GET_ADRPARM_VERSION(ulFlags) (((ULONG)ulFlags) & 0xF0000000) 1205 #define SET_ADRPARM_VERSION(ulFlags,ulVersion) (((ULONG)ulVersion) | (((ULONG)ulFlags) & 0x0FFFFFFF)) 1206 1207 #define ADRPARM_HELP_CTX ((ULONG) 0x00000000) 1208 1209 #define DIALOG_MODAL ((ULONG) 0x00000001) 1210 #define DIALOG_SDI ((ULONG) 0x00000002) 1211 #define DIALOG_OPTIONS ((ULONG) 0x00000004) 1212 #define ADDRESS_ONE ((ULONG) 0x00000008) 1213 #define AB_SELECTONLY ((ULONG) 0x00000010) 1214 #define AB_RESOLVE ((ULONG) 0x00000020) 1215 1216 #define DT_MAILUSER ((ULONG) 0x00000000) 1217 #define DT_DISTLIST ((ULONG) 0x00000001) 1218 #define DT_FORUM ((ULONG) 0x00000002) 1219 #define DT_AGENT ((ULONG) 0x00000003) 1220 #define DT_ORGANIZATION ((ULONG) 0x00000004) 1221 #define DT_PRIVATE_DISTLIST ((ULONG) 0x00000005) 1222 #define DT_REMOTE_MAILUSER ((ULONG) 0x00000006) 1223 1224 #define DT_MODIFIABLE ((ULONG) 0x00010000) 1225 #define DT_GLOBAL ((ULONG) 0x00020000) 1226 #define DT_LOCAL ((ULONG) 0x00030000) 1227 #define DT_WAN ((ULONG) 0x00040000) 1228 #define DT_NOT_SPECIFIC ((ULONG) 0x00050000) 1229 1230 #define DT_FOLDER ((ULONG) 0x01000000) 1231 #define DT_FOLDER_LINK ((ULONG) 0x02000000) 1232 #define DT_FOLDER_SPECIAL ((ULONG) 0x04000000) 1233 1234 typedef WINBOOL (WINAPI ACCELERATEABSDI)(ULONG ulUIParam,LPVOID lpvmsg); 1235 typedef ACCELERATEABSDI *LPFNABSDI; 1236 typedef void (WINAPI DISMISSMODELESS)(ULONG ulUIParam,LPVOID lpvContext); 1237 typedef DISMISSMODELESS *LPFNDISMISS; 1238 typedef SCODE (WINAPI *LPFNBUTTON)(ULONG ulUIParam,LPVOID lpvContext,ULONG cbEntryID,LPENTRYID lpSelection,ULONG ulFlags); 1239 1240 typedef struct _ADRPARM { 1241 ULONG cbABContEntryID; 1242 LPENTRYID lpABContEntryID; 1243 ULONG ulFlags; 1244 LPVOID lpReserved; 1245 ULONG ulHelpContext; 1246 LPTSTR lpszHelpFileName; 1247 LPFNABSDI lpfnABSDI; 1248 LPFNDISMISS lpfnDismiss; 1249 LPVOID lpvDismissContext; 1250 LPTSTR lpszCaption; 1251 LPTSTR lpszNewEntryTitle; 1252 LPTSTR lpszDestWellsTitle; 1253 ULONG cDestFields; 1254 ULONG nDestFieldFocus; 1255 LPTSTR *lppszDestTitles; 1256 ULONG *lpulDestComps; 1257 LPSRestriction lpContRestriction; 1258 LPSRestriction lpHierRestriction; 1259 } ADRPARM,*LPADRPARM; 1260 1261 #define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) 1262 1263 #define MAPI_ASSOCIATED ((ULONG) 0x00000040) 1264 1265 #define MDB_NO_DIALOG ((ULONG) 0x00000001) 1266 #define MDB_WRITE ((ULONG) 0x00000004) 1267 1268 #define MDB_TEMPORARY ((ULONG) 0x00000020) 1269 #define MDB_NO_MAIL ((ULONG) 0x00000080) 1270 1271 #define AB_NO_DIALOG ((ULONG) 0x00000001) 1272 1273 #define MAPI_ENABLED ((ULONG) 0x00000000) 1274 #define MAPI_DISABLED ((ULONG) 0x00000001) 1275 1276 #define MAPI_IMAPICONTROL_METHODS(IPURE) MAPIMETHOD(GetLastError) (THIS_ HRESULT hResult,ULONG ulFlags,LPMAPIERROR *lppMAPIError) IPURE; MAPIMETHOD(Activate) (THIS_ ULONG ulFlags,ULONG ulUIParam) IPURE; MAPIMETHOD(GetState) (THIS_ ULONG ulFlags,ULONG *lpulState) IPURE; 1277 #undef INTERFACE 1278 #define INTERFACE IMAPIControl 1279 DECLARE_MAPI_INTERFACE_(IMAPIControl,IUnknown) { 1280 BEGIN_INTERFACE 1281 MAPI_IUNKNOWN_METHODS(PURE) 1282 MAPI_IMAPICONTROL_METHODS(PURE) 1283 }; 1284 1285 DECLARE_MAPI_INTERFACE_PTR(IMAPIControl,LPMAPICONTROL); 1286 1287 #define DT_MULTILINE ((ULONG) 0x00000001) 1288 #define DT_EDITABLE ((ULONG) 0x00000002) 1289 #define DT_REQUIRED ((ULONG) 0x00000004) 1290 #define DT_SET_IMMEDIATE ((ULONG) 0x00000008) 1291 #define DT_PASSWORD_EDIT ((ULONG) 0x00000010) 1292 #define DT_ACCEPT_DBCS ((ULONG) 0x00000020) 1293 #define DT_SET_SELECTION ((ULONG) 0x00000040) 1294 1295 #define DTCT_LABEL ((ULONG) 0x00000000) 1296 #define DTCT_EDIT ((ULONG) 0x00000001) 1297 #define DTCT_LBX ((ULONG) 0x00000002) 1298 #define DTCT_COMBOBOX ((ULONG) 0x00000003) 1299 #define DTCT_DDLBX ((ULONG) 0x00000004) 1300 #define DTCT_CHECKBOX ((ULONG) 0x00000005) 1301 #define DTCT_GROUPBOX ((ULONG) 0x00000006) 1302 #define DTCT_BUTTON ((ULONG) 0x00000007) 1303 #define DTCT_PAGE ((ULONG) 0x00000008) 1304 #define DTCT_RADIOBUTTON ((ULONG) 0x00000009) 1305 #define DTCT_MVLISTBOX ((ULONG) 0x0000000B) 1306 #define DTCT_MVDDLBX ((ULONG) 0x0000000C) 1307 1308 typedef struct _DTBLLABEL { 1309 ULONG ulbLpszLabelName; 1310 ULONG ulFlags; 1311 } DTBLLABEL,*LPDTBLLABEL; 1312 #define SizedDtblLabel(n,u) struct _DTBLLABEL_ ## u { DTBLLABEL dtbllabel; TCHAR lpszLabelName[n]; } u 1313 1314 typedef struct _DTBLEDIT { 1315 ULONG ulbLpszCharsAllowed; 1316 ULONG ulFlags; 1317 ULONG ulNumCharsAllowed; 1318 ULONG ulPropTag; 1319 } DTBLEDIT,*LPDTBLEDIT; 1320 #define SizedDtblEdit(n,u) struct _DTBLEDIT_ ## u { DTBLEDIT dtbledit; TCHAR lpszCharsAllowed[n]; } u 1321 1322 #define MAPI_NO_HBAR ((ULONG) 0x00000001) 1323 #define MAPI_NO_VBAR ((ULONG) 0x00000002) 1324 1325 typedef struct _DTBLLBX { 1326 ULONG ulFlags; 1327 ULONG ulPRSetProperty; 1328 ULONG ulPRTableName; 1329 } DTBLLBX,*LPDTBLLBX; 1330 1331 typedef struct _DTBLCOMBOBOX { 1332 ULONG ulbLpszCharsAllowed; 1333 ULONG ulFlags; 1334 ULONG ulNumCharsAllowed; 1335 ULONG ulPRPropertyName; 1336 ULONG ulPRTableName; 1337 } DTBLCOMBOBOX,*LPDTBLCOMBOBOX; 1338 #define SizedDtblComboBox(n,u) struct _DTBLCOMBOBOX_ ## u { DTBLCOMBOBOX dtblcombobox; TCHAR lpszCharsAllowed[n]; } u 1339 1340 typedef struct _DTBLDDLBX { 1341 ULONG ulFlags; 1342 ULONG ulPRDisplayProperty; 1343 ULONG ulPRSetProperty; 1344 ULONG ulPRTableName; 1345 } DTBLDDLBX,*LPDTBLDDLBX; 1346 1347 typedef struct _DTBLCHECKBOX { 1348 ULONG ulbLpszLabel; 1349 ULONG ulFlags; 1350 ULONG ulPRPropertyName; 1351 } DTBLCHECKBOX,*LPDTBLCHECKBOX; 1352 #define SizedDtblCheckBox(n,u) struct _DTBLCHECKBOX_ ## u { DTBLCHECKBOX dtblcheckbox; TCHAR lpszLabel[n]; } u 1353 1354 typedef struct _DTBLGROUPBOX { 1355 ULONG ulbLpszLabel; 1356 ULONG ulFlags; 1357 } DTBLGROUPBOX,*LPDTBLGROUPBOX; 1358 #define SizedDtblGroupBox(n,u) struct _DTBLGROUPBOX_ ## u { DTBLGROUPBOX dtblgroupbox; TCHAR lpszLabel[n]; } u 1359 1360 typedef struct _DTBLBUTTON { 1361 ULONG ulbLpszLabel; 1362 ULONG ulFlags; 1363 ULONG ulPRControl; 1364 } DTBLBUTTON,*LPDTBLBUTTON; 1365 #define SizedDtblButton(n,u) struct _DTBLBUTTON_ ## u { DTBLBUTTON dtblbutton; TCHAR lpszLabel[n]; } u 1366 1367 typedef struct _DTBLPAGE { 1368 ULONG ulbLpszLabel; 1369 ULONG ulFlags; 1370 ULONG ulbLpszComponent; 1371 ULONG ulContext; 1372 } DTBLPAGE,*LPDTBLPAGE; 1373 #define SizedDtblPage(n,n1,u) struct _DTBLPAGE_ ## u { DTBLPAGE dtblpage; TCHAR lpszLabel[n]; TCHAR lpszComponent[n1]; } u 1374 1375 typedef struct _DTBLRADIOBUTTON { 1376 ULONG ulbLpszLabel; 1377 ULONG ulFlags; 1378 ULONG ulcButtons; 1379 ULONG ulPropTag; 1380 __LONG32 lReturnValue; 1381 } DTBLRADIOBUTTON,*LPDTBLRADIOBUTTON; 1382 #define SizedDtblRadioButton(n,u) struct _DTBLRADIOBUTTON_ ## u { DTBLRADIOBUTTON dtblradiobutton; TCHAR lpszLabel[n]; } u 1383 1384 typedef struct _DTBLMVLISTBOX { 1385 ULONG ulFlags; 1386 ULONG ulMVPropTag; 1387 } DTBLMVLISTBOX,*LPDTBLMVLISTBOX; 1388 1389 typedef struct _DTBLMVDDLBX { 1390 ULONG ulFlags; 1391 ULONG ulMVPropTag; 1392 } DTBLMVDDLBX,*LPDTBLMVDDLBX; 1393 1394 #define UI_SERVICE 0x00000002 1395 #define SERVICE_UI_ALWAYS 0x00000002 1396 #define SERVICE_UI_ALLOWED 0x00000010 1397 #define UI_CURRENT_PROVIDER_FIRST 0x00000004 1398 1399 #define MAPI_IPROVIDERADMIN_METHODS(IPURE) MAPIMETHOD(GetLastError) (THIS_ HRESULT hResult,ULONG ulFlags,LPMAPIERROR *lppMAPIError) IPURE; MAPIMETHOD(GetProviderTable) (THIS_ ULONG ulFlags,LPMAPITABLE *lppTable) IPURE; MAPIMETHOD(CreateProvider) (THIS_ LPTSTR lpszProvider,ULONG cValues,LPSPropValue lpProps,ULONG ulUIParam,ULONG ulFlags,MAPIUID *lpUID) IPURE; MAPIMETHOD(DeleteProvider) (THIS_ LPMAPIUID lpUID) IPURE; MAPIMETHOD(OpenProfileSection) (THIS_ LPMAPIUID lpUID,LPCIID lpInterface,ULONG ulFlags,LPPROFSECT *lppProfSect) IPURE; 1400 1401 #undef INTERFACE 1402 #define INTERFACE IProviderAdmin 1403 DECLARE_MAPI_INTERFACE_(IProviderAdmin,IUnknown) { 1404 BEGIN_INTERFACE 1405 MAPI_IUNKNOWN_METHODS(PURE) 1406 MAPI_IPROVIDERADMIN_METHODS(PURE) 1407 }; 1408 1409 #ifdef __cplusplus 1410 } 1411 #endif 1412 #endif 1413