1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653 |
- /*
- * M A P I D E F S . H
- *
- * Definitions used by MAPI clients and service providers.
- *
- * Copyright 1986-1999 Microsoft Corporation. All Rights Reserved.
- */
- #ifndef MAPIDEFS_H
- #define MAPIDEFS_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #if defined (WIN32) && !defined (_WIN32)
- #define _WIN32
- #endif
- #if defined (_WIN32) /* Must include WINDOWS.H on Win32 */
- #ifndef _WINDOWS_
- #define INC_OLE2 /* Get the OLE2 stuff */
- #define INC_RPC /* harmless on Windows NT; Windows 95 needs it */
- #define _INC_OLE /* Windows 95 will include OLE1 without this */
- #include <windows.h>
- #endif
- #ifndef _OLEERROR_H_
- #include <winerror.h>
- #endif
- #ifndef _OBJBASE_H_
- #include <objbase.h>
- #endif
- #endif
- #if defined (WIN16) || defined (DOS) || defined (DOS16)
- #ifndef _COMPOBJ_H_
- #include <compobj.h>
- #endif
- #endif
- #ifndef _INC_STDDEF
- #include <stddef.h>
- #endif
- /* Array dimension for structures with variable-sized arrays at the end. */
- #ifndef MAPI_DIM
- #define MAPI_DIM 1
- #endif
- /* Provider init type. Force to cdecl always */
- #ifndef STDMAPIINITCALLTYPE
- #if !defined (_MAC) && defined (_WIN32)
- #define STDMAPIINITCALLTYPE __cdecl
- #else
- #define STDMAPIINITCALLTYPE STDMETHODCALLTYPE
- #endif
- #define STDINITMETHODIMP HRESULT STDMAPIINITCALLTYPE
- #define STDINITMETHODIMP_(type) type STDMAPIINITCALLTYPE
- #endif
- #define MAPI_NT_SERVICE ((ULONG) 0x00010000) /* Provider is being loaded in an NT service */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Simple data types */
- #if !defined (MIDL_PASS) /* MIDL doesn't want to see these */
- typedef WORD WCHAR;
- #ifdef UNICODE
- typedef WCHAR TCHAR;
- #else
- typedef char TCHAR;
- #endif
- typedef WCHAR FAR * LPWSTR;
- typedef const WCHAR FAR * LPCWSTR;
- typedef TCHAR FAR * LPTSTR;
- typedef const TCHAR FAR * LPCTSTR;
- typedef BYTE FAR * LPBYTE;
- #endif /* defined MIDL_PASS */
- typedef ULONG FAR * LPULONG;
- #ifndef __LHANDLE
- #define __LHANDLE
- typedef ULONG_PTR LHANDLE, FAR * LPLHANDLE;
- #endif
- #if !defined(_WINBASE_) && !defined(_FILETIME_)
- #define _FILETIME_
- typedef struct _FILETIME
- {
- DWORD dwLowDateTime;
- DWORD dwHighDateTime;
- } FILETIME, FAR * LPFILETIME;
- #endif
- #ifndef BEGIN_INTERFACE
- #define BEGIN_INTERFACE
- #endif
- /*
- * This flag is used in many different MAPI calls to signify that
- * the object opened by the call should be modifiable (MAPI_MODIFY).
- * If the flag MAPI_MAX_ACCESS is set, the object returned should be
- * returned at the maximum access level allowed. An additional
- * property available on the object (PR_ACCESS_LEVEL) uses the same
- * MAPI_MODIFY flag to say just what this new access level is.
- */
- #define MAPI_MODIFY ((ULONG) 0x00000001)
- /*
- * The following flags are used to indicate to the client what access
- * level is permissible in the object. They appear in PR_ACCESS in
- * message and folder objects as well as in contents and associated
- * contents tables
- */
- #define MAPI_ACCESS_MODIFY ((ULONG) 0x00000001)
- #define MAPI_ACCESS_READ ((ULONG) 0x00000002)
- #define MAPI_ACCESS_DELETE ((ULONG) 0x00000004)
- #define MAPI_ACCESS_CREATE_HIERARCHY ((ULONG) 0x00000008)
- #define MAPI_ACCESS_CREATE_CONTENTS ((ULONG) 0x00000010)
- #define MAPI_ACCESS_CREATE_ASSOCIATED ((ULONG) 0x00000020)
- /*
- * The MAPI_UNICODE flag is used in many different MAPI calls to signify
- * that strings passed through the interface are in Unicode (a 16-bit
- * character set). The default is an 8-bit character set.
- *
- * The value fMapiUnicode can be used as the 'normal' value for
- * that bit, given the application's default character set.
- */
- #define MAPI_UNICODE ((ULONG) 0x80000000)
- #ifdef UNICODE
- #define fMapiUnicode MAPI_UNICODE
- #else
- #define fMapiUnicode 0
- #endif
- /* successful HRESULT */
- #define hrSuccess 0
- /* Recipient types */
- #ifndef MAPI_ORIG /* also defined in mapi.h */
- #define MAPI_ORIG 0 /* Recipient is message originator */
- #define MAPI_TO 1 /* Recipient is a primary recipient */
- #define MAPI_CC 2 /* Recipient is a copy recipient */
- #define MAPI_BCC 3 /* Recipient is blind copy recipient */
- #define MAPI_P1 0x10000000 /* Recipient is a P1 resend recipient */
- #define MAPI_SUBMITTED 0x80000000 /* Recipient is already processed */
- /* #define MAPI_AUTHORIZE 4 recipient is a CMC authorizing user */
- /*#define MAPI_DISCRETE 0x10000000 Recipient is a P1 resend recipient */
- #endif
- /* Bit definitions for abFlags[0] of ENTRYID */
- #define MAPI_SHORTTERM 0x80
- #define MAPI_NOTRECIP 0x40
- #define MAPI_THISSESSION 0x20
- #define MAPI_NOW 0x10
- #define MAPI_NOTRESERVED 0x08
- /* Bit definitions for abFlags[1] of ENTRYID */
- #define MAPI_COMPOUND 0x80
- /* ENTRYID */
- typedef struct
- {
- BYTE abFlags[4];
- BYTE ab[MAPI_DIM];
- } ENTRYID, FAR *LPENTRYID;
- #define CbNewENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
- #define CbENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
- #define SizedENTRYID(_cb, _name) \
- struct _ENTRYID_ ## _name \
- { \
- BYTE abFlags[4]; \
- BYTE ab[_cb]; \
- } _name
- /* Byte-order-independent version of GUID (world-unique identifier) */
- typedef struct _MAPIUID
- {
- BYTE ab[16];
- } MAPIUID, FAR * LPMAPIUID;
- /* Note: need to include C run-times (memory.h) to use this macro */
- #define IsEqualMAPIUID(lpuid1, lpuid2) (!memcmp(lpuid1, lpuid2, sizeof(MAPIUID)))
- /*
- * Constants for one-off entry ID:
- * The MAPIUID that identifies the one-off provider;
- * the flag that defines whether the embedded strings are Unicode;
- * the flag that specifies whether the recipient gets TNEF or not.
- */
- #define MAPI_ONE_OFF_UID { 0x81, 0x2b, 0x1f, 0xa4, 0xbe, 0xa3, 0x10, 0x19, \
- 0x9d, 0x6e, 0x00, 0xdd, 0x01, 0x0f, 0x54, 0x02 }
- #define MAPI_ONE_OFF_UNICODE 0x8000
- #define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
- /* Object type */
- #define MAPI_STORE ((ULONG) 0x00000001) /* Message Store */
- #define MAPI_ADDRBOOK ((ULONG) 0x00000002) /* Address Book */
- #define MAPI_FOLDER ((ULONG) 0x00000003) /* Folder */
- #define MAPI_ABCONT ((ULONG) 0x00000004) /* Address Book Container */
- #define MAPI_MESSAGE ((ULONG) 0x00000005) /* Message */
- #define MAPI_MAILUSER ((ULONG) 0x00000006) /* Individual Recipient */
- #define MAPI_ATTACH ((ULONG) 0x00000007) /* Attachment */
- #define MAPI_DISTLIST ((ULONG) 0x00000008) /* Distribution List Recipient */
- #define MAPI_PROFSECT ((ULONG) 0x00000009) /* Profile Section */
- #define MAPI_STATUS ((ULONG) 0x0000000A) /* Status Object */
- #define MAPI_SESSION ((ULONG) 0x0000000B) /* Session */
- #define MAPI_FORMINFO ((ULONG) 0x0000000C) /* Form Information */
- /*
- * Maximum length of profile names and passwords, not including
- * the null termination character.
- */
- #ifndef cchProfileNameMax
- #define cchProfileNameMax 64
- #define cchProfilePassMax 64
- #endif
- /* Property Types */
- #define MV_FLAG 0x1000 /* Multi-value flag */
- #define PT_UNSPECIFIED ((ULONG) 0) /* (Reserved for interface use) type doesn't matter to caller */
- #define PT_NULL ((ULONG) 1) /* NULL property value */
- #define PT_I2 ((ULONG) 2) /* Signed 16-bit value */
- #define PT_LONG ((ULONG) 3) /* Signed 32-bit value */
- #define PT_R4 ((ULONG) 4) /* 4-byte floating point */
- #define PT_DOUBLE ((ULONG) 5) /* Floating point double */
- #define PT_CURRENCY ((ULONG) 6) /* Signed 64-bit int (decimal w/ 4 digits right of decimal pt) */
- #define PT_APPTIME ((ULONG) 7) /* Application time */
- #define PT_ERROR ((ULONG) 10) /* 32-bit error value */
- #define PT_BOOLEAN ((ULONG) 11) /* 16-bit boolean (non-zero true) */
- #define PT_OBJECT ((ULONG) 13) /* Embedded object in a property */
- #define PT_I8 ((ULONG) 20) /* 8-byte signed integer */
- #define PT_STRING8 ((ULONG) 30) /* Null terminated 8-bit character string */
- #define PT_UNICODE ((ULONG) 31) /* Null terminated Unicode string */
- #define PT_SYSTIME ((ULONG) 64) /* FILETIME 64-bit int w/ number of 100ns periods since Jan 1,1601 */
- #define PT_CLSID ((ULONG) 72) /* OLE GUID */
- #define PT_BINARY ((ULONG) 258) /* Uninterpreted (counted byte array) */
- /* Changes are likely to these numbers, and to their structures. */
- /* Alternate property type names for ease of use */
- #define PT_SHORT PT_I2
- #define PT_I4 PT_LONG
- #define PT_FLOAT PT_R4
- #define PT_R8 PT_DOUBLE
- #define PT_LONGLONG PT_I8
- /*
- * The type of a MAPI-defined string property is indirected, so
- * that it defaults to Unicode string on a Unicode platform and to
- * String8 on an ANSI or DBCS platform.
- *
- * Macros are defined here both for the property type, and for the
- * field of the property value structure which should be
- * dereferenced to obtain the string pointer.
- */
- #ifdef UNICODE
- #define PT_TSTRING PT_UNICODE
- #define PT_MV_TSTRING (MV_FLAG|PT_UNICODE)
- #define LPSZ lpszW
- #define LPPSZ lppszW
- #define MVSZ MVszW
- #else
- #define PT_TSTRING PT_STRING8
- #define PT_MV_TSTRING (MV_FLAG|PT_STRING8)
- #define LPSZ lpszA
- #define LPPSZ lppszA
- #define MVSZ MVszA
- #endif
- /* Property Tags
- *
- * By convention, MAPI never uses 0 or FFFF as a property ID.
- * Use as null values, initializers, sentinels, or what have you.
- */
- #define PROP_TYPE_MASK ((ULONG)0x0000FFFF) /* Mask for Property type */
- #define PROP_TYPE(ulPropTag) (((ULONG)(ulPropTag))&PROP_TYPE_MASK)
- #define PROP_ID(ulPropTag) (((ULONG)(ulPropTag))>>16)
- #define PROP_TAG(ulPropType,ulPropID) ((((ULONG)(ulPropID))<<16)|((ULONG)(ulPropType)))
- #define PROP_ID_NULL 0
- #define PROP_ID_INVALID 0xFFFF
- #define PR_NULL PROP_TAG( PT_NULL, PROP_ID_NULL)
- #define CHANGE_PROP_TYPE(ulPropTag, ulPropType) \
- (((ULONG)0xFFFF0000 & ulPropTag) | ulPropType)
- /* Multi-valued Property Types */
- #define PT_MV_I2 (MV_FLAG|PT_I2)
- #define PT_MV_LONG (MV_FLAG|PT_LONG)
- #define PT_MV_R4 (MV_FLAG|PT_R4)
- #define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
- #define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
- #define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
- #define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
- #define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
- #define PT_MV_BINARY (MV_FLAG|PT_BINARY)
- #define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
- #define PT_MV_CLSID (MV_FLAG|PT_CLSID)
- #define PT_MV_I8 (MV_FLAG|PT_I8)
- /* Alternate property type names for ease of use */
- #define PT_MV_SHORT PT_MV_I2
- #define PT_MV_I4 PT_MV_LONG
- #define PT_MV_FLOAT PT_MV_R4
- #define PT_MV_R8 PT_MV_DOUBLE
- #define PT_MV_LONGLONG PT_MV_I8
- /*
- * Property type reserved bits
- *
- * MV_INSTANCE is used as a flag in table operations to request
- * that a multi-valued property be presented as a single-valued
- * property appearing in multiple rows.
- */
- #define MV_INSTANCE 0x2000
- #define MVI_FLAG (MV_FLAG | MV_INSTANCE)
- #define MVI_PROP(tag) ((tag) | MVI_FLAG)
- /* --------------- */
- /* Data Structures */
- /* --------------- */
- /* Property Tag Array */
- typedef struct _SPropTagArray
- {
- ULONG cValues;
- ULONG aulPropTag[MAPI_DIM];
- } SPropTagArray, FAR * LPSPropTagArray;
- #define CbNewSPropTagArray(_ctag) \
- (offsetof(SPropTagArray,aulPropTag) + (_ctag)*sizeof(ULONG))
- #define CbSPropTagArray(_lparray) \
- (offsetof(SPropTagArray,aulPropTag) + \
- (UINT)((_lparray)->cValues)*sizeof(ULONG))
- /* SPropTagArray */
- #define SizedSPropTagArray(_ctag, _name) \
- struct _SPropTagArray_ ## _name \
- { \
- ULONG cValues; \
- ULONG aulPropTag[_ctag]; \
- } _name
- /* -------------- */
- /* Property Value */
- /* -------------- */
- typedef struct _SPropValue SPropValue;
- /* 32-bit CURRENCY definition stolen from oaidl.h */
- /* 16-bit CURRENCY definition stolen from variant.h */
- #ifndef _tagCY_DEFINED
- #define _tagCY_DEFINED
- #define _CY_DEFINED
- #if (defined (WIN16) || defined (DOS)) && !defined (_VARIANT_H_)
- typedef struct FARSTRUCT tagCY {
- #ifdef _MAC
- long Hi;
- long Lo;
- #else
- unsigned long Lo;
- long Hi;
- #endif
- } CY;
- #elif defined (_WIN32)
- /* real definition that makes the C++ compiler happy */
- typedef union tagCY {
- struct {
- #ifdef _MAC
- long Hi;
- long Lo;
- #else
- unsigned long Lo;
- long Hi;
- #endif
- };
- LONGLONG int64;
- } CY;
- #endif /* 16-bit vs 32-bit definition */
- #endif
- /* size is 8 */
- typedef CY CURRENCY;
- typedef struct _SBinary
- {
- ULONG cb;
- LPBYTE lpb;
- } SBinary, FAR *LPSBinary;
- typedef struct _SShortArray
- {
- ULONG cValues;
- short int FAR *lpi;
- } SShortArray;
- typedef struct _SGuidArray
- {
- ULONG cValues;
- GUID FAR *lpguid;
- } SGuidArray;
- typedef struct _SRealArray
- {
- ULONG cValues;
- float FAR *lpflt;
- } SRealArray;
- typedef struct _SLongArray
- {
- ULONG cValues;
- LONG FAR *lpl;
- } SLongArray;
- typedef struct _SLargeIntegerArray
- {
- ULONG cValues;
- LARGE_INTEGER FAR *lpli;
- } SLargeIntegerArray;
- typedef struct _SDateTimeArray
- {
- ULONG cValues;
- FILETIME FAR *lpft;
- } SDateTimeArray;
- typedef struct _SAppTimeArray
- {
- ULONG cValues;
- double FAR *lpat;
- } SAppTimeArray;
- typedef struct _SCurrencyArray
- {
- ULONG cValues;
- CURRENCY FAR *lpcur;
- } SCurrencyArray;
- typedef struct _SBinaryArray
- {
- ULONG cValues;
- SBinary FAR *lpbin;
- } SBinaryArray;
- typedef struct _SDoubleArray
- {
- ULONG cValues;
- double FAR *lpdbl;
- } SDoubleArray;
- typedef struct _SWStringArray
- {
- ULONG cValues;
- LPWSTR FAR *lppszW;
- } SWStringArray;
- typedef struct _SLPSTRArray
- {
- ULONG cValues;
- LPSTR FAR *lppszA;
- } SLPSTRArray;
- typedef union _PV
- {
- short int i; /* case PT_I2 */
- LONG l; /* case PT_LONG */
- ULONG ul; /* alias for PT_LONG */
- float flt; /* case PT_R4 */
- double dbl; /* case PT_DOUBLE */
- unsigned short int b; /* case PT_BOOLEAN */
- CURRENCY cur; /* case PT_CURRENCY */
- double at; /* case PT_APPTIME */
- FILETIME ft; /* case PT_SYSTIME */
- LPSTR lpszA; /* case PT_STRING8 */
- SBinary bin; /* case PT_BINARY */
- LPWSTR lpszW; /* case PT_UNICODE */
- LPGUID lpguid; /* case PT_CLSID */
- LARGE_INTEGER li; /* case PT_I8 */
- SShortArray MVi; /* case PT_MV_I2 */
- SLongArray MVl; /* case PT_MV_LONG */
- SRealArray MVflt; /* case PT_MV_R4 */
- SDoubleArray MVdbl; /* case PT_MV_DOUBLE */
- SCurrencyArray MVcur; /* case PT_MV_CURRENCY */
- SAppTimeArray MVat; /* case PT_MV_APPTIME */
- SDateTimeArray MVft; /* case PT_MV_SYSTIME */
- SBinaryArray MVbin; /* case PT_MV_BINARY */
- SLPSTRArray MVszA; /* case PT_MV_STRING8 */
- SWStringArray MVszW; /* case PT_MV_UNICODE */
- SGuidArray MVguid; /* case PT_MV_CLSID */
- SLargeIntegerArray MVli; /* case PT_MV_I8 */
- SCODE err; /* case PT_ERROR */
- LONG x; /* case PT_NULL, PT_OBJECT (no usable value) */
- } __UPV;
- typedef struct _SPropValue
- {
- ULONG ulPropTag;
- ULONG dwAlignPad;
- union _PV Value;
- } SPropValue, FAR * LPSPropValue;
- /* --------------------------------------------- */
- /* Property Problem and Property Problem Arrays */
- /* --------------------------------------------- */
- typedef struct _SPropProblem
- {
- ULONG ulIndex;
- ULONG ulPropTag;
- SCODE scode;
- } SPropProblem, FAR * LPSPropProblem;
- typedef struct _SPropProblemArray
- {
- ULONG cProblem;
- SPropProblem aProblem[MAPI_DIM];
- } SPropProblemArray, FAR * LPSPropProblemArray;
- #define CbNewSPropProblemArray(_cprob) \
- (offsetof(SPropProblemArray,aProblem) + (_cprob)*sizeof(SPropProblem))
- #define CbSPropProblemArray(_lparray) \
- (offsetof(SPropProblemArray,aProblem) + \
- (UINT) ((_lparray)->cProblem*sizeof(SPropProblem)))
- #define SizedSPropProblemArray(_cprob, _name) \
- struct _SPropProblemArray_ ## _name \
- { \
- ULONG cProblem; \
- SPropProblem aProblem[_cprob]; \
- } _name
- /*
- * ENTRYLIST
- */
- typedef SBinaryArray ENTRYLIST, FAR *LPENTRYLIST;
- /*
- * FLATENTRYLIST
- * MTSID
- * FLATMTSIDLIST
- */
- typedef struct {
- ULONG cb;
- BYTE abEntry[MAPI_DIM];
- } FLATENTRY, FAR *LPFLATENTRY;
- typedef struct {
- ULONG cEntries;
- ULONG cbEntries;
- BYTE abEntries[MAPI_DIM];
- } FLATENTRYLIST, FAR *LPFLATENTRYLIST;
- typedef struct {
- ULONG cb;
- BYTE ab[MAPI_DIM];
- } MTSID, FAR *LPMTSID;
- typedef struct {
- ULONG cMTSIDs;
- ULONG cbMTSIDs;
- BYTE abMTSIDs[MAPI_DIM];
- } FLATMTSIDLIST, FAR *LPFLATMTSIDLIST;
- #define CbNewFLATENTRY(_cb) (offsetof(FLATENTRY,abEntry) + (_cb))
- #define CbFLATENTRY(_lpentry) (offsetof(FLATENTRY,abEntry) + (_lpentry)->cb)
- #define CbNewFLATENTRYLIST(_cb) (offsetof(FLATENTRYLIST,abEntries) + (_cb))
- #define CbFLATENTRYLIST(_lplist) (offsetof(FLATENTRYLIST,abEntries) + (_lplist)->cbEntries)
- #define CbNewMTSID(_cb) (offsetof(MTSID,ab) + (_cb))
- #define CbMTSID(_lpentry) (offsetof(MTSID,ab) + (_lpentry)->cb)
- #define CbNewFLATMTSIDLIST(_cb) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_cb))
- #define CbFLATMTSIDLIST(_lplist) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_lplist)->cbMTSIDs)
- /* No SizedXXX macros for these types. */
- /* ------------------------------ */
- /* ADRENTRY, ADRLIST */
- typedef struct _ADRENTRY
- {
- ULONG ulReserved1; /* Never used */
- ULONG cValues;
- LPSPropValue rgPropVals;
- } ADRENTRY, FAR * LPADRENTRY;
- typedef struct _ADRLIST
- {
- ULONG cEntries;
- ADRENTRY aEntries[MAPI_DIM];
- } ADRLIST, FAR * LPADRLIST;
- #define CbNewADRLIST(_centries) \
- (offsetof(ADRLIST,aEntries) + (_centries)*sizeof(ADRENTRY))
- #define CbADRLIST(_lpadrlist) \
- (offsetof(ADRLIST,aEntries) + (UINT)(_lpadrlist)->cEntries*sizeof(ADRENTRY))
- #define SizedADRLIST(_centries, _name) \
- struct _ADRLIST_ ## _name \
- { \
- ULONG cEntries; \
- ADRENTRY aEntries[_centries]; \
- } _name
- /* ------------------------------ */
- /* SRow, SRowSet */
- typedef struct _SRow
- {
- ULONG ulAdrEntryPad; /* Pad so SRow's can map to ADRENTRY's */
- ULONG cValues; /* Count of property values */
- LPSPropValue lpProps; /* Property value array */
- } SRow, FAR * LPSRow;
- typedef struct _SRowSet
- {
- ULONG cRows; /* Count of rows */
- SRow aRow[MAPI_DIM]; /* Array of rows */
- } SRowSet, FAR * LPSRowSet;
- #define CbNewSRowSet(_crow) (offsetof(SRowSet,aRow) + (_crow)*sizeof(SRow))
- #define CbSRowSet(_lprowset) (offsetof(SRowSet,aRow) + \
- (UINT)((_lprowset)->cRows*sizeof(SRow)))
- #define SizedSRowSet(_crow, _name) \
- struct _SRowSet_ ## _name \
- { \
- ULONG cRows; \
- SRow aRow[_crow]; \
- } _name
- /* MAPI Allocation Routines ------------------------------------------------ */
- typedef SCODE (STDMETHODCALLTYPE ALLOCATEBUFFER)(
- ULONG cbSize,
- LPVOID FAR * lppBuffer
- );
- typedef SCODE (STDMETHODCALLTYPE ALLOCATEMORE)(
- ULONG cbSize,
- LPVOID lpObject,
- LPVOID FAR * lppBuffer
- );
- typedef ULONG (STDAPICALLTYPE FREEBUFFER)(
- LPVOID lpBuffer
- );
- typedef ALLOCATEBUFFER FAR *LPALLOCATEBUFFER;
- typedef ALLOCATEMORE FAR * LPALLOCATEMORE;
- typedef FREEBUFFER FAR * LPFREEBUFFER;
- /* MAPI Component Object Model Macros -------------------------------------- */
- #if defined(MAPI_IF) && (!defined(__cplusplus) || defined(CINTERFACE))
- #define DECLARE_MAPI_INTERFACE(iface) \
- typedef struct iface##Vtbl iface##Vtbl, FAR * iface; \
- struct iface##Vtbl
- #define DECLARE_MAPI_INTERFACE_(iface, baseiface) \
- DECLARE_MAPI_INTERFACE(iface)
- #define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
- typedef struct iface##Vtbl iface##Vtbl, FAR * iface, FAR * FAR * piface;
- #else
- #define DECLARE_MAPI_INTERFACE(iface) \
- DECLARE_INTERFACE(iface)
- #define DECLARE_MAPI_INTERFACE_(iface, baseiface) \
- DECLARE_INTERFACE_(iface, baseiface)
- #ifdef __cplusplus
- #define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
- interface iface; typedef iface FAR * piface
- #else
- #define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
- typedef interface iface iface, FAR * piface
- #endif
- #endif
- #define MAPIMETHOD(method) MAPIMETHOD_(HRESULT, method)
- #define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
- #define MAPIMETHOD_DECLARE(type, method, prefix) \
- STDMETHODIMP_(type) prefix##method
- #define MAPIMETHOD_TYPEDEF(type, method, prefix) \
- typedef type (STDMETHODCALLTYPE prefix##method##_METHOD)
- #define MAPI_IUNKNOWN_METHODS(IPURE) \
- MAPIMETHOD(QueryInterface) \
- (THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE; \
- MAPIMETHOD_(ULONG,AddRef) (THIS) IPURE; \
- MAPIMETHOD_(ULONG,Release) (THIS) IPURE; \
- #undef IMPL
- #define IMPL
- /* Pointers to MAPI Interfaces --------------------------------------------- */
- typedef const IID FAR * LPCIID;
- DECLARE_MAPI_INTERFACE_PTR(IMsgStore, LPMDB);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIFolder, LPMAPIFOLDER);
- DECLARE_MAPI_INTERFACE_PTR(IMessage, LPMESSAGE);
- DECLARE_MAPI_INTERFACE_PTR(IAttach, LPATTACH);
- DECLARE_MAPI_INTERFACE_PTR(IAddrBook, LPADRBOOK);
- DECLARE_MAPI_INTERFACE_PTR(IABContainer, LPABCONT);
- DECLARE_MAPI_INTERFACE_PTR(IMailUser, LPMAILUSER);
- DECLARE_MAPI_INTERFACE_PTR(IDistList, LPDISTLIST);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIStatus, LPMAPISTATUS);
- DECLARE_MAPI_INTERFACE_PTR(IMAPITable, LPMAPITABLE);
- DECLARE_MAPI_INTERFACE_PTR(IProfSect, LPPROFSECT);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIProp, LPMAPIPROP);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIContainer, LPMAPICONTAINER);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIAdviseSink, LPMAPIADVISESINK);
- DECLARE_MAPI_INTERFACE_PTR(IMAPIProgress, LPMAPIPROGRESS);
- DECLARE_MAPI_INTERFACE_PTR(IProviderAdmin, LPPROVIDERADMIN);
- /* Extended MAPI Error Information ----------------------------------------- */
- typedef struct _MAPIERROR
- {
- ULONG ulVersion;
- LPTSTR lpszError;
- LPTSTR lpszComponent;
- ULONG ulLowLevelError;
- ULONG ulContext;
- } MAPIERROR, FAR * LPMAPIERROR;
- /* IMAPIAdviseSink Interface ----------------------------------------------- */
- /*
- * Notification event types. The event types can be combined in a bitmask
- * for filtering. Each one has a parameter structure associated with it:
- *
- * fnevCriticalError ERROR_NOTIFICATION
- * fnevNewMail NEWMAIL_NOTIFICATION
- * fnevObjectCreated OBJECT_NOTIFICATION
- * fnevObjectDeleted OBJECT_NOTIFICATION
- * fnevObjectModified OBJECT_NOTIFICATION
- * fnevObjectCopied OBJECT_NOTIFICATION
- * fnevSearchComplete OBJECT_NOTIFICATION
- * fnevTableModified TABLE_NOTIFICATION
- * fnevStatusObjectModified ?
- *
- * fnevExtended EXTENDED_NOTIFICATION
- */
- #define fnevCriticalError ((ULONG) 0x00000001)
- #define fnevNewMail ((ULONG) 0x00000002)
- #define fnevObjectCreated ((ULONG) 0x00000004)
- #define fnevObjectDeleted ((ULONG) 0x00000008)
- #define fnevObjectModified ((ULONG) 0x00000010)
- #define fnevObjectMoved ((ULONG) 0x00000020)
- #define fnevObjectCopied ((ULONG) 0x00000040)
- #define fnevSearchComplete ((ULONG) 0x00000080)
- #define fnevTableModified ((ULONG) 0x00000100)
- #define fnevStatusObjectModified ((ULONG) 0x00000200)
- #define fnevReservedForMapi ((ULONG) 0x40000000)
- #define fnevExtended ((ULONG) 0x80000000)
- /* TABLE_NOTIFICATION event types passed in ulTableEvent */
- #define TABLE_CHANGED 1
- #define TABLE_ERROR 2
- #define TABLE_ROW_ADDED 3
- #define TABLE_ROW_DELETED 4
- #define TABLE_ROW_MODIFIED 5
- #define TABLE_SORT_DONE 6
- #define TABLE_RESTRICT_DONE 7
- #define TABLE_SETCOL_DONE 8
- #define TABLE_RELOAD 9
- /* Event Structures */
- typedef struct _ERROR_NOTIFICATION
- {
- ULONG cbEntryID;
- LPENTRYID lpEntryID;
- SCODE scode;
- ULONG ulFlags; /* 0 or MAPI_UNICODE */
- LPMAPIERROR lpMAPIError; /* Detailed error information */
- } ERROR_NOTIFICATION;
- typedef struct _NEWMAIL_NOTIFICATION
- {
- ULONG cbEntryID;
- LPENTRYID lpEntryID; /* identifies the new message */
- ULONG cbParentID;
- LPENTRYID lpParentID; /* identifies the folder it lives in */
- ULONG ulFlags; /* 0 or MAPI_UNICODE */
- LPTSTR lpszMessageClass; /* message class (UNICODE or string8) */
- ULONG ulMessageFlags; /* copy of PR_MESSAGE_FLAGS */
- } NEWMAIL_NOTIFICATION;
- typedef struct _OBJECT_NOTIFICATION
- {
- ULONG cbEntryID;
- LPENTRYID lpEntryID; /* EntryID of object */
- ULONG ulObjType; /* Type of object */
- ULONG cbParentID;
- LPENTRYID lpParentID; /* EntryID of parent object */
- ULONG cbOldID;
- LPENTRYID lpOldID; /* EntryID of old object */
- ULONG cbOldParentID;
- LPENTRYID lpOldParentID; /* EntryID of old parent */
- LPSPropTagArray lpPropTagArray;
- } OBJECT_NOTIFICATION;
- typedef struct _TABLE_NOTIFICATION
- {
- ULONG ulTableEvent; /* Identifies WHICH table event */
- HRESULT hResult; /* Value for TABLE_ERROR */
- SPropValue propIndex; /* This row's "index property" */
- SPropValue propPrior; /* Preceding row's "index property" */
- SRow row; /* New data of added/modified row */
- ULONG ulPad; /* Force to 8-byte boundary */
- } TABLE_NOTIFICATION;
- typedef struct _EXTENDED_NOTIFICATION
- {
- ULONG ulEvent; /* extended event code */
- ULONG cb; /* size of event parameters */
- LPBYTE pbEventParameters; /* event parameters */
- } EXTENDED_NOTIFICATION;
- typedef struct
- {
- ULONG cbEntryID;
- LPENTRYID lpEntryID;
- ULONG cValues;
- LPSPropValue lpPropVals;
- } STATUS_OBJECT_NOTIFICATION;
- typedef struct _NOTIFICATION
- {
- ULONG ulEventType; /* notification type, i.e. fnevSomething */
- ULONG ulAlignPad; /* Force to 8-byte boundary */
- union
- {
- ERROR_NOTIFICATION err;
- NEWMAIL_NOTIFICATION newmail;
- OBJECT_NOTIFICATION obj;
- TABLE_NOTIFICATION tab;
- EXTENDED_NOTIFICATION ext;
- STATUS_OBJECT_NOTIFICATION statobj;
- } info;
- } NOTIFICATION, FAR * LPNOTIFICATION;
- /* Interface used for registering and issuing notification callbacks. */
- #define MAPI_IMAPIADVISESINK_METHODS(IPURE) \
- MAPIMETHOD_(ULONG, OnNotify) \
- (THIS_ ULONG cNotif, \
- LPNOTIFICATION lpNotifications) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIAdviseSink
- DECLARE_MAPI_INTERFACE_(IMAPIAdviseSink, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIADVISESINK_METHODS(PURE)
- };
- /* Callback function type for MAPIAllocAdviseSink */
- typedef long (STDAPICALLTYPE NOTIFCALLBACK) (
- LPVOID lpvContext,
- ULONG cNotification,
- LPNOTIFICATION lpNotifications);
- typedef NOTIFCALLBACK FAR * LPNOTIFCALLBACK;
- /*
- * Message name for the 16-bit MAPI notififcation engine.
- * This can be used in 16-bit applications to force processing
- * of notification callbacks.
- */
- #define szMAPINotificationMsg "MAPI Notify window message"
- /* IMAPIProgress Interface ------------------------------------------------- */
- /* Flag values for the progress indicator */
- #define MAPI_TOP_LEVEL ((ULONG) 0x00000001)
- #define MAPI_IMAPIPROGRESS_METHODS(IPURE) \
- MAPIMETHOD(Progress) \
- (THIS_ ULONG ulValue, \
- ULONG ulCount, \
- ULONG ulTotal) IPURE; \
- MAPIMETHOD(GetFlags) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(GetMax) \
- (THIS_ ULONG FAR * lpulMax) IPURE; \
- MAPIMETHOD(GetMin) \
- (THIS_ ULONG FAR * lpulMin) IPURE; \
- MAPIMETHOD(SetLimits) \
- (THIS_ LPULONG lpulMin, \
- LPULONG lpulMax, \
- LPULONG lpulFlags) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIProgress
- DECLARE_MAPI_INTERFACE_(IMAPIProgress, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROGRESS_METHODS(PURE)
- };
- /* IMAPIProp Interface ----------------------------------------------------- */
- /* GetLastError */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /*
- * Version:
- */
- #define MAPI_ERROR_VERSION 0x00000000L
- /* GetPropList */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetProps */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* SaveChanges */
- #define KEEP_OPEN_READONLY ((ULONG) 0x00000001)
- #define KEEP_OPEN_READWRITE ((ULONG) 0x00000002)
- #define FORCE_SAVE ((ULONG) 0x00000004)
- /* define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* OpenProperty - ulFlags */
- /****** MAPI_MODIFY ((ULONG) 0x00000001) above */
- #define MAPI_CREATE ((ULONG) 0x00000002)
- #define STREAM_APPEND ((ULONG) 0x00000004)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* OpenProperty - ulInterfaceOptions, IID_IMAPITable */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* CopyTo, CopyProps */
- #define MAPI_MOVE ((ULONG) 0x00000001)
- #define MAPI_NOREPLACE ((ULONG) 0x00000002)
- #define MAPI_DECLINE_OK ((ULONG) 0x00000004)
- #ifndef MAPI_DIALOG /* also defined in mapi.h */
- #define MAPI_DIALOG ((ULONG) 0x00000008)
- #endif
- #ifndef MAPI_USE_DEFAULT /* also defined in mapi.h */
- #define MAPI_USE_DEFAULT 0x00000040 /* Use default profile in logon */
- #endif
- /* Flags used in GetIDsFromNames */
- /****** MAPI_CREATE ((ULONG) 0x00000002) above */
- /* Flags used in GetNamesFromIDs (bit fields) */
- #define MAPI_NO_STRINGS ((ULONG) 0x00000001)
- #define MAPI_NO_IDS ((ULONG) 0x00000002)
- /* Union discriminator */
- #define MNID_ID 0
- #define MNID_STRING 1
- typedef struct _MAPINAMEID
- {
- LPGUID lpguid;
- ULONG ulKind;
- union {
- LONG lID;
- LPWSTR lpwstrName;
- } Kind;
- } MAPINAMEID, FAR * LPMAPINAMEID;
- #define MAPI_IMAPIPROP_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(SaveChanges) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(GetProps) \
- (THIS_ LPSPropTagArray lpPropTagArray, \
- ULONG ulFlags, \
- ULONG FAR * lpcValues, \
- LPSPropValue FAR * lppPropArray) IPURE; \
- MAPIMETHOD(GetPropList) \
- (THIS_ ULONG ulFlags, \
- LPSPropTagArray FAR * lppPropTagArray) IPURE; \
- MAPIMETHOD(OpenProperty) \
- (THIS_ ULONG ulPropTag, \
- LPCIID lpiid, \
- ULONG ulInterfaceOptions, \
- ULONG ulFlags, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(SetProps) \
- (THIS_ ULONG cValues, \
- LPSPropValue lpPropArray, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(DeleteProps) \
- (THIS_ LPSPropTagArray lpPropTagArray, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(CopyTo) \
- (THIS_ ULONG ciidExclude, \
- LPCIID rgiidExclude, \
- LPSPropTagArray lpExcludeProps, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- LPCIID lpInterface, \
- LPVOID lpDestObj, \
- ULONG ulFlags, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(CopyProps) \
- (THIS_ LPSPropTagArray lpIncludeProps, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- LPCIID lpInterface, \
- LPVOID lpDestObj, \
- ULONG ulFlags, \
- LPSPropProblemArray FAR * lppProblems) IPURE; \
- MAPIMETHOD(GetNamesFromIDs) \
- (THIS_ LPSPropTagArray FAR * lppPropTags, \
- LPGUID lpPropSetGuid, \
- ULONG ulFlags, \
- ULONG FAR * lpcPropNames, \
- LPMAPINAMEID FAR * FAR * lpppPropNames) IPURE; \
- MAPIMETHOD(GetIDsFromNames) \
- (THIS_ ULONG cPropNames, \
- LPMAPINAMEID FAR * lppPropNames, \
- ULONG ulFlags, \
- LPSPropTagArray FAR * lppPropTags) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIProp
- DECLARE_MAPI_INTERFACE_(IMAPIProp, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- };
- /* IMAPITable Interface ---------------------------------------------------- */
- /* Table status */
- #define TBLSTAT_COMPLETE ((ULONG) 0)
- #define TBLSTAT_QCHANGED ((ULONG) 7)
- #define TBLSTAT_SORTING ((ULONG) 9)
- #define TBLSTAT_SORT_ERROR ((ULONG) 10)
- #define TBLSTAT_SETTING_COLS ((ULONG) 11)
- #define TBLSTAT_SETCOL_ERROR ((ULONG) 13)
- #define TBLSTAT_RESTRICTING ((ULONG) 14)
- #define TBLSTAT_RESTRICT_ERROR ((ULONG) 15)
- /* Table Type */
- #define TBLTYPE_SNAPSHOT ((ULONG) 0)
- #define TBLTYPE_KEYSET ((ULONG) 1)
- #define TBLTYPE_DYNAMIC ((ULONG) 2)
- /* Sort order */
- /* bit 0: set if descending, clear if ascending */
- #define TABLE_SORT_ASCEND ((ULONG) 0x00000000)
- #define TABLE_SORT_DESCEND ((ULONG) 0x00000001)
- #define TABLE_SORT_COMBINE ((ULONG) 0x00000002)
- /* Data structures */
- typedef struct _SSortOrder
- {
- ULONG ulPropTag; /* Column to sort on */
- ULONG ulOrder; /* Ascending, descending, combine to left */
- } SSortOrder, FAR * LPSSortOrder;
- typedef struct _SSortOrderSet
- {
- ULONG cSorts; /* Number of sort columns in aSort below*/
- ULONG cCategories; /* 0 for non-categorized, up to cSorts */
- ULONG cExpanded; /* 0 if no categories start expanded, */
- /* up to cExpanded */
- SSortOrder aSort[MAPI_DIM]; /* The sort orders */
- } SSortOrderSet, FAR * LPSSortOrderSet;
- #define CbNewSSortOrderSet(_csort) \
- (offsetof(SSortOrderSet,aSort) + (_csort)*sizeof(SSortOrder))
- #define CbSSortOrderSet(_lpset) \
- (offsetof(SSortOrderSet,aSort) + \
- (UINT)((_lpset)->cSorts*sizeof(SSortOrder)))
- #define SizedSSortOrderSet(_csort, _name) \
- struct _SSortOrderSet_ ## _name \
- { \
- ULONG cSorts; \
- ULONG cCategories; \
- ULONG cExpanded; \
- SSortOrder aSort[_csort]; \
- } _name
- typedef ULONG BOOKMARK;
- #define BOOKMARK_BEGINNING ((BOOKMARK) 0) /* Before first row */
- #define BOOKMARK_CURRENT ((BOOKMARK) 1) /* Before current row */
- #define BOOKMARK_END ((BOOKMARK) 2) /* After last row */
- /* Fuzzy Level */
- #define FL_FULLSTRING ((ULONG) 0x00000000)
- #define FL_SUBSTRING ((ULONG) 0x00000001)
- #define FL_PREFIX ((ULONG) 0x00000002)
- #define FL_IGNORECASE ((ULONG) 0x00010000)
- #define FL_IGNORENONSPACE ((ULONG) 0x00020000)
- #define FL_LOOSE ((ULONG) 0x00040000)
- /* Restrictions */
- typedef struct _SRestriction FAR * LPSRestriction;
- /* Restriction types */
- #define RES_AND ((ULONG) 0x00000000)
- #define RES_OR ((ULONG) 0x00000001)
- #define RES_NOT ((ULONG) 0x00000002)
- #define RES_CONTENT ((ULONG) 0x00000003)
- #define RES_PROPERTY ((ULONG) 0x00000004)
- #define RES_COMPAREPROPS ((ULONG) 0x00000005)
- #define RES_BITMASK ((ULONG) 0x00000006)
- #define RES_SIZE ((ULONG) 0x00000007)
- #define RES_EXIST ((ULONG) 0x00000008)
- #define RES_SUBRESTRICTION ((ULONG) 0x00000009)
- #define RES_COMMENT ((ULONG) 0x0000000A)
- /* Relational operators. These apply to all property comparison restrictions. */
- #define RELOP_LT ((ULONG) 0) /* < */
- #define RELOP_LE ((ULONG) 1) /* <= */
- #define RELOP_GT ((ULONG) 2) /* > */
- #define RELOP_GE ((ULONG) 3) /* >= */
- #define RELOP_EQ ((ULONG) 4) /* == */
- #define RELOP_NE ((ULONG) 5) /* != */
- #define RELOP_RE ((ULONG) 6) /* LIKE (Regular expression) */
- /* Bitmask operators, for RES_BITMASK only. */
- #define BMR_EQZ ((ULONG) 0) /* ==0 */
- #define BMR_NEZ ((ULONG) 1) /* !=0 */
- /* Subobject identifiers for RES_SUBRESTRICTION only. See MAPITAGS.H. */
- /* #define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12) */
- /* #define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13) */
- typedef struct _SAndRestriction
- {
- ULONG cRes;
- LPSRestriction lpRes;
- } SAndRestriction;
- typedef struct _SOrRestriction
- {
- ULONG cRes;
- LPSRestriction lpRes;
- } SOrRestriction;
- typedef struct _SNotRestriction
- {
- ULONG ulReserved;
- LPSRestriction lpRes;
- } SNotRestriction;
- typedef struct _SContentRestriction
- {
- ULONG ulFuzzyLevel;
- ULONG ulPropTag;
- LPSPropValue lpProp;
- } SContentRestriction;
- typedef struct _SBitMaskRestriction
- {
- ULONG relBMR;
- ULONG ulPropTag;
- ULONG ulMask;
- } SBitMaskRestriction;
- typedef struct _SPropertyRestriction
- {
- ULONG relop;
- ULONG ulPropTag;
- LPSPropValue lpProp;
- } SPropertyRestriction;
- typedef struct _SComparePropsRestriction
- {
- ULONG relop;
- ULONG ulPropTag1;
- ULONG ulPropTag2;
- } SComparePropsRestriction;
- typedef struct _SSizeRestriction
- {
- ULONG relop;
- ULONG ulPropTag;
- ULONG cb;
- } SSizeRestriction;
- typedef struct _SExistRestriction
- {
- ULONG ulReserved1;
- ULONG ulPropTag;
- ULONG ulReserved2;
- } SExistRestriction;
- typedef struct _SSubRestriction
- {
- ULONG ulSubObject;
- LPSRestriction lpRes;
- } SSubRestriction;
- typedef struct _SCommentRestriction
- {
- ULONG cValues; /* # of properties in lpProp */
- LPSRestriction lpRes;
- LPSPropValue lpProp;
- } SCommentRestriction;
- typedef struct _SRestriction
- {
- ULONG rt; /* Restriction type */
- union
- {
- SComparePropsRestriction resCompareProps; /* first */
- SAndRestriction resAnd;
- SOrRestriction resOr;
- SNotRestriction resNot;
- SContentRestriction resContent;
- SPropertyRestriction resProperty;
- SBitMaskRestriction resBitMask;
- SSizeRestriction resSize;
- SExistRestriction resExist;
- SSubRestriction resSub;
- SCommentRestriction resComment;
- } res;
- } SRestriction;
- /* SComparePropsRestriction is first in the union so that */
- /* static initializations of 3-value restriction work. */
- /* Flags of the methods of IMAPITable */
- /* QueryColumn */
- #define TBL_ALL_COLUMNS ((ULONG) 0x00000001)
- /* QueryRows */
- /* Possible values for PR_ROW_TYPE (for categorization) */
- #define TBL_LEAF_ROW ((ULONG) 1)
- #define TBL_EMPTY_CATEGORY ((ULONG) 2)
- #define TBL_EXPANDED_CATEGORY ((ULONG) 3)
- #define TBL_COLLAPSED_CATEGORY ((ULONG) 4)
- /* Table wait flag */
- #define TBL_NOWAIT ((ULONG) 0x00000001)
- /* alternative name for TBL_NOWAIT */
- #define TBL_ASYNC ((ULONG) 0x00000001)
- #define TBL_BATCH ((ULONG) 0x00000002)
- /* FindRow */
- #define DIR_BACKWARD ((ULONG) 0x00000001)
- /* Table cursor states */
- #define TBL_NOADVANCE ((ULONG) 0x00000001)
- #define MAPI_IMAPITABLE_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(Advise) \
- (THIS_ ULONG ulEventMask, \
- LPMAPIADVISESINK lpAdviseSink, \
- ULONG FAR * lpulConnection) IPURE; \
- MAPIMETHOD(Unadvise) \
- (THIS_ ULONG ulConnection) IPURE; \
- MAPIMETHOD(GetStatus) \
- (THIS_ ULONG FAR * lpulTableStatus, \
- ULONG FAR * lpulTableType) IPURE; \
- MAPIMETHOD(SetColumns) \
- (THIS_ LPSPropTagArray lpPropTagArray, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(QueryColumns) \
- (THIS_ ULONG ulFlags, \
- LPSPropTagArray FAR * lpPropTagArray) IPURE; \
- MAPIMETHOD(GetRowCount) \
- (THIS_ ULONG ulFlags, \
- ULONG FAR * lpulCount) IPURE; \
- MAPIMETHOD(SeekRow) \
- (THIS_ BOOKMARK bkOrigin, \
- LONG lRowCount, \
- LONG FAR * lplRowsSought) IPURE; \
- MAPIMETHOD(SeekRowApprox) \
- (THIS_ ULONG ulNumerator, \
- ULONG ulDenominator) IPURE; \
- MAPIMETHOD(QueryPosition) \
- (THIS_ ULONG FAR * lpulRow, \
- ULONG FAR * lpulNumerator, \
- ULONG FAR * lpulDenominator) IPURE; \
- MAPIMETHOD(FindRow) \
- (THIS_ LPSRestriction lpRestriction, \
- BOOKMARK bkOrigin, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(Restrict) \
- (THIS_ LPSRestriction lpRestriction, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(CreateBookmark) \
- (THIS_ BOOKMARK FAR * lpbkPosition) IPURE; \
- MAPIMETHOD(FreeBookmark) \
- (THIS_ BOOKMARK bkPosition) IPURE; \
- MAPIMETHOD(SortTable) \
- (THIS_ LPSSortOrderSet lpSortCriteria, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(QuerySortOrder) \
- (THIS_ LPSSortOrderSet FAR * lppSortCriteria) IPURE; \
- MAPIMETHOD(QueryRows) \
- (THIS_ LONG lRowCount, \
- ULONG ulFlags, \
- LPSRowSet FAR * lppRows) IPURE; \
- MAPIMETHOD(Abort) (THIS) IPURE; \
- MAPIMETHOD(ExpandRow) \
- (THIS_ ULONG cbInstanceKey, \
- LPBYTE pbInstanceKey, \
- ULONG ulRowCount, \
- ULONG ulFlags, \
- LPSRowSet FAR * lppRows, \
- ULONG FAR * lpulMoreRows) IPURE; \
- MAPIMETHOD(CollapseRow) \
- (THIS_ ULONG cbInstanceKey, \
- LPBYTE pbInstanceKey, \
- ULONG ulFlags, \
- ULONG FAR * lpulRowCount) IPURE; \
- MAPIMETHOD(WaitForCompletion) \
- (THIS_ ULONG ulFlags, \
- ULONG ulTimeout, \
- ULONG FAR * lpulTableStatus) IPURE; \
- MAPIMETHOD(GetCollapseState) \
- (THIS_ ULONG ulFlags, \
- ULONG cbInstanceKey, \
- LPBYTE lpbInstanceKey, \
- ULONG FAR * lpcbCollapseState, \
- LPBYTE FAR * lppbCollapseState) IPURE; \
- MAPIMETHOD(SetCollapseState) \
- (THIS_ ULONG ulFlags, \
- ULONG cbCollapseState, \
- LPBYTE pbCollapseState, \
- BOOKMARK FAR * lpbkLocation) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPITable
- DECLARE_MAPI_INTERFACE_(IMAPITable, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPITABLE_METHODS(PURE)
- };
- /* IProfSect Interface ----------------------------------------------------- */
- /* Standard section for public profile properties */
- #define PS_PROFILE_PROPERTIES_INIT \
- { 0x98, 0x15, 0xAC, 0x08, 0xAA, 0xB0, 0x10, 0x1A, \
- 0x8C, 0x93, 0x08, 0x00, 0x2B, 0x2A, 0x56, 0xC2 }
- #define MAPI_IPROFSECT_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IProfSect
- DECLARE_MAPI_INTERFACE_(IProfSect, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IPROFSECT_METHODS(PURE)
- };
- /* IMAPIStatus Interface --------------------------------------------------- */
- /* Values for PR_RESOURCE_TYPE, _METHODS, _FLAGS */
- #define MAPI_STORE_PROVIDER ((ULONG) 33) /* Message Store */
- #define MAPI_AB ((ULONG) 34) /* Address Book */
- #define MAPI_AB_PROVIDER ((ULONG) 35) /* Address Book Provider */
- #define MAPI_TRANSPORT_PROVIDER ((ULONG) 36) /* Transport Provider */
- #define MAPI_SPOOLER ((ULONG) 37) /* Message Spooler */
- #define MAPI_PROFILE_PROVIDER ((ULONG) 38) /* Profile Provider */
- #define MAPI_SUBSYSTEM ((ULONG) 39) /* Overall Subsystem Status */
- #define MAPI_HOOK_PROVIDER ((ULONG) 40) /* Spooler Hook */
- #define STATUS_VALIDATE_STATE ((ULONG) 0x00000001)
- #define STATUS_SETTINGS_DIALOG ((ULONG) 0x00000002)
- #define STATUS_CHANGE_PASSWORD ((ULONG) 0x00000004)
- #define STATUS_FLUSH_QUEUES ((ULONG) 0x00000008)
- #define STATUS_DEFAULT_OUTBOUND ((ULONG) 0x00000001)
- #define STATUS_DEFAULT_STORE ((ULONG) 0x00000002)
- #define STATUS_PRIMARY_IDENTITY ((ULONG) 0x00000004)
- #define STATUS_SIMPLE_STORE ((ULONG) 0x00000008)
- #define STATUS_XP_PREFER_LAST ((ULONG) 0x00000010)
- #define STATUS_NO_PRIMARY_IDENTITY ((ULONG) 0x00000020)
- #define STATUS_NO_DEFAULT_STORE ((ULONG) 0x00000040)
- #define STATUS_TEMP_SECTION ((ULONG) 0x00000080)
- #define STATUS_OWN_STORE ((ULONG) 0x00000100)
- /****** HOOK_INBOUND ((ULONG) 0x00000200) Defined in MAPIHOOK.H */
- /****** HOOK_OUTBOUND ((ULONG) 0x00000400) Defined in MAPIHOOK.H */
- #define STATUS_NEED_IPM_TREE ((ULONG) 0x00000800)
- #define STATUS_PRIMARY_STORE ((ULONG) 0x00001000)
- #define STATUS_SECONDARY_STORE ((ULONG) 0x00002000)
- /*
- * PR_STATUS_CODE bit. Low 16 bits for common values; High 16 bits
- * for provider type-specific values. (DCR 304)
- */
- #define STATUS_AVAILABLE ((ULONG) 0x00000001)
- #define STATUS_OFFLINE ((ULONG) 0x00000002)
- #define STATUS_FAILURE ((ULONG) 0x00000004)
- /* Transport values of PR_STATUS_CODE */
- #define STATUS_INBOUND_ENABLED ((ULONG) 0x00010000)
- #define STATUS_INBOUND_ACTIVE ((ULONG) 0x00020000)
- #define STATUS_INBOUND_FLUSH ((ULONG) 0x00040000)
- #define STATUS_OUTBOUND_ENABLED ((ULONG) 0x00100000)
- #define STATUS_OUTBOUND_ACTIVE ((ULONG) 0x00200000)
- #define STATUS_OUTBOUND_FLUSH ((ULONG) 0x00400000)
- #define STATUS_REMOTE_ACCESS ((ULONG) 0x00800000)
- /* ValidateState flags */
- #define SUPPRESS_UI ((ULONG) 0x00000001)
- #define REFRESH_XP_HEADER_CACHE ((ULONG) 0x00010000)
- #define PROCESS_XP_HEADER_CACHE ((ULONG) 0x00020000)
- #define FORCE_XP_CONNECT ((ULONG) 0x00040000)
- #define FORCE_XP_DISCONNECT ((ULONG) 0x00080000)
- #define CONFIG_CHANGED ((ULONG) 0x00100000)
- #define ABORT_XP_HEADER_OPERATION ((ULONG) 0x00200000)
- #define SHOW_XP_SESSION_UI ((ULONG) 0x00400000)
- /* SettingsDialog flags */
- #define UI_READONLY ((ULONG) 0x00000001)
- /* FlushQueues flags */
- #define FLUSH_UPLOAD ((ULONG) 0x00000002)
- #define FLUSH_DOWNLOAD ((ULONG) 0x00000004)
- #define FLUSH_FORCE ((ULONG) 0x00000008)
- #define FLUSH_NO_UI ((ULONG) 0x00000010)
- #define FLUSH_ASYNC_OK ((ULONG) 0x00000020)
- #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; \
- #undef INTERFACE
- #define INTERFACE IMAPIStatus
- DECLARE_MAPI_INTERFACE_(IMAPIStatus, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPISTATUS_METHODS(PURE)
- };
- /* IMAPIContainer Interface ------------------------------------------------ */
- /* Flags for OpenEntry() */
- /****** MAPI_MODIFY ((ULONG) 0x00000001) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- #define MAPI_BEST_ACCESS ((ULONG) 0x00000010)
- /* GetContentsTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
- /* GetHierarchyTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- #define CONVENIENT_DEPTH ((ULONG) 0x00000001)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* GetSearchCriteria */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- #define SEARCH_RUNNING ((ULONG) 0x00000001)
- #define SEARCH_REBUILD ((ULONG) 0x00000002)
- #define SEARCH_RECURSIVE ((ULONG) 0x00000004)
- #define SEARCH_FOREGROUND ((ULONG) 0x00000008)
- /* SetSearchCriteria */
- #define STOP_SEARCH ((ULONG) 0x00000001)
- #define RESTART_SEARCH ((ULONG) 0x00000002)
- #define RECURSIVE_SEARCH ((ULONG) 0x00000004)
- #define SHALLOW_SEARCH ((ULONG) 0x00000008)
- #define FOREGROUND_SEARCH ((ULONG) 0x00000010)
- #define BACKGROUND_SEARCH ((ULONG) 0x00000020)
- #define MAPI_IMAPICONTAINER_METHODS(IPURE) \
- MAPIMETHOD(GetContentsTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(GetHierarchyTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(OpenEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(SetSearchCriteria) \
- (THIS_ LPSRestriction lpRestriction, \
- LPENTRYLIST lpContainerList, \
- ULONG ulSearchFlags) IPURE; \
- MAPIMETHOD(GetSearchCriteria) \
- (THIS_ ULONG ulFlags, \
- LPSRestriction FAR * lppRestriction, \
- LPENTRYLIST FAR * lppContainerList, \
- ULONG FAR * lpulSearchState)IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIContainer
- DECLARE_MAPI_INTERFACE_(IMAPIContainer, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- };
- /* IABContainer Interface -------------------------------------------------- */
- /*
- * IABContainer PR_CONTAINER_FLAGS values
- * If AB_UNMODIFIABLE and AB_MODIFIABLE are both set, it means the container
- * doesn't know if it's modifiable or not, and the client should
- * try to modify the contents but we won't expect it to work.
- * If the AB_RECIPIENTS flag is set and neither AB_MODIFIABLE or AB_UNMODIFIABLE
- * bits are set, it is an error.
- */
- typedef struct _flaglist
- {
- ULONG cFlags;
- ULONG ulFlag[MAPI_DIM];
- } FlagList, FAR * LPFlagList;
- /*
- * Container flags
- */
- #define AB_RECIPIENTS ((ULONG) 0x00000001)
- #define AB_SUBCONTAINERS ((ULONG) 0x00000002)
- #define AB_MODIFIABLE ((ULONG) 0x00000004)
- #define AB_UNMODIFIABLE ((ULONG) 0x00000008)
- #define AB_FIND_ON_OPEN ((ULONG) 0x00000010)
- #define AB_NOT_DEFAULT ((ULONG) 0x00000020)
- /* CreateEntry() */
- #define CREATE_CHECK_DUP_STRICT ((ULONG) 0x00000001)
- #define CREATE_CHECK_DUP_LOOSE ((ULONG) 0x00000002)
- #define CREATE_REPLACE ((ULONG) 0x00000004)
- /* ResolveNames() - ulFlags */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* ResolveNames() - rgulFlags */
- #define MAPI_UNRESOLVED ((ULONG) 0x00000000)
- #define MAPI_AMBIGUOUS ((ULONG) 0x00000001)
- #define MAPI_RESOLVED ((ULONG) 0x00000002)
- #define MAPI_IABCONTAINER_METHODS(IPURE) \
- MAPIMETHOD(CreateEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulCreateFlags, \
- LPMAPIPROP FAR * 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; \
- #undef INTERFACE
- #define INTERFACE IABContainer
- DECLARE_MAPI_INTERFACE_(IABContainer, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IABCONTAINER_METHODS(PURE)
- };
- /* IMailUser Interface ----------------------------------------------------- */
- /* Any call which can create a one-off entryID (i.e. MAPISupport::CreateOneOff
- or IAdrBook::CreateOneOff) can encode the value for PR_SEND_RICH_INFO by
- passing in the following flag in the ulFlags parameter. Setting this flag
- indicates that PR_SEND_RICH_INFO will be FALSE.
- */
- #define MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000)
- /* Values of PR_NDR_DIAG_CODE */
- #define MAPI_DIAG(_code) ((LONG) _code)
- #define MAPI_DIAG_NO_DIAGNOSTIC MAPI_DIAG( -1 )
- #define MAPI_DIAG_OR_NAME_UNRECOGNIZED MAPI_DIAG( 0 )
- #define MAPI_DIAG_OR_NAME_AMBIGUOUS MAPI_DIAG( 1 )
- #define MAPI_DIAG_MTS_CONGESTED MAPI_DIAG( 2 )
- #define MAPI_DIAG_LOOP_DETECTED MAPI_DIAG( 3 )
- #define MAPI_DIAG_RECIPIENT_UNAVAILABLE MAPI_DIAG( 4 )
- #define MAPI_DIAG_MAXIMUM_TIME_EXPIRED MAPI_DIAG( 5 )
- #define MAPI_DIAG_EITS_UNSUPPORTED MAPI_DIAG( 6 )
- #define MAPI_DIAG_CONTENT_TOO_LONG MAPI_DIAG( 7 )
- #define MAPI_DIAG_IMPRACTICAL_TO_CONVERT MAPI_DIAG( 8 )
- #define MAPI_DIAG_PROHIBITED_TO_CONVERT MAPI_DIAG( 9 )
- #define MAPI_DIAG_CONVERSION_UNSUBSCRIBED MAPI_DIAG( 10 )
- #define MAPI_DIAG_PARAMETERS_INVALID MAPI_DIAG( 11 )
- #define MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR MAPI_DIAG( 12 )
- #define MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD MAPI_DIAG( 13 )
- #define MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD MAPI_DIAG( 14 )
- #define MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED MAPI_DIAG( 15 )
- #define MAPI_DIAG_TOO_MANY_RECIPIENTS MAPI_DIAG( 16 )
- #define MAPI_DIAG_NO_BILATERAL_AGREEMENT MAPI_DIAG( 17 )
- #define MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED MAPI_DIAG( 18 )
- #define MAPI_DIAG_CONVERSION_LOSS_PROHIB MAPI_DIAG( 19 )
- #define MAPI_DIAG_LINE_TOO_LONG MAPI_DIAG( 20 )
- #define MAPI_DIAG_PAGE_TOO_LONG MAPI_DIAG( 21 )
- #define MAPI_DIAG_PICTORIAL_SYMBOL_LOST MAPI_DIAG( 22 )
- #define MAPI_DIAG_PUNCTUATION_SYMBOL_LOST MAPI_DIAG( 23 )
- #define MAPI_DIAG_ALPHABETIC_CHARACTER_LOST MAPI_DIAG( 24 )
- #define MAPI_DIAG_MULTIPLE_INFO_LOSSES MAPI_DIAG( 25 )
- #define MAPI_DIAG_REASSIGNMENT_PROHIBITED MAPI_DIAG( 26 )
- #define MAPI_DIAG_REDIRECTION_LOOP_DETECTED MAPI_DIAG( 27 )
- #define MAPI_DIAG_EXPANSION_PROHIBITED MAPI_DIAG( 28 )
- #define MAPI_DIAG_SUBMISSION_PROHIBITED MAPI_DIAG( 29 )
- #define MAPI_DIAG_EXPANSION_FAILED MAPI_DIAG( 30 )
- #define MAPI_DIAG_RENDITION_UNSUPPORTED MAPI_DIAG( 31 )
- #define MAPI_DIAG_MAIL_ADDRESS_INCORRECT MAPI_DIAG( 32 )
- #define MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD MAPI_DIAG( 33 )
- #define MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE MAPI_DIAG( 34 )
- #define MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN MAPI_DIAG( 35 )
- #define MAPI_DIAG_MAIL_RECIPIENT_DECEASED MAPI_DIAG( 36 )
- #define MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED MAPI_DIAG( 37 )
- #define MAPI_DIAG_MAIL_REFUSED MAPI_DIAG( 38 )
- #define MAPI_DIAG_MAIL_UNCLAIMED MAPI_DIAG( 39 )
- #define MAPI_DIAG_MAIL_RECIPIENT_MOVED MAPI_DIAG( 40 )
- #define MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING MAPI_DIAG( 41 )
- #define MAPI_DIAG_MAIL_RECIPIENT_DEPARTED MAPI_DIAG( 42 )
- #define MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN MAPI_DIAG( 43 )
- #define MAPI_DIAG_MAIL_FORWARDING_UNWANTED MAPI_DIAG( 44 )
- #define MAPI_DIAG_MAIL_FORWARDING_PROHIB MAPI_DIAG( 45 )
- #define MAPI_DIAG_SECURE_MESSAGING_ERROR MAPI_DIAG( 46 )
- #define MAPI_DIAG_DOWNGRADING_IMPOSSIBLE MAPI_DIAG( 47 )
- /* Values of PR_DELIVERY_POINT (MH_T_DELIVERY_POINT) */
- #define MAPI_MH_DP_PUBLIC_UA ((ULONG) 0)
- #define MAPI_MH_DP_PRIVATE_UA ((ULONG) 1)
- #define MAPI_MH_DP_MS ((ULONG) 2)
- #define MAPI_MH_DP_ML ((ULONG) 3)
- #define MAPI_MH_DP_PDAU ((ULONG) 4)
- #define MAPI_MH_DP_PDS_PATRON ((ULONG) 5)
- #define MAPI_MH_DP_OTHER_AU ((ULONG) 6)
- #define MAPI_IMAILUSER_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IMailUser
- DECLARE_MAPI_INTERFACE_(IMailUser, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAILUSER_METHODS(PURE)
- };
- /* IDistList Interface ----------------------------------------------------- */
- #define MAPI_IDISTLIST_METHODS(IPURE) \
- MAPIMETHOD(CreateEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulCreateFlags, \
- LPMAPIPROP FAR * 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; \
- #undef INTERFACE
- #define INTERFACE IDistList
- DECLARE_MAPI_INTERFACE_(IDistList, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IDISTLIST_METHODS(PURE)
- };
- /* IMAPIFolder Interface --------------------------------------------------- */
- /* IMAPIFolder folder type (enum) */
- #define FOLDER_ROOT ((ULONG) 0x00000000)
- #define FOLDER_GENERIC ((ULONG) 0x00000001)
- #define FOLDER_SEARCH ((ULONG) 0x00000002)
- /* CreateMessage */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
- /* CopyMessages */
- #define MESSAGE_MOVE ((ULONG) 0x00000001)
- #define MESSAGE_DIALOG ((ULONG) 0x00000002)
- /****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
- /* CreateFolder */
- #define OPEN_IF_EXISTS ((ULONG) 0x00000001)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* DeleteFolder */
- #define DEL_MESSAGES ((ULONG) 0x00000001)
- #define FOLDER_DIALOG ((ULONG) 0x00000002)
- #define DEL_FOLDERS ((ULONG) 0x00000004)
- /* EmptyFolder */
- #define DEL_ASSOCIATED ((ULONG) 0x00000008)
- /* CopyFolder */
- #define FOLDER_MOVE ((ULONG) 0x00000001)
- /****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
- /****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
- #define COPY_SUBFOLDERS ((ULONG) 0x00000010)
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* SetReadFlags */
- /****** SUPPRESS_RECEIPT ((ULONG) 0x00000001) below */
- /****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
- /****** CLEAR_READ_FLAG ((ULONG) 0x00000004) below */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010) below */
- /****** CLEAR_RN_PENDING ((ULONG) 0x00000020) below */
- /****** CLEAR_NRN_PENDING ((ULONG) 0x00000040) below */
- /* GetMessageStatus */
- #define MSGSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
- #define MSGSTATUS_TAGGED ((ULONG) 0x00000002)
- #define MSGSTATUS_HIDDEN ((ULONG) 0x00000004)
- #define MSGSTATUS_DELMARKED ((ULONG) 0x00000008)
- /* Bits for remote message status */
- #define MSGSTATUS_REMOTE_DOWNLOAD ((ULONG) 0x00001000)
- #define MSGSTATUS_REMOTE_DELETE ((ULONG) 0x00002000)
- /* SaveContentsSort */
- #define RECURSIVE_SORT ((ULONG) 0x00000002)
- /* PR_STATUS property */
- #define FLDSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
- #define FLDSTATUS_TAGGED ((ULONG) 0x00000002)
- #define FLDSTATUS_HIDDEN ((ULONG) 0x00000004)
- #define FLDSTATUS_DELMARKED ((ULONG) 0x00000008)
- #define MAPI_IMAPIFOLDER_METHODS(IPURE) \
- MAPIMETHOD(CreateMessage) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- LPMESSAGE FAR * 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 FAR * 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 FAR * lpulMessageStatus) IPURE; \
- MAPIMETHOD(SetMessageStatus) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulNewStatus, \
- ULONG ulNewStatusMask, \
- ULONG FAR * lpulOldStatus) IPURE; \
- MAPIMETHOD(SaveContentsSort) \
- (THIS_ LPSSortOrderSet lpSortCriteria, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(EmptyFolder) \
- (THIS_ ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- ULONG ulFlags) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIFolder
- DECLARE_MAPI_INTERFACE_(IMAPIFolder, IMAPIContainer)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMAPICONTAINER_METHODS(PURE)
- MAPI_IMAPIFOLDER_METHODS(PURE)
- };
- /* IMsgStore Interface ----------------------------------------------------- */
- /* PR_STORE_SUPPORT_MASK bits */
- #define STORE_ENTRYID_UNIQUE ((ULONG) 0x00000001)
- #define STORE_READONLY ((ULONG) 0x00000002)
- #define STORE_SEARCH_OK ((ULONG) 0x00000004)
- #define STORE_MODIFY_OK ((ULONG) 0x00000008)
- #define STORE_CREATE_OK ((ULONG) 0x00000010)
- #define STORE_ATTACH_OK ((ULONG) 0x00000020)
- #define STORE_OLE_OK ((ULONG) 0x00000040)
- #define STORE_SUBMIT_OK ((ULONG) 0x00000080)
- #define STORE_NOTIFY_OK ((ULONG) 0x00000100)
- #define STORE_MV_PROPS_OK ((ULONG) 0x00000200)
- #define STORE_CATEGORIZE_OK ((ULONG) 0x00000400)
- #define STORE_RTF_OK ((ULONG) 0x00000800)
- #define STORE_RESTRICTION_OK ((ULONG) 0x00001000)
- #define STORE_SORT_OK ((ULONG) 0x00002000)
- #define STORE_PUBLIC_FOLDERS ((ULONG) 0x00004000)
- #define STORE_UNCOMPRESSED_RTF ((ULONG) 0x00008000)
- /* PR_STORE_STATE bits, try not to collide with PR_STORE_SUPPORT_MASK */
- #define STORE_HAS_SEARCHES ((ULONG) 0x01000000)
- /* OpenEntry() */
- /****** MAPI_MODIFY ((ULONG) 0x00000001) above */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
- /* SetReceiveFolder() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetReceiveFolder() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetReceiveFolderTable() */
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- /* StoreLogoff() */
- #define LOGOFF_NO_WAIT ((ULONG) 0x00000001)
- #define LOGOFF_ORDERLY ((ULONG) 0x00000002)
- #define LOGOFF_PURGE ((ULONG) 0x00000004)
- #define LOGOFF_ABORT ((ULONG) 0x00000008)
- #define LOGOFF_QUIET ((ULONG) 0x00000010)
- #define LOGOFF_COMPLETE ((ULONG) 0x00010000)
- #define LOGOFF_INBOUND ((ULONG) 0x00020000)
- #define LOGOFF_OUTBOUND ((ULONG) 0x00040000)
- #define LOGOFF_OUTBOUND_QUEUE ((ULONG) 0x00080000)
- /* SetLockState() */
- #define MSG_LOCKED ((ULONG) 0x00000001)
- #define MSG_UNLOCKED ((ULONG) 0x00000000)
- /* Flag bits for PR_VALID_FOLDER_MASK */
- #define FOLDER_IPM_SUBTREE_VALID ((ULONG) 0x00000001)
- #define FOLDER_IPM_INBOX_VALID ((ULONG) 0x00000002)
- #define FOLDER_IPM_OUTBOX_VALID ((ULONG) 0x00000004)
- #define FOLDER_IPM_WASTEBASKET_VALID ((ULONG) 0x00000008)
- #define FOLDER_IPM_SENTMAIL_VALID ((ULONG) 0x00000010)
- #define FOLDER_VIEWS_VALID ((ULONG) 0x00000020)
- #define FOLDER_COMMON_VIEWS_VALID ((ULONG) 0x00000040)
- #define FOLDER_FINDER_VALID ((ULONG) 0x00000080)
- #define MAPI_IMSGSTORE_METHODS(IPURE) \
- MAPIMETHOD(Advise) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulEventMask, \
- LPMAPIADVISESINK lpAdviseSink, \
- ULONG FAR * lpulConnection) IPURE; \
- MAPIMETHOD(Unadvise) \
- (THIS_ ULONG ulConnection) IPURE; \
- MAPIMETHOD(CompareEntryIDs) \
- (THIS_ ULONG cbEntryID1, \
- LPENTRYID lpEntryID1, \
- ULONG cbEntryID2, \
- LPENTRYID lpEntryID2, \
- ULONG ulFlags, \
- ULONG FAR * lpulResult) IPURE; \
- MAPIMETHOD(OpenEntry) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulObjType, \
- LPUNKNOWN FAR * lppUnk) IPURE; \
- MAPIMETHOD(SetReceiveFolder) \
- (THIS_ LPTSTR lpszMessageClass, \
- ULONG ulFlags, \
- ULONG cbEntryID, \
- LPENTRYID lpEntryID) IPURE; \
- MAPIMETHOD(GetReceiveFolder) \
- (THIS_ LPTSTR lpszMessageClass, \
- ULONG ulFlags, \
- ULONG FAR * lpcbEntryID, \
- LPENTRYID FAR * lppEntryID, \
- LPTSTR FAR * lppszExplicitClass) IPURE; \
- MAPIMETHOD(GetReceiveFolderTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(StoreLogoff) \
- (THIS_ ULONG FAR * lpulFlags) IPURE; \
- MAPIMETHOD(AbortSubmit) \
- (THIS_ ULONG cbEntryID, \
- LPENTRYID lpEntryID, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(GetOutgoingQueue) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * 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; \
- #undef INTERFACE
- #define INTERFACE IMsgStore
- DECLARE_MAPI_INTERFACE_(IMsgStore, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMSGSTORE_METHODS(PURE)
- };
- /* IMessage Interface ------------------------------------------------------ */
- /* SubmitMessage */
- #define FORCE_SUBMIT ((ULONG) 0x00000001)
- /* Flags defined in PR_MESSAGE_FLAGS */
- #define MSGFLAG_READ ((ULONG) 0x00000001)
- #define MSGFLAG_UNMODIFIED ((ULONG) 0x00000002)
- #define MSGFLAG_SUBMIT ((ULONG) 0x00000004)
- #define MSGFLAG_UNSENT ((ULONG) 0x00000008)
- #define MSGFLAG_HASATTACH ((ULONG) 0x00000010)
- #define MSGFLAG_FROMME ((ULONG) 0x00000020)
- #define MSGFLAG_ASSOCIATED ((ULONG) 0x00000040)
- #define MSGFLAG_RESEND ((ULONG) 0x00000080)
- #define MSGFLAG_RN_PENDING ((ULONG) 0x00000100)
- #define MSGFLAG_NRN_PENDING ((ULONG) 0x00000200)
- /* Flags defined in PR_SUBMIT_FLAGS */
- #define SUBMITFLAG_LOCKED ((ULONG) 0x00000001)
- #define SUBMITFLAG_PREPROCESS ((ULONG) 0x00000002)
- /* GetAttachmentTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* GetRecipientTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* ModifyRecipients */
- /* ((ULONG) 0x00000001 is not a valid flag on ModifyRecipients. */
- #define MODRECIP_ADD ((ULONG) 0x00000002)
- #define MODRECIP_MODIFY ((ULONG) 0x00000004)
- #define MODRECIP_REMOVE ((ULONG) 0x00000008)
- /* SetReadFlag */
- #define SUPPRESS_RECEIPT ((ULONG) 0x00000001)
- #define CLEAR_READ_FLAG ((ULONG) 0x00000004)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
- #define GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010)
- #define CLEAR_RN_PENDING ((ULONG) 0x00000020)
- #define CLEAR_NRN_PENDING ((ULONG) 0x00000040)
- /* DeleteAttach */
- #define ATTACH_DIALOG ((ULONG) 0x00000001)
- /* PR_SECURITY values */
- #define SECURITY_SIGNED ((ULONG) 0x00000001)
- #define SECURITY_ENCRYPTED ((ULONG) 0x00000002)
- /* PR_PRIORITY values */
- #define PRIO_URGENT ((long) 1)
- #define PRIO_NORMAL ((long) 0)
- #define PRIO_NONURGENT ((long) -1)
- /* PR_SENSITIVITY values */
- #define SENSITIVITY_NONE ((ULONG) 0x00000000)
- #define SENSITIVITY_PERSONAL ((ULONG) 0x00000001)
- #define SENSITIVITY_PRIVATE ((ULONG) 0x00000002)
- #define SENSITIVITY_COMPANY_CONFIDENTIAL ((ULONG) 0x00000003)
- /* PR_IMPORTANCE values */
- #define IMPORTANCE_LOW ((long) 0)
- #define IMPORTANCE_NORMAL ((long) 1)
- #define IMPORTANCE_HIGH ((long) 2)
- #define MAPI_IMESSAGE_METHODS(IPURE) \
- MAPIMETHOD(GetAttachmentTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(OpenAttach) \
- (THIS_ ULONG ulAttachmentNum, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- LPATTACH FAR * lppAttach) IPURE; \
- MAPIMETHOD(CreateAttach) \
- (THIS_ LPCIID lpInterface, \
- ULONG ulFlags, \
- ULONG FAR * lpulAttachmentNum, \
- LPATTACH FAR * lppAttach) IPURE; \
- MAPIMETHOD(DeleteAttach) \
- (THIS_ ULONG ulAttachmentNum, \
- ULONG ulUIParam, \
- LPMAPIPROGRESS lpProgress, \
- ULONG ulFlags) IPURE; \
- MAPIMETHOD(GetRecipientTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(ModifyRecipients) \
- (THIS_ ULONG ulFlags, \
- LPADRLIST lpMods) IPURE; \
- MAPIMETHOD(SubmitMessage) \
- (THIS_ ULONG ulFlags) IPURE; \
- MAPIMETHOD(SetReadFlag) \
- (THIS_ ULONG ulFlags) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMessage
- DECLARE_MAPI_INTERFACE_(IMessage, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IMESSAGE_METHODS(PURE)
- };
- /* IAttach Interface ------------------------------------------------------- */
- /* IAttach attachment methods: PR_ATTACH_METHOD values */
- #define NO_ATTACHMENT ((ULONG) 0x00000000)
- #define ATTACH_BY_VALUE ((ULONG) 0x00000001)
- #define ATTACH_BY_REFERENCE ((ULONG) 0x00000002)
- #define ATTACH_BY_REF_RESOLVE ((ULONG) 0x00000003)
- #define ATTACH_BY_REF_ONLY ((ULONG) 0x00000004)
- #define ATTACH_EMBEDDED_MSG ((ULONG) 0x00000005)
- #define ATTACH_OLE ((ULONG) 0x00000006)
- #define MAPI_IATTACH_METHODS(IPURE)
- #undef INTERFACE
- #define INTERFACE IAttach
- DECLARE_MAPI_INTERFACE_(IAttach, IMAPIProp)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPIPROP_METHODS(PURE)
- MAPI_IATTACH_METHODS(PURE)
- };
- /* --------------------------------- */
- /* Address Book interface definition */
- /* ADRPARM ulFlags - top 4 bits used for versioning */
- #define GET_ADRPARM_VERSION(ulFlags) (((ULONG)ulFlags) & 0xF0000000)
- #define SET_ADRPARM_VERSION(ulFlags, ulVersion) (((ULONG)ulVersion) | (((ULONG)ulFlags) & 0x0FFFFFFF))
- /* Current versions of ADRPARM */
- #define ADRPARM_HELP_CTX ((ULONG) 0x00000000)
- /* ulFlags - bit fields */
- #define DIALOG_MODAL ((ULONG) 0x00000001)
- #define DIALOG_SDI ((ULONG) 0x00000002)
- #define DIALOG_OPTIONS ((ULONG) 0x00000004)
- #define ADDRESS_ONE ((ULONG) 0x00000008)
- #define AB_SELECTONLY ((ULONG) 0x00000010)
- #define AB_RESOLVE ((ULONG) 0x00000020)
- /* --------------------------------- */
- /* PR_DISPLAY_TYPEs */
- /*
- * These standard display types are
- * by default handled by MAPI.
- * They have default icons associated
- * with them.
- */
- /* For address book contents tables */
- #define DT_MAILUSER ((ULONG) 0x00000000)
- #define DT_DISTLIST ((ULONG) 0x00000001)
- #define DT_FORUM ((ULONG) 0x00000002)
- #define DT_AGENT ((ULONG) 0x00000003)
- #define DT_ORGANIZATION ((ULONG) 0x00000004)
- #define DT_PRIVATE_DISTLIST ((ULONG) 0x00000005)
- #define DT_REMOTE_MAILUSER ((ULONG) 0x00000006)
- /* For address book hierarchy tables */
- #define DT_MODIFIABLE ((ULONG) 0x00010000)
- #define DT_GLOBAL ((ULONG) 0x00020000)
- #define DT_LOCAL ((ULONG) 0x00030000)
- #define DT_WAN ((ULONG) 0x00040000)
- #define DT_NOT_SPECIFIC ((ULONG) 0x00050000)
- /* For folder hierarchy tables */
- #define DT_FOLDER ((ULONG) 0x01000000)
- #define DT_FOLDER_LINK ((ULONG) 0x02000000)
- #define DT_FOLDER_SPECIAL ((ULONG) 0x04000000)
- /* Accelerator callback for DIALOG_SDI form of AB UI */
- typedef BOOL (STDMETHODCALLTYPE ACCELERATEABSDI)(ULONG ulUIParam,
- LPVOID lpvmsg);
- typedef ACCELERATEABSDI FAR * LPFNABSDI;
- /* Callback to application telling it that the DIALOG_SDI form of the */
- /* AB UI has been dismissed. This is so that the above LPFNABSDI */
- /* function doesn't keep being called. */
- typedef void (STDMETHODCALLTYPE DISMISSMODELESS)(ULONG ulUIParam,
- LPVOID lpvContext);
- typedef DISMISSMODELESS FAR * LPFNDISMISS;
- /*
- * Prototype for the client function hooked to an optional button on
- * the address book dialog
- */
- typedef SCODE (STDMETHODCALLTYPE FAR * LPFNBUTTON)(
- ULONG ulUIParam,
- LPVOID lpvContext,
- ULONG cbEntryID,
- LPENTRYID lpSelection,
- ULONG ulFlags
- );
- /* Parameters for the address book dialog */
- typedef struct _ADRPARM
- {
- ULONG cbABContEntryID;
- LPENTRYID lpABContEntryID;
- ULONG ulFlags;
- LPVOID lpReserved;
- ULONG ulHelpContext;
- LPTSTR lpszHelpFileName;
- LPFNABSDI lpfnABSDI;
- LPFNDISMISS lpfnDismiss;
- LPVOID lpvDismissContext;
- LPTSTR lpszCaption;
- LPTSTR lpszNewEntryTitle;
- LPTSTR lpszDestWellsTitle;
- ULONG cDestFields;
- ULONG nDestFieldFocus;
- LPTSTR FAR * lppszDestTitles;
- ULONG FAR * lpulDestComps;
- LPSRestriction lpContRestriction;
- LPSRestriction lpHierRestriction;
- } ADRPARM, FAR * LPADRPARM;
- /* ------------ */
- /* Random flags */
- /* Flag for deferred error */
- #define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008)
- /* Flag for creating and using Folder Associated Information Messages */
- #define MAPI_ASSOCIATED ((ULONG) 0x00000040)
- /* Flags for OpenMessageStore() */
- #define MDB_NO_DIALOG ((ULONG) 0x00000001)
- #define MDB_WRITE ((ULONG) 0x00000004)
- /****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) above */
- /****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
- #define MDB_TEMPORARY ((ULONG) 0x00000020)
- #define MDB_NO_MAIL ((ULONG) 0x00000080)
- /* Flags for OpenAddressBook */
- #define AB_NO_DIALOG ((ULONG) 0x00000001)
- /* IMAPIControl Interface -------------------------------------------------- */
- /* Interface used in controls (particularly the button) defined by */
- /* Display Tables. */
- /* Flags for GetState */
- #define MAPI_ENABLED ((ULONG) 0x00000000)
- #define MAPI_DISABLED ((ULONG) 0x00000001)
- #define MAPI_IMAPICONTROL_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(Activate) \
- (THIS_ ULONG ulFlags, \
- ULONG ulUIParam) IPURE; \
- MAPIMETHOD(GetState) \
- (THIS_ ULONG ulFlags, \
- ULONG FAR * lpulState) IPURE; \
- #undef INTERFACE
- #define INTERFACE IMAPIControl
- DECLARE_MAPI_INTERFACE_(IMAPIControl, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IMAPICONTROL_METHODS(PURE)
- };
- DECLARE_MAPI_INTERFACE_PTR(IMAPIControl, LPMAPICONTROL);
- /* Display Tables ---------------------------------------------------------- */
- /* Flags used in display tables - that is, PR_CONTROL_FLAGS */
- #define DT_MULTILINE ((ULONG) 0x00000001)
- #define DT_EDITABLE ((ULONG) 0x00000002)
- #define DT_REQUIRED ((ULONG) 0x00000004)
- #define DT_SET_IMMEDIATE ((ULONG) 0x00000008)
- #define DT_PASSWORD_EDIT ((ULONG) 0x00000010)
- #define DT_ACCEPT_DBCS ((ULONG) 0x00000020)
- #define DT_SET_SELECTION ((ULONG) 0x00000040)
- /* Display Table structures */
- #define DTCT_LABEL ((ULONG) 0x00000000)
- #define DTCT_EDIT ((ULONG) 0x00000001)
- #define DTCT_LBX ((ULONG) 0x00000002)
- #define DTCT_COMBOBOX ((ULONG) 0x00000003)
- #define DTCT_DDLBX ((ULONG) 0x00000004)
- #define DTCT_CHECKBOX ((ULONG) 0x00000005)
- #define DTCT_GROUPBOX ((ULONG) 0x00000006)
- #define DTCT_BUTTON ((ULONG) 0x00000007)
- #define DTCT_PAGE ((ULONG) 0x00000008)
- #define DTCT_RADIOBUTTON ((ULONG) 0x00000009)
- #define DTCT_MVLISTBOX ((ULONG) 0x0000000B)
- #define DTCT_MVDDLBX ((ULONG) 0x0000000C)
- /* Labels */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLLABEL
- {
- ULONG ulbLpszLabelName;
- ULONG ulFlags;
- } DTBLLABEL, FAR * LPDTBLLABEL;
- #define SizedDtblLabel(n,u) \
- struct _DTBLLABEL_ ## u \
- { \
- DTBLLABEL dtbllabel; \
- TCHAR lpszLabelName[n]; \
- } u
- /* Simple Text Edits */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLEDIT
- {
- ULONG ulbLpszCharsAllowed;
- ULONG ulFlags;
- ULONG ulNumCharsAllowed;
- ULONG ulPropTag;
- } DTBLEDIT, FAR * LPDTBLEDIT;
- #define SizedDtblEdit(n,u) \
- struct _DTBLEDIT_ ## u \
- { \
- DTBLEDIT dtbledit; \
- TCHAR lpszCharsAllowed[n]; \
- } u
- /* List Box */
- /* Valid ulFlags:
- */
- #define MAPI_NO_HBAR ((ULONG) 0x00000001)
- #define MAPI_NO_VBAR ((ULONG) 0x00000002)
- typedef struct _DTBLLBX
- {
- ULONG ulFlags;
- ULONG ulPRSetProperty;
- ULONG ulPRTableName;
- } DTBLLBX, FAR * LPDTBLLBX;
- /* Combo Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLCOMBOBOX
- {
- ULONG ulbLpszCharsAllowed;
- ULONG ulFlags;
- ULONG ulNumCharsAllowed;
- ULONG ulPRPropertyName;
- ULONG ulPRTableName;
- } DTBLCOMBOBOX, FAR * LPDTBLCOMBOBOX;
- #define SizedDtblComboBox(n,u) \
- struct _DTBLCOMBOBOX_ ## u \
- { \
- DTBLCOMBOBOX dtblcombobox; \
- TCHAR lpszCharsAllowed[n]; \
- } u
- /* Drop Down */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLDDLBX
- {
- ULONG ulFlags;
- ULONG ulPRDisplayProperty;
- ULONG ulPRSetProperty;
- ULONG ulPRTableName;
- } DTBLDDLBX, FAR * LPDTBLDDLBX;
- /* Check Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLCHECKBOX
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulPRPropertyName;
- } DTBLCHECKBOX, FAR * LPDTBLCHECKBOX;
- #define SizedDtblCheckBox(n,u) \
- struct _DTBLCHECKBOX_ ## u \
- { \
- DTBLCHECKBOX dtblcheckbox; \
- TCHAR lpszLabel[n]; \
- } u
- /* Group Box */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLGROUPBOX
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- } DTBLGROUPBOX, FAR * LPDTBLGROUPBOX;
- #define SizedDtblGroupBox(n,u) \
- struct _DTBLGROUPBOX_ ## u \
- { \
- DTBLGROUPBOX dtblgroupbox; \
- TCHAR lpszLabel[n]; \
- } u
- /* Button control */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLBUTTON
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulPRControl;
- } DTBLBUTTON, FAR * LPDTBLBUTTON;
- #define SizedDtblButton(n,u) \
- struct _DTBLBUTTON_ ## u \
- { \
- DTBLBUTTON dtblbutton; \
- TCHAR lpszLabel[n]; \
- } u
- /* Pages */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLPAGE
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulbLpszComponent;
- ULONG ulContext;
- } DTBLPAGE, FAR * LPDTBLPAGE;
- #define SizedDtblPage(n,n1,u) \
- struct _DTBLPAGE_ ## u \
- { \
- DTBLPAGE dtblpage; \
- TCHAR lpszLabel[n]; \
- TCHAR lpszComponent[n1]; \
- } u
- /* Radio button */
- /* Valid ulFlags:
- * MAPI_UNICODE
- */
- typedef struct _DTBLRADIOBUTTON
- {
- ULONG ulbLpszLabel;
- ULONG ulFlags;
- ULONG ulcButtons;
- ULONG ulPropTag;
- long lReturnValue;
- } DTBLRADIOBUTTON, FAR * LPDTBLRADIOBUTTON;
- #define SizedDtblRadioButton(n,u) \
- struct _DTBLRADIOBUTTON_ ## u \
- { \
- DTBLRADIOBUTTON dtblradiobutton; \
- TCHAR lpszLabel[n]; \
- } u
- /* MultiValued listbox */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLMVLISTBOX
- {
- ULONG ulFlags;
- ULONG ulMVPropTag;
- } DTBLMVLISTBOX, FAR * LPDTBLMVLISTBOX;
- /* MultiValued dropdown */
- /* Valid ulFlags:
- * none
- */
- typedef struct _DTBLMVDDLBX
- {
- ULONG ulFlags;
- ULONG ulMVPropTag;
- } DTBLMVDDLBX, FAR * LPDTBLMVDDLBX;
- /* IProviderAdmin Interface ---------------------------------------------- */
- /* Flags for ConfigureMsgService */
- #define UI_SERVICE 0x00000002
- #define SERVICE_UI_ALWAYS 0x00000002 /* Duplicate UI_SERVICE for consistency and compatibility */
- #define SERVICE_UI_ALLOWED 0x00000010
- #define UI_CURRENT_PROVIDER_FIRST 0x00000004
- /* MSG_SERVICE_UI_READ_ONLY 0x00000008 - in MAPISPI.H */
- /* GetProviderTable() */
- /****** MAPI_UNICODE ((ULONG) 0x80000000) above */
- /* Values for PR_RESOURCE_FLAGS in message service table */
- #define MAPI_IPROVIDERADMIN_METHODS(IPURE) \
- MAPIMETHOD(GetLastError) \
- (THIS_ HRESULT hResult, \
- ULONG ulFlags, \
- LPMAPIERROR FAR * lppMAPIError) IPURE; \
- MAPIMETHOD(GetProviderTable) \
- (THIS_ ULONG ulFlags, \
- LPMAPITABLE FAR * lppTable) IPURE; \
- MAPIMETHOD(CreateProvider) \
- (THIS_ LPTSTR lpszProvider, \
- ULONG cValues, \
- LPSPropValue lpProps, \
- ULONG ulUIParam, \
- ULONG ulFlags, \
- MAPIUID FAR * lpUID) IPURE; \
- MAPIMETHOD(DeleteProvider) \
- (THIS_ LPMAPIUID lpUID) IPURE; \
- MAPIMETHOD(OpenProfileSection) \
- (THIS_ LPMAPIUID lpUID, \
- LPCIID lpInterface, \
- ULONG ulFlags, \
- LPPROFSECT FAR * lppProfSect) IPURE; \
- #undef INTERFACE
- #define INTERFACE IProviderAdmin
- DECLARE_MAPI_INTERFACE_(IProviderAdmin, IUnknown)
- {
- BEGIN_INTERFACE
- MAPI_IUNKNOWN_METHODS(PURE)
- MAPI_IPROVIDERADMIN_METHODS(PURE)
- };
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif /* MAPIDEFS_H */
|