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 35extern "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