Update/Add MAPI headers.

This commit is contained in:
Jon Griffiths 2004-04-23 23:28:04 +00:00 committed by Alexandre Julliard
parent 7b6651a9e1
commit 11b26f05ad
9 changed files with 2334 additions and 34 deletions

View File

@ -51,6 +51,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
#include "shldisp.h"
#include "comcat.h"
#include "urlmon.h"
#include "mapiguid.h"
/* FIXME: cguids declares GUIDs but does not define their values */

View File

@ -121,6 +121,11 @@ WINDOWS_INCLUDES = \
mapi.h \
mapicode.h \
mapidefs.h \
mapiguid.h \
mapitags.h \
mapiutil.h \
mapival.h \
mapix.h \
mciavi.h \
mcx.h \
mediaerr.h \

View File

@ -24,11 +24,87 @@
#include <winerror.h>
#define MAKE_MAPI_SCODE(sev,fac,code) \
( (((ULONG)(sev)<<31) | ((ULONG)(fac)<<16) | ((ULONG)(code))) )
((SCODE)(((ULONG)(sev)<<31)|((ULONG)(fac)<<16)|((ULONG)(code))))
#define MAKE_MAPI_E( err ) (MAKE_MAPI_SCODE(1, FACILITY_ITF, err ))
#define MAKE_MAPI_E(e) (MAKE_MAPI_SCODE(1,FACILITY_ITF,(e)))
#define MAKE_MAPI_S(e) (MAKE_MAPI_SCODE(0,FACILITY_ITF,(e)))
#define MAPI_E_NOT_INITIALIZED MAKE_MAPI_E( 0x605)
/* Errors */
#define MAPI_E_ACCOUNT_DISABLED ((SCODE)0x80040124)
#define MAPI_E_AMBIGUOUS_RECIP ((SCODE)0x80040700)
#define MAPI_E_BAD_CHARWIDTH ((SCODE)0x80040103)
#define MAPI_E_BAD_COLUMN ((SCODE)0x80040118)
#define MAPI_E_BAD_VALUE ((SCODE)0x80040301)
#define MAPI_E_BUSY ((SCODE)0x8004010B)
#define MAPI_E_CALL_FAILED E_FAIL
#define MAPI_E_CANCEL ((SCODE)0x80040501)
#define MAPI_E_COLLISION ((SCODE)0x80040604)
#define MAPI_E_COMPUTED ((SCODE)0x8004011A)
#define MAPI_E_CORRUPT_DATA ((SCODE)0x8004011B)
#define MAPI_E_CORRUPT_STORE ((SCODE)0x80040600)
#define MAPI_E_DECLINE_COPY ((SCODE)0x80040306)
#define MAPI_E_DISK_ERROR ((SCODE)0x80040116)
#define MAPI_E_END_OF_SESSION ((SCODE)0x80040200)
#define MAPI_E_EXTENDED_ERROR ((SCODE)0x80040119)
#define MAPI_E_FAILONEPROVIDER ((SCODE)0x8004011D)
#define MAPI_E_FOLDER_CYCLE ((SCODE)0x8004060B)
#define MAPI_E_HAS_FOLDERS ((SCODE)0x80040609)
#define MAPI_E_HAS_MESSAGES ((SCODE)0x8004060A)
#define MAPI_E_INTERFACE_NOT_SUPPORTED E_NOINTERFACE
#define MAPI_E_INVALID_ACCESS_TIME ((SCODE)0x80040123)
#define MAPI_E_INVALID_BOOKMARK ((SCODE)0x80040405)
#define MAPI_E_INVALID_ENTRYID ((SCODE)0x80040107)
#define MAPI_E_INVALID_OBJECT ((SCODE)0x80040108)
#define MAPI_E_INVALID_PARAMETER E_INVALIDARG
#define MAPI_E_INVALID_TYPE ((SCODE)0x80040302)
#define MAPI_E_INVALID_WORKSTATION_ACCOUNT ((SCODE)0x80040122)
#define MAPI_E_LOGON_FAILED ((SCODE)0x80040111)
#define MAPI_E_MISSING_REQUIRED_COLUMN ((SCODE)0x80040202)
#define MAPI_E_NETWORK_ERROR ((SCODE)0x80040115)
#define MAPI_E_NO_ACCESS E_ACCESSDENIED
#define MAPI_E_NON_STANDARD ((SCODE)0x80040606)
#define MAPI_E_NO_RECIPIENTS ((SCODE)0x80040607)
#define MAPI_E_NO_SUPPORT ((SCODE)0x80040102)
#define MAPI_E_NO_SUPPRESS ((SCODE)0x80040602)
#define MAPI_E_NOT_ENOUGH_DISK ((SCODE)0x8004010D)
#define MAPI_E_NOT_ENOUGH_MEMORY E_OUTOFMEMORY
#define MAPI_E_NOT_ENOUGH_RESOURCES ((SCODE)0x8004010E)
#define MAPI_E_NOT_FOUND ((SCODE)0x8004010F)
#define MAPI_E_NOT_INITIALIZED ((SCODE)0x80040605)
#define MAPI_E_NOT_IN_QUEUE ((SCODE)0x80040601)
#define MAPI_E_NOT_ME ((SCODE)0x80040502)
#define MAPI_E_OBJECT_CHANGED ((SCODE)0x80040109)
#define MAPI_E_OBJECT_DELETED ((SCODE)0x8004010A)
#define MAPI_E_PASSWORD_CHANGE_REQUIRED ((SCODE)0x80040120)
#define MAPI_E_PASSWORD_EXPIRED ((SCODE)0x80040121)
#define MAPI_E_SESSION_LIMIT ((SCODE)0x80040112)
#define MAPI_E_STRING_TOO_LONG ((SCODE)0x80040105)
#define MAPI_E_SUBMITTED ((SCODE)0x80040608)
#define MAPI_E_TABLE_EMPTY ((SCODE)0x80040402)
#define MAPI_E_TABLE_TOO_BIG ((SCODE)0x80040403)
#define MAPI_E_TIMEOUT ((SCODE)0x80040401)
#define MAPI_E_TOO_BIG ((SCODE)0x80040305)
#define MAPI_E_TOO_COMPLEX ((SCODE)0x80040117)
#define MAPI_E_TYPE_NO_SUPPORT ((SCODE)0x80040303)
#define MAPI_E_UNABLE_TO_ABORT ((SCODE)0x80040114)
#define MAPI_E_UNABLE_TO_COMPLETE ((SCODE)0x80040400)
#define MAPI_E_UNCONFIGURED ((SCODE)0x8004011C)
#define MAPI_E_UNEXPECTED_ID ((SCODE)0x80040307)
#define MAPI_E_UNEXPECTED_TYPE ((SCODE)0x80040304)
#define MAPI_E_UNKNOWN_CPID ((SCODE)0x8004011E)
#define MAPI_E_UNKNOWN_ENTRYID ((SCODE)0x80040201)
#define MAPI_E_UNKNOWN_FLAGS ((SCODE)0x80040106)
#define MAPI_E_UNKNOWN_LCID ((SCODE)0x8004011F)
#define MAPI_E_USER_CANCEL ((SCODE)0x80040113)
#define MAPI_E_VERSION ((SCODE)0x80040110)
#define MAPI_E_WAIT ((SCODE)0x80040500)
/* Warnings */
#define MAPI_W_APPROX_COUNT ((SCODE)0x00040482)
#define MAPI_W_CANCEL_MESSAGE ((SCODE)0x00040580)
#define MAPI_W_ERRORS_RETURNED ((SCODE)0x00040380)
#define MAPI_W_NO_SERVICE ((SCODE)0x00040203)
#define MAPI_W_PARTIAL_COMPLETION ((SCODE)0x00040680)
#define MAPI_W_POSITION_CHANGED ((SCODE)0x00040481)
#endif
#endif /* MAPICODE_H */

View File

@ -16,58 +16,876 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __WINE_MAPIDEFS_H
#define __WINE_MAPIDEFS_H
#ifndef MAPIDEFS_H
#define MAPIDEFS_H
#ifndef __WINESRC__
# include <windows.h>
#endif
#include <windows.h>
#include <winerror.h>
#ifndef _OBJBASE_H_
#include <objbase.h>
#endif
/* Some types */
typedef unsigned char* LPBYTE;
/* Some types from other headers */
#ifndef __LHANDLE
#define __LHANDLE
typedef unsigned long LHANDLE, *LPLHANDLE;
typedef ULONG_PTR LHANDLE, *LPLHANDLE;
#endif
#ifndef _tagCY_DEFINED
#define _tagCY_DEFINED
typedef union tagCY
{
struct {
struct
{
#ifdef WORDS_BIGENDIAN
LONG Hi;
ULONG Lo;
LONG Hi;
ULONG Lo;
#else
ULONG Lo;
LONG Hi;
ULONG Lo;
LONG Hi;
#endif
} u;
LONGLONG int64;
} DUMMYSTRUCTNAME;
LONGLONG int64;
} CY;
typedef CY CURRENCY;
#endif /* _tagCY_DEFINED */
/* MAPI Recipient types */
#ifndef MAPI_ORIG
#define MAPI_ORIG 0 /* Message originator */
#define MAPI_TO 1 /* Primary recipient */
#define MAPI_CC 2 /* Copy recipient */
#define MAPI_BCC 3 /* Blind copy recipient */
#define MAPI_P1 0x10000000 /* P1 resend recipient */
#define MAPI_SUBMITTED 0x80000000 /* Already processed */
#ifndef _FILETIME_
#define _FILETIME_
typedef struct _FILETIME
{
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
#endif
/* Bit definitions for abFlags[0] */
#define MAPI_SHORTTERM 0x80
#define MAPI_NOTRECIP 0x40
#define MAPI_THISSESSION 0x20
#define MAPI_NOW 0x10
#define MAPI_NOTRESERVED 0x08
/* Memory allocation routines */
typedef SCODE (WINAPI ALLOCATEBUFFER)(ULONG,LPVOID*);
typedef SCODE (WINAPI ALLOCATEMORE)(ULONG,LPVOID,LPVOID*);
typedef ULONG (WINAPI FREEBUFFER)(LPVOID);
/* Bit definitions for abFlags[1] */
typedef ALLOCATEBUFFER *LPALLOCATEBUFFER;
typedef ALLOCATEMORE *LPALLOCATEMORE;
typedef FREEBUFFER *LPFREEBUFFER;
/* MAPI exposed interfaces */
typedef const IID *LPCIID;
typedef struct IAddrBook IAddrBook;
typedef IAddrBook *LPADRBOOK;
typedef struct IABContainer IABContainer;
typedef IABContainer *LPABCONT;
typedef struct IAttach IAttach;
typedef IAttach *LPATTACH;
typedef struct IDistList IDistList;
typedef IDistList *LPDISTLIST;
typedef struct IMailUser IMailUser;
typedef IMailUser *LPMAILUSER;
typedef struct IMAPIAdviseSink IMAPIAdviseSink;
typedef IMAPIAdviseSink *LPMAPIADVISESINK;
typedef struct IMAPIContainer IMAPIContainer;
typedef IMAPIContainer *LPMAPICONTAINER;
typedef struct IMAPIFolder IMAPIFolder;
typedef IMAPIFolder *LPMAPIFOLDER;
typedef struct IMAPIProgress IMAPIProgress;
typedef IMAPIProgress *LPMAPIPROGRESS;
typedef struct IMAPIProp IMAPIProp;
typedef IMAPIProp *LPMAPIPROP;
typedef struct IMAPIStatus IMAPIStatus;
typedef IMAPIStatus *LPMAPISTATUS;
typedef struct IMAPITable IMAPITable;
typedef IMAPITable *LPMAPITABLE;
typedef struct IMessage IMessage;
typedef IMessage *LPMESSAGE;
typedef struct IMsgStore IMsgStore;
typedef IMsgStore *LPMDB;
typedef struct IProfSect IProfSect;
typedef IProfSect *LPPROFSECT;
typedef struct IProviderAdmin IProviderAdmin;
typedef IProviderAdmin *LPPROVIDERADMIN;
#ifndef MAPI_DIM
# define MAPI_DIM 1 /* Default to one dimension for variable length arrays */
#endif
/* Flags for abFlags[0] */
#define MAPI_NOTRESERVED 0x08
#define MAPI_NOW 0x10
#define MAPI_THISSESSION 0x20
#define MAPI_NOTRECIP 0x40
#define MAPI_SHORTTERM 0x80
/* Flags for abFlags[1] */
#define MAPI_COMPOUND 0x80
#endif /*__WINE_MAPIDEFS_H*/
typedef struct _ENTRYID
{
BYTE abFlags[4];
BYTE ab[MAPI_DIM];
} ENTRYID, *LPENTRYID;
/* MAPI GUID's */
typedef struct _MAPIUID
{
BYTE ab[sizeof(GUID)];
} MAPIUID, *LPMAPIUID;
#define IsEqualMAPIUID(pl,pr) (!memcmp((pl),(pr),sizeof(MAPIUID)))
#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 types */
#define MAPI_STORE 1U
#define MAPI_ADDRBOOK 2U
#define MAPI_FOLDER 3U
#define MAPI_ABCONT 4U
#define MAPI_MESSAGE 5U
#define MAPI_MAILUSER 6U
#define MAPI_ATTACH 7U
#define MAPI_DISTLIST 8U
#define MAPI_PROFSECT 9U
#define MAPI_STATUS 10U
#define MAPI_SESSION 11U
#define MAPI_FORMINFO 12U
/* Flags for various calls */
#define MAPI_MODIFY 0x00000001U /* Object can be modified */
#define MAPI_ACCESS_MODIFY MAPI_MODIFY /* Want write access */
#define MAPI_ACCESS_READ 0x00000002U /* Want read access */
#define MAPI_ACCESS_DELETE 0x00000004U /* Want delete access */
#define MAPI_ACCESS_CREATE_HIERARCHY 0x00000008U
#define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U
#define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U
#define MAPI_UNICODE 0x80000000U /* Strings in this call are Unicode */
#if defined (UNICODE) || defined (__WINESRC__)
#define fMapiUnicode MAPI_UNICODE
#else
#define fMapiUnicode 0U
#endif
/* Types of message receivers */
#ifndef MAPI_ORIG
#define MAPI_ORIG 0 /* The original author */
#define MAPI_TO 1 /* The primary message receiver */
#define MAPI_CC 2 /* A carbon copy receiver */
#define MAPI_BCC 3 /* A blind carbon copy receiver */
#define MAPI_P1 0x10000000 /* A message resend */
#define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */
#endif
#ifndef cchProfileNameMax
#define cchProfileNameMax 64 /* Maximum length of a profile name */
#define cchProfilePassMax 64 /* Maximum length of a profile password */
#endif
/* Properties: The are the contents of cells in MAPI tables, as well as the
* values returned when object properties are queried.
*/
/* Property types */
#define PT_UNSPECIFIED 0U
#define PT_NULL 1U
#define PT_I2 2U
#define PT_SHORT PT_I2
#define PT_LONG 3U
#define PT_I4 PT_LONG
#define PT_R4 4U
#define PT_FLOAT PT_R4
#define PT_DOUBLE 5U
#define PT_R8 PT_DOUBLE
#define PT_CURRENCY 6U
#define PT_APPTIME 7U
#define PT_ERROR 10U
#define PT_BOOLEAN 11U
#define PT_OBJECT 13U
#define PT_I8 20U
#define PT_LONGLONG PT_I8
#define PT_STRING8 30U
#define PT_UNICODE 31U
#define PT_SYSTIME 64U
#define PT_CLSID 72U
#define PT_BINARY 258U
#define MV_FLAG 0x1000 /* This property type is multi-valued (an array) */
#define MV_INSTANCE 0x2000
#define MVI_FLAG (MV_FLAG|MV_INSTANCE)
#define MVI_PROP(t) ((t)|MVI_FLAG)
#ifndef __WINESRC__
# 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
#endif
#define PROP_TYPE_MASK 0xFFFFU
#define PROP_TYPE(t) ((t) & PROP_TYPE_MASK)
#define PROP_ID(t) ((t) >> 16)
#define PROP_TAG(t,id) (((id) << 16) | t)
#define PROP_ID_NULL 0
#define PROP_ID_INVALID 0xFFFF
#define PR_NULL PROP_TAG(PT_NULL, PROP_ID_NULL)
#define CHANGE_PROP_TYPE(t,typ) ((0xFFFF0000 & t) | typ)
/* Multi-valued property types */
#define PT_MV_I2 (MV_FLAG|PT_I2)
#define PT_MV_SHORT PT_MV_I2
#define PT_MV_LONG (MV_FLAG|PT_LONG)
#define PT_MV_I4 PT_MV_LONG
#define PT_MV_R4 (MV_FLAG|PT_R4)
#define PT_MV_FLOAT PT_MV_R4
#define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
#define PT_MV_R8 PT_MV_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)
#define PT_MV_LONGLONG PT_MV_I8
/* The property tag structure. This describes a list of columns */
typedef struct _SPropTagArray
{
ULONG cValues; /* Number of elements in aulPropTag */
ULONG aulPropTag[MAPI_DIM]; /* Property tags */
} SPropTagArray, *LPSPropTagArray;
#define CbNewSPropTagArray(c) (offsetof(SPropTagArray,aulPropTag)+(c)*sizeof(ULONG))
#define CbSPropTagArray(p) CbNewSPropTagArray((p)->cValues)
#define SizedSPropTagArray(n,id) \
struct _SPropTagArray_##id { ULONG cValues; ULONG aulPropTag[n]; } id
/* Multi-valued PT_APPTIME property value */
typedef struct _SAppTimeArray
{
ULONG cValues; /* Number of doubles in lpat */
double *lpat; /* Pointer to double array of length cValues */
} SAppTimeArray;
/* PT_BINARY property value */
typedef struct _SBinary
{
ULONG cb; /* Number of bytes in lpb */
LPBYTE lpb; /* Pointer to byte array of length cb */
} SBinary, *LPSBinary;
/* Multi-valued PT_BINARY property value */
typedef struct _SBinaryArray
{
ULONG cValues; /* Number of SBinarys in lpbin */
SBinary *lpbin; /* Pointer to SBinary array of length cValues */
} SBinaryArray;
typedef SBinaryArray ENTRYLIST, *LPENTRYLIST;
/* Multi-valued PT_CY property value */
typedef struct _SCurrencyArray
{
ULONG cValues; /* Number of CYs in lpcu */
CY *lpcur; /* Pointer to CY array of length cValues */
} SCurrencyArray;
/* Multi-valued PT_SYSTIME property value */
typedef struct _SDateTimeArray
{
ULONG cValues; /* Number of FILETIMEs in lpft */
FILETIME *lpft; /* Pointer to FILETIME array of length cValues */
} SDateTimeArray;
/* Multi-valued PT_DOUBLE property value */
typedef struct _SDoubleArray
{
ULONG cValues; /* Number of doubles in lpdbl */
double *lpdbl; /* Pointer to double array of length cValues */
} SDoubleArray;
/* Multi-valued PT_CLSID property value */
typedef struct _SGuidArray
{
ULONG cValues; /* Number of GUIDs in lpguid */
GUID *lpguid; /* Pointer to GUID array of length cValues */
} SGuidArray;
/* Multi-valued PT_LONGLONG property value */
typedef struct _SLargeIntegerArray
{
ULONG cValues; /* Number of long64s in lpli */
LARGE_INTEGER *lpli; /* Pointer to long64 array of length cValues */
} SLargeIntegerArray;
/* Multi-valued PT_LONG property value */
typedef struct _SLongArray
{
ULONG cValues; /* Number of longs in lpl */
LONG *lpl; /* Pointer to long array of length cValues */
} SLongArray;
/* Multi-valued PT_STRING8 property value */
typedef struct _SLPSTRArray
{
ULONG cValues; /* Number of Ascii strings in lppszA */
LPSTR *lppszA; /* Pointer to Ascii string array of length cValues */
} SLPSTRArray;
/* Multi-valued PT_FLOAT property value */
typedef struct _SRealArray
{
ULONG cValues; /* Number of floats in lpflt */
float *lpflt; /* Pointer to float array of length cValues */
} SRealArray;
/* Multi-valued PT_SHORT property value */
typedef struct _SShortArray
{
ULONG cValues; /* Number of shorts in lpb */
short int *lpi; /* Pointer to short array of length cValues */
} SShortArray;
/* Multi-valued PT_UNICODE property value */
typedef struct _SWStringArray
{
ULONG cValues; /* Number of Unicode strings in lppszW */
LPWSTR *lppszW; /* Pointer to Unicode string array of length cValues */
} SWStringArray;
/* A property value */
typedef union _PV
{
short int i;
LONG l;
ULONG ul;
float flt;
double dbl;
unsigned short b;
CY cur;
double at;
FILETIME ft;
LPSTR lpszA;
SBinary bin;
LPWSTR lpszW;
LPGUID lpguid;
LARGE_INTEGER li;
SShortArray MVi;
SLongArray MVl;
SRealArray MVflt;
SDoubleArray MVdbl;
SCurrencyArray MVcur;
SAppTimeArray MVat;
SDateTimeArray MVft;
SBinaryArray MVbin;
SLPSTRArray MVszA;
SWStringArray MVszW;
SGuidArray MVguid;
SLargeIntegerArray MVli;
SCODE err;
LONG x;
} __UPV;
/* Property value structure. This is essentially a mini-Variant */
typedef struct _SPropValue
{
ULONG ulPropTag; /* The property type */
ULONG dwAlignPad; /* Alignment, treat as reserved */
union _PV Value; /* The property value */
} SPropValue, *LPSPropValue;
/* Structure describing a table row (a collection of property values) */
typedef struct _SRow
{
ULONG ulAdrEntryPad; /* Padding, treat as reserved */
ULONG cValues; /* Count of property values in lpProbs */
LPSPropValue lpProps; /* Pointer to an array of property values of length cValues */
} SRow, *LPSRow;
/* Structure describing a set of table rows */
typedef struct _SRowSet
{
ULONG cRows; /* Count of rows in aRow */
SRow aRow[MAPI_DIM]; /* Array of rows of length cRows */
} SRowSet, *LPSRowSet;
#define CbNewSRowSet(c) (offsetof(SRowSet,aRow)+(c)*sizeof(SRow))
#define CbSRowSet(p) CbNewSRowSet((p)->cRows)
#define SizedSRowSet(n,id) \
struct _SRowSet_##id { ULONG cRows; SRow aRow[n]; } id
/* Structure describing a problem with a property */
typedef struct _SPropProblem
{
ULONG ulIndex; /* Index of the property */
ULONG ulPropTag; /* Proprty tag of the property */
SCODE scode; /* Error code of the problem */
} SPropProblem, *LPSPropProblem;
/* A collection of property problems */
typedef struct _SPropProblemArray
{
ULONG cProblem; /* Number of problems in aProblem */
SPropProblem aProblem[MAPI_DIM]; /* Array of problems of length cProblem */
} SPropProblemArray, *LPSPropProblemArray;
/* FPropContainsProp flags */
#define FL_FULLSTRING 0x00000ul /* Exact string match */
#define FL_SUBSTRING 0x00001ul /* Substring match */
#define FL_PREFIX 0x00002ul /* Prefix match */
#define FL_IGNORECASE 0x10000ul /* Case insensitive */
#define FL_IGNORENONSPACE 0x20000ul /* Ignore non spacing characters */
#define FL_LOOSE 0x40000ul /* Try very hard to match */
/* Table types returned by IMAPITable_GetStatus() */
#define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */
#define TBLTYPE_KEYSET 1U /* Table has a fixed number of rows, but row values may change */
#define TBLTYPE_DYNAMIC 2U /* Table values and the number of rows may change */
/* Table status returned by IMAPITable_GetStatus() */
#define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */
#define TBLSTAT_QCHANGED 7U /* Table data has changed as expected */
#define TBLSTAT_SORTING 9U /* Table is being asynchronously sorted */
#define TBLSTAT_SORT_ERROR 10U /* An error occurred while sorting the table */
#define TBLSTAT_SETTING_COLS 11U /* Table columns are being asynchronously changed */
#define TBLSTAT_SETCOL_ERROR 13U /* An error occurred during column changing */
#define TBLSTAT_RESTRICTING 14U /* Table rows are being asynchronously restricted */
#define TBLSTAT_RESTRICT_ERROR 15U /* An error occurred during row restriction */
/* Flags for IMAPITable operations that can be asynchronous */
#define TBL_NOWAIT 1U /* Perform the operation asynchronously */
#define TBL_BATCH 2U /* Perform the operation when the results are needed */
#define TBL_ASYNC TBL_NOWAIT /* Synonym for TBL_NOWAIT */
/* Flags for IMAPITable_FindRow() */
#define DIR_BACKWARD 1U /* Read rows backwards from the start bookmark */
/* Table bookmarks */
typedef ULONG BOOKMARK;
#define BOOKMARK_BEGINNING ((BOOKMARK)0) /* The first row */
#define BOOKMARK_CURRENT ((BOOKMARK)1) /* The curent table row */
#define BOOKMARK_END ((BOOKMARK)2) /* The last row */
/* Row restrictions */
typedef struct _SRestriction* LPSRestriction;
typedef struct _SAndRestriction
{
ULONG cRes;
LPSRestriction lpRes;
} SAndRestriction;
typedef struct _SBitMaskRestriction
{
ULONG relBMR;
ULONG ulPropTag;
ULONG ulMask;
} SBitMaskRestriction;
typedef struct _SCommentRestriction
{
ULONG cValues;
LPSRestriction lpRes;
LPSPropValue lpProp;
} SCommentRestriction;
#define RELOP_LT 0U
#define RELOP_LE 1U
#define RELOP_GT 2U
#define RELOP_GE 3U
#define RELOP_EQ 4U
#define RELOP_NE 5U
#define RELOP_RE 6U
typedef struct _SComparePropsRestriction
{
ULONG relop;
ULONG ulPropTag1;
ULONG ulPropTag2;
} SComparePropsRestriction;
typedef struct _SContentRestriction
{
ULONG ulFuzzyLevel;
ULONG ulPropTag;
LPSPropValue lpProp;
} SContentRestriction;
typedef struct _SExistRestriction
{
ULONG ulReserved1;
ULONG ulPropTag;
ULONG ulReserved2;
} SExistRestriction;
typedef struct _SNotRestriction
{
ULONG ulReserved;
LPSRestriction lpRes;
} SNotRestriction;
typedef struct _SOrRestriction
{
ULONG cRes;
LPSRestriction lpRes;
} SOrRestriction;
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
typedef struct _SSizeRestriction
{
ULONG relop;
ULONG ulPropTag;
ULONG cb;
} SSizeRestriction;
typedef struct _SSubRestriction
{
ULONG ulSubObject;
LPSRestriction lpRes;
} SSubRestriction;
/* Restriction types */
#define RES_AND 0U
#define RES_OR 1U
#define RES_NOT 2U
#define RES_CONTENT 3U
#define RES_PROPERTY 4U
#define RES_COMPAREPROPS 5U
#define RES_BITMASK 6U
#define RES_SIZE 7U
#define RES_EXIST 8U
#define RES_SUBRESTRICTION 9U
#define RES_COMMENT 10U
typedef struct _SRestriction
{
ULONG rt;
union
{
SAndRestriction resAnd;
SBitMaskRestriction resBitMask;
SCommentRestriction resComment;
SComparePropsRestriction resCompareProps;
SContentRestriction resContent;
SExistRestriction resExist;
SNotRestriction resNot;
SOrRestriction resOr;
SPropertyRestriction resProperty;
SSizeRestriction resSize;
SSubRestriction resSub;
} res;
} SRestriction;
/* Errors */
typedef struct _MAPIERROR
{
ULONG ulVersion; /* Mapi version */
#if defined (UNICODE) || defined (__WINESRC__)
LPWSTR lpszError; /* Error and component strings. These are Ascii */
LPWSTR lpszComponent; /* unless the MAPI_UNICODE flag is passed in */
#else
LPSTR lpszError;
LPSTR lpszComponent;
#endif
ULONG ulLowLevelError;
ULONG ulContext;
} MAPIERROR, *LPMAPIERROR;
/* Sorting */
#define TABLE_SORT_ASCEND 0U
#define TABLE_SORT_DESCEND 1U
#define TABLE_SORT_COMBINE 2U
typedef struct _SSortOrder
{
ULONG ulPropTag;
ULONG ulOrder;
} SSortOrder, *LPSSortOrder;
typedef struct _SSortOrderSet
{
ULONG cSorts;
ULONG cCategories;
ULONG cExpanded;
SSortOrder aSort[MAPI_DIM];
} SSortOrderSet, * LPSSortOrderSet;
#define MNID_ID 0
#define MNID_STRING 1
typedef struct _MAPINAMEID
{
LPGUID lpguid;
ULONG ulKind;
union
{
LONG lID;
LPWSTR lpwstrName;
} Kind;
} MAPINAMEID, *LPMAPINAMEID;
/* Desired notification types (bitflags) */
#define fnevCriticalError 0x00000001UL
#define fnevNewMail 0x00000002UL
#define fnevObjectCreated 0x00000004UL
#define fnevObjectDeleted 0x00000008UL
#define fnevObjectModified 0x00000010UL
#define fnevObjectMoved 0x00000020UL
#define fnevObjectCopied 0x00000040UL
#define fnevSearchComplete 0x00000080UL
#define fnevTableModified 0x00000100UL
#define fnevStatusObjectModified 0x00000200UL
#define fnevReservedForMapi 0x40000000UL
#define fnevExtended 0x80000000UL
/* Type of notification event */
#define TABLE_CHANGED 1U
#define TABLE_ERROR 2U
#define TABLE_ROW_ADDED 3U
#define TABLE_ROW_DELETED 4U
#define TABLE_ROW_MODIFIED 5U
#define TABLE_SORT_DONE 6U
#define TABLE_RESTRICT_DONE 7U
#define TABLE_SETCOL_DONE 8U
#define TABLE_RELOAD 9U
/* fnevCriticalError notification */
typedef struct _ERROR_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
SCODE scode;
ULONG ulFlags;
LPMAPIERROR lpMAPIError;
} ERROR_NOTIFICATION;
/* fnevNewMail notification */
typedef struct _NEWMAIL_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
ULONG cbParentID;
LPENTRYID lpParentID;
ULONG ulFlags;
#if defined (UNICODE) || defined (__WINESRC__)
LPWSTR lpszMessageClass;
#else
LPSTR lpszMessageClass;
#endif
ULONG ulMessageFlags;
} NEWMAIL_NOTIFICATION;
/* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */
typedef struct _OBJECT_NOTIFICATION
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
ULONG ulObjType;
ULONG cbParentID;
LPENTRYID lpParentID;
ULONG cbOldID;
LPENTRYID lpOldID;
ULONG cbOldParentID;
LPENTRYID lpOldParentID;
LPSPropTagArray lpPropTagArray;
} OBJECT_NOTIFICATION;
/* fnevTableModified notification */
typedef struct _TABLE_NOTIFICATION
{
ULONG ulTableEvent;
HRESULT hResult;
SPropValue propIndex;
SPropValue propPrior;
SRow row;
ULONG ulPad;
} TABLE_NOTIFICATION;
/* fnevExtended notification */
typedef struct _EXTENDED_NOTIFICATION
{
ULONG ulEvent;
ULONG cb;
LPBYTE pbEventParameters;
} EXTENDED_NOTIFICATION;
/* fnevStatusObjectModified notification */
typedef struct
{
ULONG cbEntryID;
LPENTRYID lpEntryID;
ULONG cValues;
LPSPropValue lpPropVals;
} STATUS_OBJECT_NOTIFICATION;
/* The notification structure passed to advise sinks */
typedef struct _NOTIFICATION
{
ULONG ulEventType;
ULONG ulAlignPad;
union
{
ERROR_NOTIFICATION err;
NEWMAIL_NOTIFICATION newmail;
OBJECT_NOTIFICATION obj;
TABLE_NOTIFICATION tab;
EXTENDED_NOTIFICATION ext;
STATUS_OBJECT_NOTIFICATION statobj;
} info;
} NOTIFICATION, *LPNOTIFICATION;
typedef LONG (WINAPI NOTIFCALLBACK)(LPVOID,ULONG,LPNOTIFICATION);
typedef NOTIFCALLBACK *LPNOTIFCALLBACK;
/*****************************************************************************
* IMAPITable interface
*
* This is the read-only 'view' over an I(MAPI)TableData object.
*/
#define INTERFACE IMAPITable
#define IMAPITable_METHODS \
IUnknown_METHODS \
STDMETHOD(GetLastError)(THIS_ HRESULT hRes, ULONG ulFlags, LPMAPIERROR *lppError) PURE; \
STDMETHOD(Advise)(THIS_ ULONG ulMask, LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE; \
STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE; \
STDMETHOD(GetStatus)(THIS_ ULONG *lpStatus, ULONG *lpType) PURE; \
STDMETHOD(SetColumns)(THIS_ LPSPropTagArray lpProps, ULONG ulFlags) PURE; \
STDMETHOD(QueryColumns)(THIS_ ULONG ulFlags, LPSPropTagArray *lpCols) PURE; \
STDMETHOD(GetRowCount)(THIS_ ULONG ulFlags, ULONG *lpCount) PURE; \
STDMETHOD(SeekRow)(THIS_ BOOKMARK lpStart, LONG lRows, LONG *lpSeeked) PURE; \
STDMETHOD(SeekRowApprox)(THIS_ ULONG ulNum, ULONG ulDenom) PURE; \
STDMETHOD(QueryPosition)(THIS_ ULONG *lpRow, ULONG *lpNum, ULONG *lpDenom) PURE; \
STDMETHOD(FindRow)(THIS_ LPSRestriction lpRestrict, BOOKMARK lpOrigin, ULONG ulFlags) PURE; \
STDMETHOD(Restrict)(THIS_ LPSRestriction lpRestrict, ULONG ulFlags) PURE; \
STDMETHOD(CreateBookmark)(THIS_ BOOKMARK *lppPos) PURE; \
STDMETHOD(FreeBookmark)(THIS_ BOOKMARK lpPos) PURE; \
STDMETHOD(SortTable)(THIS_ LPSSortOrderSet lpSortOpts, ULONG ulFlags) PURE; \
STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet *lppSortOpts) PURE; \
STDMETHOD(QueryRows)(THIS_ LONG lRows, ULONG ulFlags, LPSRowSet *lppRows) PURE; \
STDMETHOD(Abort) (THIS) PURE; \
STDMETHOD(ExpandRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulRows, \
ULONG ulFlags, LPSRowSet *lppRows, ULONG *lpMore) PURE; \
STDMETHOD(CollapseRow)(THIS_ ULONG cbKey, LPBYTE lpKey, ULONG ulFlags, ULONG *lpRows) PURE; \
STDMETHOD(WaitForCompletion)(THIS_ ULONG ulFlags, ULONG ulTime, ULONG *lpState) PURE; \
STDMETHOD(GetCollapseState)(THIS_ ULONG ulFlags, ULONG cbKey, LPBYTE lpKey, \
ULONG *lpStateLen, LPBYTE *lpState) PURE; \
STDMETHOD(SetCollapseState)(THIS_ ULONG ulFlags, ULONG ulLen, \
LPBYTE lpStart, BOOKMARK *lppWhere) PURE;
ICOM_DEFINE(IMAPITable,IUnknown)
#undef INTERFACE
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMAPITable_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IMAPITable_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IMAPITable_Release(p) (p)->lpVtbl->Release(p)
/*** IMAPITable methods ***/
#define IMAPITable_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
#define IMAPITable_Advise(p,a,b,c) (p)->lpVtbl->Advise(p,a,b,c)
#define IMAPITable_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
#define IMAPITable_GetStatus(p,a,b) (p)->lpVtbl->GetStatus(p,a,b)
#define IMAPITable_SetColumns(p,a,b) (p)->lpVtbl->SetColumns(p,a,b)
#define IMAPITable_QueryColumns(p,a,b) (p)->lpVtbl->QueryColumns(p,a,b)
#define IMAPITable_GetRowCount(p,a,b) (p)->lpVtbl->GetRowCount(p,a,b)
#define IMAPITable_SeekRow(p,a,b) (p)->lpVtbl->SeekRow(p,a,b)
#define IMAPITable_SeekRowApprox(p,a,b) (p)->lpVtbl->SeekRowApprox(p,a,b)
#define IMAPITable_QueryPosition(p,a,b) (p)->lpVtbl->QueryPosition(p,a,b)
#define IMAPITable_FindRow(p,a,b,c) (p)->lpVtbl->FindRow(p,a,b,c)
#define IMAPITable_Restrict(p,a,b) (p)->lpVtbl->Recstrict(p,a,b)
#define IMAPITable_CreateBookmark(p,a) (p)->lpVtbl->CreateBookmark(p,a)
#define IMAPITable_FreeBookmark(p,a) (p)->lpVtbl->FreeBookmark(p,a)
#define IMAPITable_SortTable(p,a,b) (p)->lpVtbl->SortTable(p,a,b)
#define IMAPITable_QuerySortOrder(p,a) (p)->lpVtbl->QuerySortOrder(p,a)
#define IMAPITable_QueryRows(p,a,b,c) (p)->lpVtbl->QueryRows(p,a,b,c)
#define IMAPITable_Abort(p) (p)->lpVtbl->Abort(p)
#define IMAPITable_ExpandRow(p,a,b,c,d,e,f) (p)->lpVtbl->ExpandRow(p,a,b,c,d,e,f)
#define IMAPITable_CollapseRow(p,a,b,c,d) (p)->lpVtbl->CollapseRow(p,a,b,c,d)
#define IMAPITable_WaitForCompletion(p,a,b,c) (p)->lpVtbl->WaitForCompletion(p,a,b,c)
#define IMAPITable_GetCollapseState(p,a,b,c,d,e) (p)->lpVtbl->GetCollapseState(p,a,b,c,d,e)
#define IMAPITable_SetCollapseState(p,a,b,c,d) (p)->lpVtbl->SetCollapseState(p,a,b,c,d)
#endif
/*****************************************************************************
* IMAPIAdviseSink interface
*/
#define INTERFACE IMAPIAdviseSink
#define IMAPIAdviseSink_METHODS \
IUnknown_METHODS \
STDMETHOD(OnNotify)(THIS_ ULONG NumNotif, LPNOTIFICATION lpNotif) PURE;
ICOM_DEFINE(IMAPIAdviseSink,IUnknown)
#undef INTERFACE
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMAPIAdviseSink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IMAPIAdviseSink_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IMAPIAdviseSink_Release(p) (p)->lpVtbl->Release(p)
/*** IMAPIAdviseSink methods ***/
#define IMAPIAdviseSink_OnNotify(p,a,b) (p)->lpVtbl->OnNotify(p,a,b)
#endif
typedef struct
{
ULONG cb;
BYTE abEntry[MAPI_DIM];
} FLATENTRY, *LPFLATENTRY;
typedef struct
{
ULONG cEntries;
ULONG cbEntries;
BYTE abEntries[MAPI_DIM];
} FLATENTRYLIST, *LPFLATENTRYLIST;
typedef struct
{
ULONG cb;
BYTE ab[MAPI_DIM];
} MTSID, *LPMTSID;
typedef struct
{
ULONG cMTSIDs;
ULONG cbMTSIDs;
BYTE abMTSIDs[MAPI_DIM];
} FLATMTSIDLIST, *LPFLATMTSIDLIST;
typedef struct _ADRENTRY
{
ULONG ulReserved1;
ULONG cValues;
LPSPropValue rgPropVals;
} ADRENTRY, *LPADRENTRY;
typedef struct _ADRLIST
{
ULONG cEntries;
ADRENTRY aEntries[MAPI_DIM];
} ADRLIST, *LPADRLIST;
#endif /*MAPIDEFS_H*/

81
include/mapiguid.h Normal file
View File

@ -0,0 +1,81 @@
/*
* Copyright 2004 Jon Griffiths
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef MAPIGUID_H
#define MAPIGUID_H
#define DEFINE_MAPIGUID(n,l,w1,w2) DEFINE_OLEGUID(n,l,w1,w2)
DEFINE_MAPIGUID(IID_IABContainer,0x2030D,0,0);
DEFINE_MAPIGUID(IID_IABLogon,0x20314,0,0);
DEFINE_MAPIGUID(IID_IABProvider,0x20311,0,0);
DEFINE_MAPIGUID(IID_IAddrBook,0x20309,0,0);
DEFINE_MAPIGUID(IID_IAttachment,0x20308,0,0);
DEFINE_MAPIGUID(IID_IDistList,0x2030E,0,0);
DEFINE_MAPIGUID(IID_IEnumMAPIFormProp,0x20323,0,0);
DEFINE_MAPIGUID(IID_IMailUser,0x2030A,0,0);
DEFINE_MAPIGUID(IID_IMAPIAdviseSink,0x20302,0,0);
DEFINE_MAPIGUID(IID_IMAPIContainer,0x2030B,0,0);
DEFINE_MAPIGUID(IID_IMAPIControl,0x2031B,0,0);
DEFINE_MAPIGUID(IID_IMAPIFolder,0x2030C,0,0);
DEFINE_MAPIGUID(IID_IMAPIForm,0x20327,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormAdviseSink,0x2032F,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormContainer,0x2032E,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormFactory,0x20350,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormInfo,0x20324,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormMgr,0x20322,0,0);
DEFINE_MAPIGUID(IID_IMAPIFormProp,0x2032D,0,0);
DEFINE_MAPIGUID(IID_IMAPIMessageSite,0x20370,0,0);
DEFINE_MAPIGUID(IID_IMAPIProgress,0x2031F,0,0);
DEFINE_MAPIGUID(IID_IMAPIProp,0x20303,0,0);
DEFINE_MAPIGUID(IID_IMAPIPropData,0x2031A,0,0);
DEFINE_MAPIGUID(IID_IMAPISession,0x20300,0,0);
DEFINE_MAPIGUID(IID_IMAPISpoolerInit,0x20317,0,0);
DEFINE_MAPIGUID(IID_IMAPISpoolerService,0x2031E,0,0);
DEFINE_MAPIGUID(IID_IMAPISpoolerSession,0x20318,0,0);
DEFINE_MAPIGUID(IID_IMAPIStatus,0x20305,0,0);
DEFINE_MAPIGUID(IID_IMAPISup,0x2030F,0,0);
DEFINE_MAPIGUID(IID_IMAPITable,0x20301,0,0);
DEFINE_MAPIGUID(IID_IMAPITableData,0x20316,0,0);
DEFINE_MAPIGUID(IID_IMAPIViewAdviseSink,0x2032B,0,0);
DEFINE_MAPIGUID(IID_IMAPIViewContext,0x20321,0,0);
DEFINE_MAPIGUID(IID_IMessage,0x20307,0,0);
DEFINE_MAPIGUID(IID_IMsgServiceAdmin,0x2031D,0,0);
DEFINE_MAPIGUID(IID_IMsgStore,0x20306,0,0);
DEFINE_MAPIGUID(IID_IMSLogon,0x20313,0,0);
DEFINE_MAPIGUID(IID_IMSProvider,0x20310,0,0);
DEFINE_MAPIGUID(IID_IPersistMessage,0x2032A,0,0);
DEFINE_MAPIGUID(IID_IProfAdmin,0x2031C,0,0);
DEFINE_MAPIGUID(IID_IProfSect,0x20304,0,0);
DEFINE_MAPIGUID(IID_IProviderAdmin,0x20325,0,0);
DEFINE_MAPIGUID(IID_ISpoolerHook,0x20320,0,0);
DEFINE_MAPIGUID(IID_IStreamDocfile,0x2032C,0,0);
DEFINE_MAPIGUID(IID_IStreamTnef,0x20330,0,0);
DEFINE_MAPIGUID(IID_ITNEF,0x20319,0,0);
DEFINE_MAPIGUID(IID_IXPLogon,0x20315,0,0);
DEFINE_MAPIGUID(IID_IXPProvider,0x20312,0,0);
DEFINE_MAPIGUID(MUID_PROFILE_INSTANCE,0x20385,0,0);
DEFINE_MAPIGUID(PS_MAPI,0x20328,0,0);
DEFINE_MAPIGUID(PS_PUBLIC_STRINGS,0x20329,0,0);
DEFINE_MAPIGUID(PS_ROUTING_ADDRTYPE,0x20381,0,0);
DEFINE_MAPIGUID(PS_ROUTING_DISPLAY_NAME,0x20382,0,0);
DEFINE_MAPIGUID(PS_ROUTING_EMAIL_ADDRESSES,0x20380,0,0);
DEFINE_MAPIGUID(PS_ROUTING_ENTRYID,0x20383,0,0);
DEFINE_MAPIGUID(PS_ROUTING_SEARCH_KEY,0x20384,0,0);
#endif/* MAPIGUID_H */

813
include/mapitags.h Normal file
View File

@ -0,0 +1,813 @@
/*
* MAPI property tag declarations
*
* Copyright 2004 Jon Griffiths
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License,or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not,write to the Free Software
* Foundation,Inc.,59 Temple Place,Suite 330,Boston,MA 02111-1307 USA
*/
#ifndef MAPITAGS_H
#define MAPITAGS_H
#define FIsTransmittable(t) (PROP_ID(t) < 0x0E00 || PROP_ID(t) >= 0x8000 || \
(PROP_ID(t) >= 0x1000 && PROP_ID(t) < 0x6000) || \
(PROP_ID(t) >= 0x6800 && PROP_ID(t) < 0x7C00))
#define PR_ACKNOWLEDGEMENT_MODE PROP_TAG(PT_I4,0x01)
#define PR_ALTERNATE_RECIPIENT_ALLOWED PROP_TAG(PT_BOOLEAN,0x02)
#define PR_AUTHORIZING_USERS PROP_TAG(PT_BINARY,0x03)
/* Comment on an automatically forwarded message */
#define PR_AUTO_FORWARD_COMMENT_W PROP_TAG(PT_UNICODE,0x04)
#define PR_AUTO_FORWARD_COMMENT_A PROP_TAG(PT_STRING8,0x04)
#define PR_AUTO_FORWARD_COMMENT WINELIB_NAME_AW(PR_AUTO_FORWARD_COMMENT_)
/* Whether a message has been automatically forwarded */
#define PR_AUTO_FORWARDED PROP_TAG(PT_BOOLEAN,0x05)
#define PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID PROP_TAG(PT_BINARY,0x06)
#define PR_CONTENT_CORRELATOR PROP_TAG(PT_BINARY,0x07)
#define PR_CONTENT_IDENTIFIER_W PROP_TAG(PT_UNICODE,0x08)
#define PR_CONTENT_IDENTIFIER_A PROP_TAG(PT_STRING8,0x08)
#define PR_CONTENT_IDENTIFIER WINELIB_NAME_AW(PR_CONTENT_IDENTIFIER_)
/* MIME content length */
#define PR_CONTENT_LENGTH PROP_TAG(PT_I4,0x09)
#define PR_CONTENT_RETURN_REQUESTED PROP_TAG(PT_BOOLEAN,0x0A)
#define PR_CONVERSATION_KEY PROP_TAG(PT_BINARY,0x0B)
#define PR_CONVERSION_EITS PROP_TAG(PT_BINARY,0x0C)
#define PR_CONVERSION_WITH_LOSS_PROHIBITED PROP_TAG(PT_BOOLEAN,0x0D)
#define PR_CONVERTED_EITS PROP_TAG(PT_BINARY,0x0E)
/* Time to deliver for delayed delivery messages */
#define PR_DEFERRED_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x0F)
#define PR_DELIVER_TIME PROP_TAG(PT_SYSTIME,0x10)
/* Reason a message was discarded */
#define PR_DISCARD_REASON PROP_TAG(PT_I4,0x11)
#define PR_DISCLOSURE_OF_RECIPIENTS PROP_TAG(PT_BOOLEAN,0x12)
#define PR_DL_EXPANSION_HISTORY PROP_TAG(PT_BINARY,0x13)
#define PR_DL_EXPANSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x14)
#define PR_EXPIRY_TIME PROP_TAG(PT_SYSTIME,0x15)
#define PR_IMPLICIT_CONVERSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x16)
/* Message importance */
#define PR_IMPORTANCE PROP_TAG(PT_I4,0x17)
#define PR_IPM_ID PROP_TAG(PT_BINARY,0x18)
#define PR_LATEST_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x19)
#define PR_MESSAGE_CLASS_W PROP_TAG(PT_UNICODE,0x1A)
#define PR_MESSAGE_CLASS_A PROP_TAG(PT_STRING8,0x1A)
#define PR_MESSAGE_CLASS WINELIB_NAME_AW(PR_MESSAGE_CLASS_)
#define PR_MESSAGE_DELIVERY_ID PROP_TAG(PT_BINARY,0x1B)
#define PR_MESSAGE_SECURITY_LABEL PROP_TAG(PT_BINARY,0x1E)
#define PR_OBSOLETED_IPMS PROP_TAG(PT_BINARY,0x1F)
/* Person a message was originally for */
#define PR_ORIGINALLY_INTENDED_RECIPIENT_NAME PROP_TAG(PT_BINARY,0x20)
#define PR_ORIGINAL_EITS PROP_TAG(PT_BINARY,0x21)
#define PR_ORIGINATOR_CERTIFICATE PROP_TAG(PT_BINARY,0x22)
#define PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED PROP_TAG(PT_BOOLEAN,0x23)
/* Address of the message sender */
#define PR_ORIGINATOR_RETURN_ADDRESS PROP_TAG(PT_BINARY,0x24)
#define PR_PARENT_KEY PROP_TAG(PT_BINARY,0x25)
#define PR_PRIORITY PROP_TAG(PT_I4,0x26)
#define PR_ORIGIN_CHECK PROP_TAG(PT_BINARY,0x27)
#define PR_PROOF_OF_SUBMISSION_REQUESTED PROP_TAG(PT_BOOLEAN,0x28)
/* Whether a read reciept is desired */
#define PR_READ_RECEIPT_REQUESTED PROP_TAG(PT_BOOLEAN,0x29)
/* Time a message was received */
#define PR_RECEIPT_TIME PROP_TAG(PT_SYSTIME,0x2A)
#define PR_RECIPIENT_REASSIGNMENT_PROHIBITED PROP_TAG(PT_BOOLEAN,0x2B)
#define PR_REDIRECTION_HISTORY PROP_TAG(PT_BINARY,0x2C)
#define PR_RELATED_IPMS PROP_TAG(PT_BINARY,0x2D)
/* Sensitivity of the original message */
#define PR_ORIGINAL_SENSITIVITY PROP_TAG(PT_I4,0x2E)
#define PR_LANGUAGES_W PROP_TAG(PT_UNICODE,0x2F)
#define PR_LANGUAGES_A PROP_TAG(PT_STRING8,0x2F)
#define PR_LANGUAGES WINELIB_NAME_AW(PR_LANGUAGES_)
#define PR_REPLY_TIME PROP_TAG(PT_SYSTIME,0x30)
#define PR_REPORT_TAG PROP_TAG(PT_BINARY,0x31)
#define PR_REPORT_TIME PROP_TAG(PT_SYSTIME,0x32)
#define PR_RETURNED_IPM PROP_TAG(PT_BOOLEAN,0x33)
#define PR_SECURITY PROP_TAG(PT_I4,0x34)
#define PR_INCOMPLETE_COPY PROP_TAG(PT_BOOLEAN,0x35)
#define PR_SENSITIVITY PROP_TAG(PT_I4,0x36)
/* The message subject */
#define PR_SUBJECT_W PROP_TAG(PT_UNICODE,0x37)
#define PR_SUBJECT_A PROP_TAG(PT_STRING8,0x37)
#define PR_SUBJECT WINELIB_NAME_AW(PR_SUBJECT_)
#define PR_SUBJECT_IPM PROP_TAG(PT_BINARY,0x38)
#define PR_CLIENT_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x39)
#define PR_REPORT_NAME_W PROP_TAG(PT_UNICODE,0x3A)
#define PR_REPORT_NAME_A PROP_TAG(PT_STRING8,0x3A)
#define PR_REPORT_NAME WINELIB_NAME_AW(PR_REPORT_NAME_)
#define PR_SENT_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x3B)
#define PR_X400_CONTENT_TYPE PROP_TAG(PT_BINARY,0x3C)
#define PR_SUBJECT_PREFIX_W PROP_TAG(PT_UNICODE,0x3D)
#define PR_SUBJECT_PREFIX_A PROP_TAG(PT_STRING8,0x3D)
#define PR_SUBJECT_PREFIX WINELIB_NAME_AW(PR_SUBJECT_PREFIX_)
#define PR_NON_RECEIPT_REASON PROP_TAG(PT_I4,0x3E)
#define PR_RECEIVED_BY_ENTRYID PROP_TAG(PT_BINARY,0x3F)
/* Recieved by: entry */
#define PR_RECEIVED_BY_NAME_W PROP_TAG(PT_UNICODE,0x40)
#define PR_RECEIVED_BY_NAME_A PROP_TAG(PT_STRING8,0x40)
#define PR_RECEIVED_BY_NAME WINELIB_NAME_AW(PR_RECEIVED_BY_NAME_)
#define PR_SENT_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x41)
#define PR_SENT_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x42)
#define PR_SENT_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x42)
#define PR_SENT_REPRESENTING_NAME WINELIB_NAME_AW(PR_SENT_REPRESENTING_NAME_)
#define PR_RCVD_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x43)
#define PR_RCVD_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x44)
#define PR_RCVD_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x44)
#define PR_RCVD_REPRESENTING_NAME WINELIB_NAME_AW(PR_RCVD_REPRESENTING_NAME_)
#define PR_REPORT_ENTRYID PROP_TAG(PT_BINARY,0x45)
#define PR_READ_RECEIPT_ENTRYID PROP_TAG(PT_BINARY,0x46)
#define PR_MESSAGE_SUBMISSION_ID PROP_TAG(PT_BINARY,0x47)
#define PR_PROVIDER_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x48)
/* Subject of the original message */
#define PR_ORIGINAL_SUBJECT_W PROP_TAG(PT_UNICODE,0x49)
#define PR_ORIGINAL_SUBJECT_A PROP_TAG(PT_STRING8,0x49)
#define PR_ORIGINAL_SUBJECT WINELIB_NAME_AW(PR_ORIGINAL_SUBJECT_)
#define PR_DISC_VAL PROP_TAG(PT_BOOLEAN,0x4A)
#define PR_ORIG_MESSAGE_CLASS_W PROP_TAG(PT_UNICODE,0x4B)
#define PR_ORIG_MESSAGE_CLASS_A PROP_TAG(PT_STRING8,0x4B)
#define PR_ORIG_MESSAGE_CLASS WINELIB_NAME_AW(PR_ORIG_MESSAGE_CLASS_)
#define PR_ORIGINAL_AUTHOR_ENTRYID PROP_TAG(PT_BINARY,0x4C)
/* Author of the original message */
#define PR_ORIGINAL_AUTHOR_NAME_W PROP_TAG(PT_UNICODE,0x4D)
#define PR_ORIGINAL_AUTHOR_NAME_A PROP_TAG(PT_STRING8,0x4D)
#define PR_ORIGINAL_AUTHOR_NAME WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_NAME_)
/* Time the original message was submitted */
#define PR_ORIGINAL_SUBMIT_TIME PROP_TAG(PT_SYSTIME,0x4E)
#define PR_REPLY_RECIPIENT_ENTRIES PROP_TAG(PT_BINARY,0x4F)
#define PR_REPLY_RECIPIENT_NAMES_W PROP_TAG(PT_UNICODE,0x50)
#define PR_REPLY_RECIPIENT_NAMES_A PROP_TAG(PT_STRING8,0x50)
#define PR_REPLY_RECIPIENT_NAMES WINELIB_NAME_AW(PR_REPLY_RECIPIENT_NAMES_)
#define PR_RECEIVED_BY_SEARCH_KEY PROP_TAG(PT_BINARY,0x51)
#define PR_RCVD_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x52)
#define PR_READ_RECEIPT_SEARCH_KEY PROP_TAG(PT_BINARY,0x53)
#define PR_REPORT_SEARCH_KEY PROP_TAG(PT_BINARY,0x54)
#define PR_ORIGINAL_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x55)
#define PR_ORIGINAL_AUTHOR_SEARCH_KEY PROP_TAG(PT_BINARY,0x56)
#define PR_MESSAGE_TO_ME PROP_TAG(PT_BOOLEAN,0x57)
#define PR_MESSAGE_CC_ME PROP_TAG(PT_BOOLEAN,0x58)
#define PR_MESSAGE_RECIP_ME PROP_TAG(PT_BOOLEAN,0x59)
/* Sender of the original message */
#define PR_ORIGINAL_SENDER_NAME_W PROP_TAG(PT_UNICODE,0x5A)
#define PR_ORIGINAL_SENDER_NAME_A PROP_TAG(PT_STRING8,0x5A)
#define PR_ORIGINAL_SENDER_NAME WINELIB_NAME_AW(PR_ORIGINAL_SENDER_NAME_)
#define PR_ORIGINAL_SENDER_ENTRYID PROP_TAG(PT_BINARY,0x5B)
#define PR_ORIGINAL_SENDER_SEARCH_KEY PROP_TAG(PT_BINARY,0x5C)
#define PR_ORIGINAL_SENT_REPRESENTING_NAME_W PROP_TAG(PT_UNICODE,0x5D)
#define PR_ORIGINAL_SENT_REPRESENTING_NAME_A PROP_TAG(PT_STRING8,0x5D)
#define PR_ORIGINAL_SENT_REPRESENTING_NAME WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_NAME_)
#define PR_ORIGINAL_SENT_REPRESENTING_ENTRYID PROP_TAG(PT_BINARY,0x5E)
#define PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY PROP_TAG(PT_BINARY,0x5F)
#define PR_START_DATE PROP_TAG(PT_SYSTIME,0x60)
#define PR_END_DATE PROP_TAG(PT_SYSTIME,0x61)
#define PR_OWNER_APPT_ID PROP_TAG(PT_I4,0x62)
/* Whether a response to the message is desired */
#define PR_RESPONSE_REQUESTED PROP_TAG(PT_BOOLEAN,0x63)
#define PR_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x64)
#define PR_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x64)
#define PR_SENT_REPRESENTING_ADDRTYPE WINELIB_NAME_AW(PR_SENT_REPRESENTING_ADDRTYPE_)
#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x65)
#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x65)
#define PR_SENT_REPRESENTING_EMAIL_ADDRESS WINELIB_NAME_AW(PR_SENT_REPRESENTING_EMAIL_ADDRESS_)
#define PR_ORIGINAL_SENDER_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x66)
#define PR_ORIGINAL_SENDER_ADDRTYPE_A PROP_TAG(PT_STRING8,0x66)
#define PR_ORIGINAL_SENDER_ADDRTYPE WINELIB_NAME_AW(PR_ORIGINAL_SENDER_ADDRTYPE_)
/* Email of the original message sender */
#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x67)
#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x67)
#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS WINELIB_NAME_AW(PR_ORIGINAL_SENDER_EMAIL_ADDRESS_)
#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x68)
#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x68)
#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_)
#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x69)
#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x69)
#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS WINELIB_NAME_AW(PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_)
#define PR_CONVERSATION_TOPIC_W PROP_TAG(PT_UNICODE,0x70)
#define PR_CONVERSATION_TOPIC_A PROP_TAG(PT_STRING8,0x70)
#define PR_CONVERSATION_TOPIC WINELIB_NAME_AW(PR_CONVERSATION_TOPIC_)
#define PR_CONVERSATION_INDEX PROP_TAG(PT_BINARY,0x71)
#define PR_ORIGINAL_DISPLAY_BCC_W PROP_TAG(PT_UNICODE,0x72)
#define PR_ORIGINAL_DISPLAY_BCC_A PROP_TAG(PT_STRING8,0x72)
#define PR_ORIGINAL_DISPLAY_BCC WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_BCC_)
#define PR_ORIGINAL_DISPLAY_CC_W PROP_TAG(PT_UNICODE,0x73)
#define PR_ORIGINAL_DISPLAY_CC_A PROP_TAG(PT_STRING8,0x73)
#define PR_ORIGINAL_DISPLAY_CC WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_CC_)
#define PR_ORIGINAL_DISPLAY_TO_W PROP_TAG(PT_UNICODE,0x74)
#define PR_ORIGINAL_DISPLAY_TO_A PROP_TAG(PT_STRING8,0x74)
#define PR_ORIGINAL_DISPLAY_TO WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_TO_)
#define PR_RECEIVED_BY_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x75)
#define PR_RECEIVED_BY_ADDRTYPE_A PROP_TAG(PT_STRING8,0x75)
#define PR_RECEIVED_BY_ADDRTYPE WINELIB_NAME_AW(PR_RECEIVED_BY_ADDRTYPE_)
#define PR_RECEIVED_BY_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x76)
#define PR_RECEIVED_BY_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x76)
#define PR_RECEIVED_BY_EMAIL_ADDRESS WINELIB_NAME_AW(PR_RECEIVED_BY_EMAIL_ADDRESS_)
#define PR_RCVD_REPRESENTING_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x77)
#define PR_RCVD_REPRESENTING_ADDRTYPE_A PROP_TAG(PT_STRING8,0x77)
#define PR_RCVD_REPRESENTING_ADDRTYPE WINELIB_NAME_AW(PR_RCVD_REPRESENTING_ADDRTYPE_)
#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x78)
#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x78)
#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS WINELIB_NAME_AW(PR_RCVD_REPRESENTING_EMAIL_ADDRESS_)
#define PR_ORIGINAL_AUTHOR_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x79)
#define PR_ORIGINAL_AUTHOR_ADDRTYPE_A PROP_TAG(PT_STRING8,0x79)
#define PR_ORIGINAL_AUTHOR_ADDRTYPE WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_ADDRTYPE_)
#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x7A)
#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x7A)
#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS WINELIB_NAME_AW(PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_)
#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x7B)
#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_A PROP_TAG(PT_STRING8,0x7B)
#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE WINELIB_NAME_AW(PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_)
#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x7C)
#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x7C)
#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS WINELIB_NAME_AW(PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_)
#define PR_TRANSPORT_MESSAGE_HEADERS_W PROP_TAG(PT_UNICODE,0x7D)
#define PR_TRANSPORT_MESSAGE_HEADERS_A PROP_TAG(PT_STRING8,0x7D)
#define PR_TRANSPORT_MESSAGE_HEADERS WINELIB_NAME_AW(PR_TRANSPORT_MESSAGE_HEADERS_)
#define PR_DELEGATION PROP_TAG(PT_BINARY,0x7E)
#define PR_TNEF_CORRELATION_KEY PROP_TAG(PT_BINARY,0x7F)
#define PR_BODY_W PROP_TAG(PT_UNICODE,0x1000)
#define PR_BODY_A PROP_TAG(PT_STRING8,0x1000)
#define PR_BODY WINELIB_NAME_AW(PR_BODY_)
#define PR_REPORT_TEXT_W PROP_TAG(PT_UNICODE,0x1001)
#define PR_REPORT_TEXT_A PROP_TAG(PT_STRING8,0x1001)
#define PR_REPORT_TEXT WINELIB_NAME_AW(PR_REPORT_TEXT_)
#define PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY PROP_TAG(PT_BINARY,0x1002)
#define PR_REPORTING_DL_NAME PROP_TAG(PT_BINARY,0x1003)
#define PR_REPORTING_MTA_CERTIFICATE PROP_TAG(PT_BINARY,0x1004)
#define PR_RTF_SYNC_BODY_CRC PROP_TAG(PT_I4,0x1006)
#define PR_RTF_SYNC_BODY_COUNT PROP_TAG(PT_I4,0x1007)
#define PR_RTF_SYNC_BODY_TAG_W PROP_TAG(PT_UNICODE,0x1008)
#define PR_RTF_SYNC_BODY_TAG_A PROP_TAG(PT_STRING8,0x1008)
#define PR_RTF_SYNC_BODY_TAG WINELIB_NAME_AW(PR_RTF_SYNC_BODY_TAG_)
#define PR_RTF_COMPRESSED PROP_TAG(PT_BINARY,0x1009)
#define PR_RTF_SYNC_PREFIX_COUNT PROP_TAG(PT_I4,0x1010)
#define PR_RTF_SYNC_TRAILING_COUNT PROP_TAG(PT_I4,0x1011)
#define PR_ORIGINALLY_INTENDED_RECIP_ENTRYID PROP_TAG(PT_BINARY,0x1012)
#define PR_CONTENT_INTEGRITY_CHECK PROP_TAG(PT_BINARY,0x0C00)
#define PR_EXPLICIT_CONVERSION PROP_TAG(PT_I4,0x0C01)
#define PR_IPM_RETURN_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C02)
#define PR_MESSAGE_TOKEN PROP_TAG(PT_BINARY,0x0C03)
#define PR_NDR_REASON_CODE PROP_TAG(PT_I4,0x0C04)
#define PR_NDR_DIAG_CODE PROP_TAG(PT_I4,0x0C05)
#define PR_NON_RECEIPT_NOTIFICATION_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C06)
#define PR_DELIVERY_POINT PROP_TAG(PT_I4,0x0C07)
#define PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C08)
#define PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT PROP_TAG(PT_BINARY,0x0C09)
#define PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY PROP_TAG(PT_BOOLEAN,0x0C0A)
#define PR_PHYSICAL_DELIVERY_MODE PROP_TAG(PT_I4,0x0C0B)
#define PR_PHYSICAL_DELIVERY_REPORT_REQUEST PROP_TAG(PT_I4,0x0C0C)
#define PR_PHYSICAL_FORWARDING_ADDRESS PROP_TAG(PT_BINARY,0x0C0D)
#define PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C0E)
#define PR_PHYSICAL_FORWARDING_PROHIBITED PROP_TAG(PT_BOOLEAN,0x0C0F)
#define PR_PHYSICAL_RENDITION_ATTRIBUTES PROP_TAG(PT_BINARY,0x0C10)
#define PR_PROOF_OF_DELIVERY PROP_TAG(PT_BINARY,0x0C11)
#define PR_PROOF_OF_DELIVERY_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C12)
#define PR_RECIPIENT_CERTIFICATE PROP_TAG(PT_BINARY,0x0C13)
#define PR_RECIPIENT_NUMBER_FOR_ADVICE_W PROP_TAG(PT_UNICODE,0x0C14)
#define PR_RECIPIENT_NUMBER_FOR_ADVICE_A PROP_TAG(PT_STRING8,0x0C14)
#define PR_RECIPIENT_NUMBER_FOR_ADVICE WINELIB_NAME_AW(PR_RECIPIENT_NUMBER_FOR_ADVICE_)
#define PR_RECIPIENT_TYPE PROP_TAG(PT_I4,0x0C15)
#define PR_REGISTERED_MAIL_TYPE PROP_TAG(PT_I4,0x0C16)
#define PR_REPLY_REQUESTED PROP_TAG(PT_BOOLEAN,0x0C17)
#define PR_REQUESTED_DELIVERY_METHOD PROP_TAG(PT_I4,0x0C18)
#define PR_SENDER_ENTRYID PROP_TAG(PT_BINARY,0x0C19)
#define PR_SENDER_NAME_W PROP_TAG(PT_UNICODE,0x0C1A)
#define PR_SENDER_NAME_A PROP_TAG(PT_STRING8,0x0C1A)
#define PR_SENDER_NAME WINELIB_NAME_AW(PR_SENDER_NAME_)
#define PR_SUPPLEMENTARY_INFO_W PROP_TAG(PT_UNICODE,0x0C1B)
#define PR_SUPPLEMENTARY_INFO_A PROP_TAG(PT_STRING8,0x0C1B)
#define PR_SUPPLEMENTARY_INFO WINELIB_NAME_AW(PR_SUPPLEMENTARY_INFO_)
#define PR_TYPE_OF_MTS_USER PROP_TAG(PT_I4,0x0C1C)
#define PR_SENDER_SEARCH_KEY PROP_TAG(PT_BINARY,0x0C1D)
#define PR_SENDER_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x0C1E)
#define PR_SENDER_ADDRTYPE_A PROP_TAG(PT_STRING8,0x0C1E)
#define PR_SENDER_ADDRTYPE WINELIB_NAME_AW(PR_SENDER_ADDRTYPE_)
#define PR_SENDER_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x0C1F)
#define PR_SENDER_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x0C1F)
#define PR_SENDER_EMAIL_ADDRESS WINELIB_NAME_AW(PR_SENDER_EMAIL_ADDRESS_)
#define PR_CURRENT_VERSION PROP_TAG(PT_I8,0x0E00)
#define PR_DELETE_AFTER_SUBMIT PROP_TAG(PT_BOOLEAN,0x0E01)
#define PR_DISPLAY_BCC_W PROP_TAG(PT_UNICODE,0x0E02)
#define PR_DISPLAY_BCC_A PROP_TAG(PT_STRING8,0x0E02)
#define PR_DISPLAY_BCC WINELIB_NAME_AW(PR_DISPLAY_BCC_)
#define PR_DISPLAY_CC_W PROP_TAG(PT_UNICODE,0x0E03)
#define PR_DISPLAY_CC_A PROP_TAG(PT_STRING8,0x0E03)
#define PR_DISPLAY_CC WINELIB_NAME_AW(PR_DISPLAY_CC_)
#define PR_DISPLAY_TO_W PROP_TAG(PT_UNICODE,0x0E04)
#define PR_DISPLAY_TO_A PROP_TAG(PT_STRING8,0x0E04)
#define PR_DISPLAY_TO WINELIB_NAME_AW(PR_DISPLAY_TO_)
#define PR_PARENT_DISPLAY_W PROP_TAG(PT_UNICODE,0x0E05)
#define PR_PARENT_DISPLAY_A PROP_TAG(PT_STRING8,0x0E05)
#define PR_PARENT_DISPLAY WINELIB_NAME_AW(PR_PARENT_DISPLAY_)
#define PR_MESSAGE_DELIVERY_TIME PROP_TAG(PT_SYSTIME,0x0E06)
#define PR_MESSAGE_FLAGS PROP_TAG(PT_I4,0x0E07)
#define PR_MESSAGE_SIZE PROP_TAG(PT_I4,0x0E08)
#define PR_PARENT_ENTRYID PROP_TAG(PT_BINARY,0x0E09)
#define PR_SENTMAIL_ENTRYID PROP_TAG(PT_BINARY,0x0E0A)
#define PR_CORRELATE PROP_TAG(PT_BOOLEAN,0x0E0C)
#define PR_CORRELATE_MTSID PROP_TAG(PT_BINARY,0x0E0D)
#define PR_DISCRETE_VALUES PROP_TAG(PT_BOOLEAN,0x0E0E)
#define PR_RESPONSIBILITY PROP_TAG(PT_BOOLEAN,0x0E0F)
#define PR_SPOOLER_STATUS PROP_TAG(PT_I4,0x0E10)
#define PR_TRANSPORT_STATUS PROP_TAG(PT_I4,0x0E11)
#define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12)
#define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13)
#define PR_SUBMIT_FLAGS PROP_TAG(PT_I4,0x0E14)
#define PR_RECIPIENT_STATUS PROP_TAG(PT_I4,0x0E15)
#define PR_TRANSPORT_KEY PROP_TAG(PT_I4,0x0E16)
#define PR_MSG_STATUS PROP_TAG(PT_I4,0x0E17)
#define PR_MESSAGE_DOWNLOAD_TIME PROP_TAG(PT_I4,0x0E18)
#define PR_CREATION_VERSION PROP_TAG(PT_I8,0x0E19)
#define PR_MODIFY_VERSION PROP_TAG(PT_I8,0x0E1A)
#define PR_HASATTACH PROP_TAG(PT_BOOLEAN,0x0E1B)
#define PR_BODY_CRC PROP_TAG(PT_I4, 0x0E1C)
#define PR_NORMALIZED_SUBJECT_W PROP_TAG(PT_UNICODE,0x0E1D)
#define PR_NORMALIZED_SUBJECT_A PROP_TAG(PT_STRING8,0x0E1D)
#define PR_NORMALIZED_SUBJECT WINELIB_NAME_AW(PR_NORMALIZED_SUBJECT_)
#define PR_RTF_IN_SYNC PROP_TAG(PT_BOOLEAN,0x0E1F)
#define PR_ATTACH_SIZE PROP_TAG(PT_I4,0x0E20)
#define PR_ATTACH_NUM PROP_TAG(PT_I4,0x0E21)
#define PR_PREPROCESS PROP_TAG(PT_BOOLEAN,0x0E22)
#define PR_ORIGINATING_MTA_CERTIFICATE PROP_TAG(PT_BINARY,0x0E25)
#define PR_PROOF_OF_SUBMISSION PROP_TAG(PT_BINARY,0x0E26)
/* A unique identifier for editing the properties of a MAPI object */
#define PR_ENTRYID PROP_TAG(PT_BINARY,0x0FFF)
/* The type of an object */
#define PR_OBJECT_TYPE PROP_TAG(PT_I4,0x0FFE)
#define PR_ICON PROP_TAG(PT_BINARY,0x0FFD)
#define PR_MINI_ICON PROP_TAG(PT_BINARY,0x0FFC)
#define PR_STORE_ENTRYID PROP_TAG(PT_BINARY,0x0FFB)
#define PR_STORE_RECORD_KEY PROP_TAG(PT_BINARY,0x0FFA)
/* Binary identifer for an individual object */
#define PR_RECORD_KEY PROP_TAG(PT_BINARY,0x0FF9)
#define PR_MAPPING_SIGNATURE PROP_TAG(PT_BINARY,0x0FF8)
#define PR_ACCESS_LEVEL PROP_TAG(PT_I4,0x0FF7)
/* The primary key of a column in a table */
#define PR_INSTANCE_KEY PROP_TAG(PT_BINARY,0x0FF6)
#define PR_ROW_TYPE PROP_TAG(PT_I4,0x0FF5)
#define PR_ACCESS PROP_TAG(PT_I4,0x0FF4)
#define PR_ROWID PROP_TAG(PT_I4,0x3000)
/* The name to display for a given MAPI object */
#define PR_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3001)
#define PR_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3001)
#define PR_DISPLAY_NAME WINELIB_NAME_AW(PR_DISPLAY_NAME_)
#define PR_ADDRTYPE_W PROP_TAG(PT_UNICODE,0x3002)
#define PR_ADDRTYPE_A PROP_TAG(PT_STRING8,0x3002)
#define PR_ADDRTYPE WINELIB_NAME_AW(PR_ADDRTYPE_)
/* An email address */
#define PR_EMAIL_ADDRESS_W PROP_TAG(PT_UNICODE,0x3003)
#define PR_EMAIL_ADDRESS_A PROP_TAG(PT_STRING8,0x3003)
#define PR_EMAIL_ADDRESS WINELIB_NAME_AW(PR_EMAIL_ADDRESS_)
/* A comment field */
#define PR_COMMENT_W PROP_TAG(PT_UNICODE,0x3004)
#define PR_COMMENT_A PROP_TAG(PT_STRING8,0x3004)
#define PR_COMMENT WINELIB_NAME_AW(PR_COMMENT_)
#define PR_DEPTH PROP_TAG(PT_I4,0x3005)
/* Provider-defined display name for a service provider */
#define PR_PROVIDER_DISPLAY_W PROP_TAG(PT_UNICODE,0x3006)
#define PR_PROVIDER_DISPLAY_A PROP_TAG(PT_STRING8,0x3006)
#define PR_PROVIDER_DISPLAY WINELIB_NAME_AW(PR_PROVIDER_DISPLAY_)
/* The time an object was created */
#define PR_CREATION_TIME PROP_TAG(PT_SYSTIME,0x3007)
/* The time an object was last modified */
#define PR_LAST_MODIFICATION_TIME PROP_TAG(PT_SYSTIME,0x3008)
/* Flags describing a service provider, message service, or status object */
#define PR_RESOURCE_FLAGS PROP_TAG(PT_I4,0x3009)
/* The name of a provider dll, minus any "32" suffix and ".dll" */
#define PR_PROVIDER_DLL_NAME_W PROP_TAG(PT_UNICODE,0x300A)
#define PR_PROVIDER_DLL_NAME_A PROP_TAG(PT_STRING8,0x300A)
#define PR_PROVIDER_DLL_NAME WINELIB_NAME_AW(PR_PROVIDER_DLL_NAME_)
#define PR_SEARCH_KEY PROP_TAG(PT_BINARY,0x300B)
#define PR_PROVIDER_UID PROP_TAG(PT_BINARY,0x300C)
#define PR_PROVIDER_ORDINAL PROP_TAG(PT_I4,0x300D)
#define PR_FORM_VERSION_W PROP_TAG(PT_UNICODE,0x3301)
#define PR_FORM_VERSION_A PROP_TAG(PT_STRING8,0x3301)
#define PR_FORM_VERSION WINELIB_NAME_AW(PR_FORM_VERSION_)
#define PR_FORM_CLSID PROP_TAG(PT_CLSID,0x3302)
#define PR_FORM_CONTACT_NAME_W PROP_TAG(PT_UNICODE,0x3303)
#define PR_FORM_CONTACT_NAME_A PROP_TAG(PT_STRING8,0x3303)
#define PR_FORM_CONTACT_NAME WINELIB_NAME_AW(PR_FORM_CONTACT_NAME_)
#define PR_FORM_CATEGORY_W PROP_TAG(PT_UNICODE,0x3304)
#define PR_FORM_CATEGORY_A PROP_TAG(PT_STRING8,0x3304)
#define PR_FORM_CATEGORY WINELIB_NAME_AW(PR_FORM_CATEGORY_)
#define PR_FORM_CATEGORY_SUB_W PROP_TAG(PT_UNICODE,0x3305)
#define PR_FORM_CATEGORY_SUB_A PROP_TAG(PT_STRING8,0x3305)
#define PR_FORM_CATEGORY_SUB WINELIB_NAME_AW(PR_FORM_CATEGORY_SUB_)
#define PR_FORM_HOST_MAP PROP_TAG(PT_MV_LONG,0x3306)
#define PR_FORM_HIDDEN PROP_TAG(PT_BOOLEAN,0x3307)
#define PR_FORM_DESIGNER_NAME_W PROP_TAG(PT_UNICODE,0x3308)
#define PR_FORM_DESIGNER_NAME_A PROP_TAG(PT_STRING8,0x3308)
#define PR_FORM_DESIGNER_NAME WINELIB_NAME_AW(PR_FORM_DESIGNER_NAME_)
#define PR_FORM_DESIGNER_GUID PROP_TAG(PT_CLSID,0x3309)
#define PR_FORM_MESSAGE_BEHAVIOR PROP_TAG(PT_I4,0x330A)
/* Is this row the default message store? */
#define PR_DEFAULT_STORE PROP_TAG(PT_BOOLEAN,0x3400)
#define PR_STORE_SUPPORT_MASK PROP_TAG(PT_I4,0x340D)
#define PR_STORE_STATE PROP_TAG(PT_I4,0x340E)
#define PR_IPM_SUBTREE_SEARCH_KEY PROP_TAG(PT_BINARY,0x3410)
#define PR_IPM_OUTBOX_SEARCH_KEY PROP_TAG(PT_BINARY,0x3411)
#define PR_IPM_WASTEBASKET_SEARCH_KEY PROP_TAG(PT_BINARY,0x3412)
#define PR_IPM_SENTMAIL_SEARCH_KEY PROP_TAG(PT_BINARY,0x3413)
/* Provder-defined message store type */
#define PR_MDB_PROVIDER PROP_TAG(PT_BINARY,0x3414)
#define PR_RECEIVE_FOLDER_SETTINGS PROP_TAG(PT_OBJECT,0x3415)
#define PR_VALID_FOLDER_MASK PROP_TAG(PT_I4,0x35DF)
#define PR_IPM_SUBTREE_ENTRYID PROP_TAG(PT_BINARY,0x35E0)
#define PR_IPM_OUTBOX_ENTRYID PROP_TAG(PT_BINARY,0x35E2)
#define PR_IPM_WASTEBASKET_ENTRYID PROP_TAG(PT_BINARY,0x35E3)
#define PR_IPM_SENTMAIL_ENTRYID PROP_TAG(PT_BINARY,0x35E4)
#define PR_VIEWS_ENTRYID PROP_TAG(PT_BINARY,0x35E5)
#define PR_COMMON_VIEWS_ENTRYID PROP_TAG(PT_BINARY,0x35E6)
#define PR_FINDER_ENTRYID PROP_TAG(PT_BINARY,0x35E7)
#define PR_CONTAINER_FLAGS PROP_TAG(PT_I4,0x3600)
#define PR_FOLDER_TYPE PROP_TAG(PT_I4,0x3601)
#define PR_CONTENT_COUNT PROP_TAG(PT_I4,0x3602)
#define PR_CONTENT_UNREAD PROP_TAG(PT_I4,0x3603)
#define PR_CREATE_TEMPLATES PROP_TAG(PT_OBJECT,0x3604)
#define PR_DETAILS_TABLE PROP_TAG(PT_OBJECT,0x3605)
#define PR_SEARCH PROP_TAG(PT_OBJECT,0x3607)
#define PR_SELECTABLE PROP_TAG(PT_BOOLEAN,0x3609)
#define PR_SUBFOLDERS PROP_TAG(PT_BOOLEAN,0x360A)
#define PR_STATUS PROP_TAG(PT_I4,0x360B)
#define PR_ANR_W PROP_TAG(PT_UNICODE,0x360C)
#define PR_ANR_A PROP_TAG(PT_STRING8,0x360C)
#define PR_ANR WINELIB_NAME_AW(PR_ANR_)
#define PR_CONTENTS_SORT_ORDER PROP_TAG(PT_MV_LONG,0x360D)
#define PR_CONTAINER_HIERARCHY PROP_TAG(PT_OBJECT,0x360E)
#define PR_CONTAINER_CONTENTS PROP_TAG(PT_OBJECT,0x360F)
#define PR_FOLDER_ASSOCIATED_CONTENTS PROP_TAG(PT_OBJECT,0x3610)
#define PR_DEF_CREATE_DL PROP_TAG(PT_BINARY,0x3611)
#define PR_DEF_CREATE_MAILUSER PROP_TAG(PT_BINARY,0x3612)
#define PR_CONTAINER_CLASS_W PROP_TAG(PT_UNICODE,0x3613)
#define PR_CONTAINER_CLASS_A PROP_TAG(PT_STRING8,0x3613)
#define PR_CONTAINER_CLASS WINELIB_NAME_AW(PR_CONTAINER_CLASS_)
#define PR_CONTAINER_MODIFY_VERSION PROP_TAG(PT_I8,0x3614)
#define PR_AB_PROVIDER_ID PROP_TAG(PT_BINARY,0x3615)
#define PR_DEFAULT_VIEW_ENTRYID PROP_TAG(PT_BINARY,0x3616)
#define PR_ASSOC_CONTENT_COUNT PROP_TAG(PT_I4,0x3617)
#define PR_ATTACHMENT_X400_PARAMETERS PROP_TAG(PT_BINARY,0x3700)
#define PR_ATTACH_DATA_OBJ PROP_TAG(PT_OBJECT,0x3701)
#define PR_ATTACH_DATA_BIN PROP_TAG(PT_BINARY,0x3701)
#define PR_ATTACH_ENCODING PROP_TAG(PT_BINARY,0x3702)
#define PR_ATTACH_EXTENSION_W PROP_TAG(PT_UNICODE,0x3703)
#define PR_ATTACH_EXTENSION_A PROP_TAG(PT_STRING8,0x3703)
#define PR_ATTACH_EXTENSION WINELIB_NAME_AW(PR_ATTACH_EXTENSION_)
#define PR_ATTACH_FILENAME_W PROP_TAG(PT_UNICODE,0x3704)
#define PR_ATTACH_FILENAME_A PROP_TAG(PT_STRING8,0x3704)
#define PR_ATTACH_FILENAME WINELIB_NAME_AW(PR_ATTACH_FILENAME_)
#define PR_ATTACH_METHOD PROP_TAG(PT_I4,0x3705)
#define PR_ATTACH_LONG_FILENAME_W PROP_TAG(PT_UNICODE,0x3707)
#define PR_ATTACH_LONG_FILENAME_A PROP_TAG(PT_STRING8,0x3707)
#define PR_ATTACH_LONG_FILENAME WINELIB_NAME_AW(PR_ATTACH_LONG_FILENAME_)
#define PR_ATTACH_PATHNAME_W PROP_TAG(PT_UNICODE,0x3708)
#define PR_ATTACH_PATHNAME_A PROP_TAG(PT_STRING8,0x3708)
#define PR_ATTACH_PATHNAME WINELIB_NAME_AW(PR_ATTACH_PATHNAME_)
#define PR_ATTACH_RENDERING PROP_TAG(PT_BINARY, 0x3709)
#define PR_ATTACH_TAG PROP_TAG(PT_BINARY,0x370A)
#define PR_RENDERING_POSITION PROP_TAG(PT_I4,0x370B)
#define PR_ATTACH_TRANSPORT_NAME_W PROP_TAG(PT_UNICODE,0x370C)
#define PR_ATTACH_TRANSPORT_NAME_A PROP_TAG(PT_STRING8,0x370C)
#define PR_ATTACH_TRANSPORT_NAME WINELIB_NAME_AW(PR_ATTACH_TRANSPORT_NAME_)
#define PR_ATTACH_LONG_PATHNAME_W PROP_TAG(PT_UNICODE,0x370D)
#define PR_ATTACH_LONG_PATHNAME_A PROP_TAG(PT_STRING8,0x370D)
#define PR_ATTACH_LONG_PATHNAME WINELIB_NAME_AW(PR_ATTACH_LONG_PATHNAME_)
#define PR_ATTACH_MIME_TAG_W PROP_TAG(PT_UNICODE,0x370E)
#define PR_ATTACH_MIME_TAG_A PROP_TAG(PT_STRING8,0x370E)
#define PR_ATTACH_MIME_TAG WINELIB_NAME_AW(PR_ATTACH_MIME_TAG_)
#define PR_ATTACH_ADDITIONAL_INFO PROP_TAG(PT_BINARY,0x370F)
#define PR_DISPLAY_TYPE PROP_TAG(PT_I4,0x3900)
#define PR_TEMPLATEID PROP_TAG(PT_BINARY,0x3902)
#define PR_PRIMARY_CAPABILITY PROP_TAG(PT_BINARY,0x3904)
#define PR_7BIT_DISPLAY_NAME PROP_TAG(PT_STRING8,0x39FF)
#define PR_ACCOUNT_W PROP_TAG(PT_UNICODE,0x3A00)
#define PR_ACCOUNT_A PROP_TAG(PT_STRING8,0x3A00)
#define PR_ACCOUNT WINELIB_NAME_AW(PR_ACCOUNT_)
#define PR_ALTERNATE_RECIPIENT PROP_TAG(PT_BINARY,0x3A01)
#define PR_CALLBACK_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A02)
#define PR_CALLBACK_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A02)
#define PR_CALLBACK_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_CALLBACK_TELEPHONE_NUMBER_)
#define PR_CONVERSION_PROHIBITED PROP_TAG(PT_BOOLEAN,0x3A03)
#define PR_DISCLOSE_RECIPIENTS PROP_TAG(PT_BOOLEAN,0x3A04)
#define PR_GENERATION_W PROP_TAG(PT_UNICODE,0x3A05)
#define PR_GENERATION_A PROP_TAG(PT_STRING8,0x3A05)
#define PR_GENERATION WINELIB_NAME_AW(PR_GENERATION_)
#define PR_GIVEN_NAME_W PROP_TAG(PT_UNICODE,0x3A06)
#define PR_GIVEN_NAME_A PROP_TAG(PT_STRING8,0x3A06)
#define PR_GIVEN_NAME WINELIB_NAME_AW(PR_GIVEN_NAME_)
#define PR_GOVERNMENT_ID_NUMBER_W PROP_TAG(PT_UNICODE,0x3A07)
#define PR_GOVERNMENT_ID_NUMBER_A PROP_TAG(PT_STRING8,0x3A07)
#define PR_GOVERNMENT_ID_NUMBER WINELIB_NAME_AW(PR_GOVERNMENT_ID_NUMBER_)
#define PR_BUSINESS_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A08)
#define PR_BUSINESS_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A08)
#define PR_BUSINESS_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_BUSINESS_TELEPHONE_NUMBER_)
#define PR_OFFICE_TELEPHONE_NUMBER_W PR_BUSINESS_TELEPHONE_NUMBER_W
#define PR_OFFICE_TELEPHONE_NUMBER_A PR_BUSINESS_TELEPHONE_NUMBER_A
#define PR_OFFICE_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_OFFICE_TELEPHONE_NUMBER_)
#define PR_HOME_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A09)
#define PR_HOME_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A09)
#define PR_HOME_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_HOME_TELEPHONE_NUMBER_)
#define PR_INITIALS_W PROP_TAG(PT_UNICODE,0x3A0A)
#define PR_INITIALS_A PROP_TAG(PT_STRING8,0x3A0A)
#define PR_INITIALS WINELIB_NAME_AW(PR_INITIALS_)
#define PR_KEYWORD_W PROP_TAG(PT_UNICODE,0x3A0B)
#define PR_KEYWORD_A PROP_TAG(PT_STRING8,0x3A0B)
#define PR_KEYWORD WINELIB_NAME_AW(PR_KEYWORD_)
#define PR_LANGUAGE_W PROP_TAG(PT_UNICODE,0x3A0C)
#define PR_LANGUAGE_A PROP_TAG(PT_STRING8,0x3A0C)
#define PR_LANGUAGE WINELIB_NAME_AW(PR_LANGUAGE_)
#define PR_LOCATION_W PROP_TAG(PT_UNICODE,0x3A0D)
#define PR_LOCATION_A PROP_TAG(PT_STRING8,0x3A0D)
#define PR_LOCATION WINELIB_NAME_AW(PR_LOCATION_)
#define PR_MAIL_PERMISSION PROP_TAG(PT_BOOLEAN,0x3A0E)
#define PR_MHS_COMMON_NAME_W PROP_TAG(PT_UNICODE,0x3A0F)
#define PR_MHS_COMMON_NAME_A PROP_TAG(PT_STRING8,0x3A0F)
#define PR_MHS_COMMON_NAME WINELIB_NAME_AW(PR_MHS_COMMON_NAME_)
#define PR_ORGANIZATIONAL_ID_NUMBER_W PROP_TAG(PT_UNICODE,0x3A10)
#define PR_ORGANIZATIONAL_ID_NUMBER_A PROP_TAG(PT_STRING8,0x3A10)
#define PR_ORGANIZATIONAL_ID_NUMBER WINELIB_NAME_AW(PR_ORGANIZATIONAL_ID_NUMBER_)
#define PR_SURNAME_W PROP_TAG(PT_UNICODE,0x3A11)
#define PR_SURNAME_A PROP_TAG(PT_STRING8,0x3A11)
#define PR_SURNAME WINELIB_NAME_AW(PR_SURNAME_)
#define PR_ORIGINAL_ENTRYID PROP_TAG(PT_BINARY,0x3A12)
#define PR_ORIGINAL_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3A13)
#define PR_ORIGINAL_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3A13)
#define PR_ORIGINAL_DISPLAY_NAME WINELIB_NAME_AW(PR_ORIGINAL_DISPLAY_NAME_)
#define PR_ORIGINAL_SEARCH_KEY PROP_TAG(PT_BINARY,0x3A14)
#define PR_POSTAL_ADDRESS_W PROP_TAG(PT_UNICODE,0x3A15)
#define PR_POSTAL_ADDRESS_A PROP_TAG(PT_STRING8,0x3A15)
#define PR_POSTAL_ADDRESS WINELIB_NAME_AW(PR_POSTAL_ADDRESS_)
#define PR_COMPANY_NAME_W PROP_TAG(PT_UNICODE,0x3A16)
#define PR_COMPANY_NAME_A PROP_TAG(PT_STRING8,0x3A16)
#define PR_COMPANY_NAME WINELIB_NAME_AW(PR_COMPANY_NAME_)
#define PR_TITLE_W PROP_TAG(PT_UNICODE,0x3A17)
#define PR_TITLE_A PROP_TAG(PT_STRING8,0x3A17)
#define PR_TITLE WINELIB_NAME_AW(PR_TITLE_)
#define PR_DEPARTMENT_NAME_W PROP_TAG(PT_UNICODE,0x3A18)
#define PR_DEPARTMENT_NAME_A PROP_TAG(PT_STRING8,0x3A18)
#define PR_DEPARTMENT_NAME WINELIB_NAME_AW(PR_DEPARTMENT_NAME_)
#define PR_OFFICE_LOCATION_W PROP_TAG(PT_UNICODE,0x3A19)
#define PR_OFFICE_LOCATION_A PROP_TAG(PT_STRING8,0x3A19)
#define PR_OFFICE_LOCATION WINELIB_NAME_AW(PR_OFFICE_LOCATION_)
#define PR_PRIMARY_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1A)
#define PR_PRIMARY_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1A)
#define PR_PRIMARY_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_PRIMARY_TELEPHONE_NUMBER_)
#define PR_BUSINESS2_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1B)
#define PR_BUSINESS2_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1B)
#define PR_BUSINESS2_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_BUSINESS2_TELEPHONE_NUMBER_)
#define PR_OFFICE2_TELEPHONE_NUMBER_W PR_BUSINESS2_TELEPHONE_NUMBER_W
#define PR_OFFICE2_TELEPHONE_NUMBER_A PR_BUSINESS2_TELEPHONE_NUMBER_A
#define PR_OFFICE2_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_OFFICE2_TELEPHONE_NUMBER_)
#define PR_MOBILE_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1C)
#define PR_MOBILE_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1C)
#define PR_MOBILE_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_MOBILE_TELEPHONE_NUMBER_)
#define PR_CELLULAR_TELEPHONE_NUMBER_W PR_MOBILE_TELEPHONE_NUMBER_W
#define PR_CELLULAR_TELEPHONE_NUMBER_A PR_MOBILE_TELEPHONE_NUMBER_A
#define PR_CELLULAR_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_CELLULAR_TELEPHONE_NUMBER_)
#define PR_RADIO_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1D)
#define PR_RADIO_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1D)
#define PR_RADIO_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_RADIO_TELEPHONE_NUMBER_)
#define PR_CAR_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1E)
#define PR_CAR_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1E)
#define PR_CAR_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_CAR_TELEPHONE_NUMBER_)
#define PR_OTHER_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A1F)
#define PR_OTHER_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A1F)
#define PR_OTHER_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_OTHER_TELEPHONE_NUMBER_)
#define PR_TRANSMITABLE_DISPLAY_NAME_W PROP_TAG(PT_UNICODE,0x3A20)
#define PR_TRANSMITABLE_DISPLAY_NAME_A PROP_TAG(PT_STRING8,0x3A20)
#define PR_TRANSMITABLE_DISPLAY_NAME WINELIB_NAME_AW(PR_TRANSMITABLE_DISPLAY_NAME_)
#define PR_PAGER_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A21)
#define PR_PAGER_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A21)
#define PR_PAGER_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_PAGER_TELEPHONE_NUMBER_)
#define PR_BEEPER_TELEPHONE_NUMBER_W PR_PAGER_TELEPHONE_NUMBER_W
#define PR_BEEPER_TELEPHONE_NUMBER_A PR_PAGER_TELEPHONE_NUMBER_A
#define PR_BEEPER_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_BEEPER_TELEPHONE_NUMBER_)
#define PR_USER_CERTIFICATE PROP_TAG(PT_BINARY,0x3A22)
#define PR_PRIMARY_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A23)
#define PR_PRIMARY_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A23)
#define PR_PRIMARY_FAX_NUMBER WINELIB_NAME_AW(PR_PRIMARY_FAX_NUMBER_)
#define PR_BUSINESS_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A24)
#define PR_BUSINESS_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A24)
#define PR_BUSINESS_FAX_NUMBER WINELIB_NAME_AW(PR_BUSINESS_FAX_NUMBER_)
#define PR_HOME_FAX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A25)
#define PR_HOME_FAX_NUMBER_A PROP_TAG(PT_STRING8,0x3A25)
#define PR_HOME_FAX_NUMBER WINELIB_NAME_AW(PR_HOME_FAX_NUMBER_)
#define PR_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A26)
#define PR_COUNTRY_A PROP_TAG(PT_STRING8,0x3A26)
#define PR_COUNTRY WINELIB_NAME_AW(PR_COUNTRY_)
#define PR_BUSINESS_ADDRESS_COUNTRY_W PR_COUNTRY_W
#define PR_BUSINESS_ADDRESS_COUNTRY_A PR_COUNTRY_A
#define PR_BUSINESS_ADDRESS_COUNTRY WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_COUNTRY_)
#define PR_LOCALITY_W PROP_TAG(PT_UNICODE,0x3A27)
#define PR_LOCALITY_A PROP_TAG(PT_STRING8,0x3A27)
#define PR_LOCALITY WINELIB_NAME_AW(PR_LOCALITY_)
#define PR_BUSINESS_ADDRESS_CITY_W PR_LOCALITY_W
#define PR_BUSINESS_ADDRESS_CITY_A PR_LOCALITY_A
#define PR_BUSINESS_ADDRESS_CITY WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_CITY_)
#define PR_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A28)
#define PR_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A28)
#define PR_STATE_OR_PROVINCE WINELIB_NAME_AW(PR_STATE_OR_PROVINCE_)
#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W PR_STATE_OR_PROVINCE_W
#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_A PR_STATE_OR_PROVINCE_A
#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_)
#define PR_STREET_ADDRESS_W PROP_TAG(PT_UNICODE,0x3A29)
#define PR_STREET_ADDRESS_A PROP_TAG(PT_STRING8,0x3A29)
#define PR_STREET_ADDRESS WINELIB_NAME_AW(PR_STREET_ADDRESS_)
#define PR_BUSINESS_ADDRESS_STREET_W PR_STREET_ADDRESS_W
#define PR_BUSINESS_ADDRESS_STREET_A PR_STREET_ADDRESS_A
#define PR_BUSINESS_ADDRESS_STREET WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_STREET_)
#define PR_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A2A)
#define PR_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A2A)
#define PR_POSTAL_CODE WINELIB_NAME_AW(PR_POSTAL_CODE_)
#define PR_BUSINESS_ADDRESS_POSTAL_CODE_W PR_POSTAL_CODE_W
#define PR_BUSINESS_ADDRESS_POSTAL_CODE_A PR_POSTAL_CODE_A
#define PR_BUSINESS_ADDRESS_POSTAL_CODE WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_POSTAL_CODE_)
#define PR_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A2B)
#define PR_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A2B)
#define PR_POST_OFFICE_BOX WINELIB_NAME_AW(PR_POST_OFFICE_BOX_)
#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_W PR_POST_OFFICE_BOX_W
#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_A PR_POST_OFFICE_BOX_A
#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX WINELIB_NAME_AW(PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_)
#define PR_TELEX_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2C)
#define PR_TELEX_NUMBER_A PROP_TAG(PT_STRING8,0x3A2C)
#define PR_TELEX_NUMBER WINELIB_NAME_AW(PR_TELEX_NUMBER_)
#define PR_ISDN_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2D)
#define PR_ISDN_NUMBER_A PROP_TAG(PT_STRING8,0x3A2D)
#define PR_ISDN_NUMBER WINELIB_NAME_AW(PR_ISDN_NUMBER_)
#define PR_ASSISTANT_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2E)
#define PR_ASSISTANT_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A2E)
#define PR_ASSISTANT_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_ASSISTANT_TELEPHONE_NUMBER_)
#define PR_HOME2_TELEPHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A2F)
#define PR_HOME2_TELEPHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A2F)
#define PR_HOME2_TELEPHONE_NUMBER WINELIB_NAME_AW(PR_HOME2_TELEPHONE_NUMBER_)
#define PR_ASSISTANT_W PROP_TAG(PT_UNICODE,0x3A30)
#define PR_ASSISTANT_A PROP_TAG(PT_STRING8,0x3A30)
#define PR_ASSISTANT WINELIB_NAME_AW(PR_ASSISTANT_)
#define PR_SEND_RICH_INFO PROP_TAG(PT_BOOLEAN,0x3A40)
#define PR_WEDDING_ANNIVERSARY PROP_TAG(PT_SYSTIME,0x3A41)
#define PR_BIRTHDAY PROP_TAG(PT_SYSTIME,0x3A42)
#define PR_HOBBIES_W PROP_TAG(PT_UNICODE,0x3A43)
#define PR_HOBBIES_A PROP_TAG(PT_STRING8,0x3A43)
#define PR_HOBBIES WINELIB_NAME_AW(PR_HOBBIES_)
#define PR_MIDDLE_NAME_W PROP_TAG(PT_UNICODE,0x3A44)
#define PR_MIDDLE_NAME_A PROP_TAG(PT_STRING8,0x3A44)
#define PR_MIDDLE_NAME WINELIB_NAME_AW(PR_MIDDLE_NAME_)
#define PR_DISPLAY_NAME_PREFIX_W PROP_TAG(PT_UNICODE,0x3A45)
#define PR_DISPLAY_NAME_PREFIX_A PROP_TAG(PT_STRING8,0x3A45)
#define PR_DISPLAY_NAME_PREFIX WINELIB_NAME_AW(PR_DISPLAY_NAME_PREFIX_)
#define PR_PROFESSION_W PROP_TAG(PT_UNICODE,0x3A46)
#define PR_PROFESSION_A PROP_TAG(PT_STRING8,0x3A46)
#define PR_PROFESSION WINELIB_NAME_AW(PR_PROFESSION_)
#define PR_PREFERRED_BY_NAME_W PROP_TAG(PT_UNICODE,0x3A47)
#define PR_PREFERRED_BY_NAME_A PROP_TAG(PT_STRING8,0x3A47)
#define PR_PREFERRED_BY_NAME WINELIB_NAME_AW(PR_PREFERRED_BY_NAME_)
#define PR_SPOUSE_NAME_W PROP_TAG(PT_UNICODE,0x3A48)
#define PR_SPOUSE_NAME_A PROP_TAG(PT_STRING8,0x3A48)
#define PR_SPOUSE_NAME WINELIB_NAME_AW(PR_SPOUSE_NAME_)
#define PR_COMPUTER_NETWORK_NAME_W PROP_TAG(PT_UNICODE,0x3A49)
#define PR_COMPUTER_NETWORK_NAME_A PROP_TAG(PT_STRING8,0x3A49)
#define PR_COMPUTER_NETWORK_NAME WINELIB_NAME_AW(PR_COMPUTER_NETWORK_NAME_)
#define PR_CUSTOMER_ID_W PROP_TAG(PT_UNICODE,0x3A4A)
#define PR_CUSTOMER_ID_A PROP_TAG(PT_STRING8,0x3A4A)
#define PR_CUSTOMER_ID WINELIB_NAME_AW(PR_CUSTOMER_ID_)
#define PR_TTYTDD_PHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A4B)
#define PR_TTYTDD_PHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A4B)
#define PR_TTYTDD_PHONE_NUMBER WINELIB_NAME_AW(PR_TTYTDD_PHONE_NUMBER_)
#define PR_FTP_SITE_W PROP_TAG(PT_UNICODE,0x3A4C)
#define PR_FTP_SITE_A PROP_TAG(PT_STRING8,0x3A4C)
#define PR_FTP_SITE WINELIB_NAME_AW(PR_FTP_SITE_)
#define PR_GENDER PROP_TAG(PT_I2,0x3A4D)
#define PR_MANAGER_NAME_W PROP_TAG(PT_UNICODE,0x3A4E)
#define PR_MANAGER_NAME_A PROP_TAG(PT_STRING8,0x3A4E)
#define PR_MANAGER_NAME WINELIB_NAME_AW(PR_MANAGER_NAME_)
#define PR_NICKNAME_W PROP_TAG(PT_UNICODE,0x3A4F)
#define PR_NICKNAME_A PROP_TAG(PT_STRING8,0x3A4F)
#define PR_NICKNAME WINELIB_NAME_AW(PR_NICKNAME_)
#define PR_PERSONAL_HOME_PAGE_W PROP_TAG(PT_UNICODE,0x3A50)
#define PR_PERSONAL_HOME_PAGE_A PROP_TAG(PT_STRING8,0x3A50)
#define PR_PERSONAL_HOME_PAGE WINELIB_NAME_AW(PR_PERSONAL_HOME_PAGE_)
#define PR_BUSINESS_HOME_PAGE_W PROP_TAG(PT_UNICODE,0x3A51)
#define PR_BUSINESS_HOME_PAGE_A PROP_TAG(PT_STRING8,0x3A51)
#define PR_BUSINESS_HOME_PAGE WINELIB_NAME_AW(PR_BUSINESS_HOME_PAGE_)
#define PR_CONTACT_VERSION PROP_TAG(PT_CLSID,0x3A52)
#define PR_CONTACT_ENTRYIDS PROP_TAG(PT_MV_BINARY,0x3A53)
#define PR_CONTACT_ADDRTYPES_W PROP_TAG(PT_MV_UNICODE,0x3A54)
#define PR_CONTACT_ADDRTYPES_A PROP_TAG(PT_MV_STRING8,0x3A54)
#define PR_CONTACT_ADDRTYPES WINELIB_NAME_AW(PR_CONTACT_ADDRTYPES_)
#define PR_CONTACT_DEFAULT_ADDRESS_INDEX PROP_TAG(PT_I4,0x3A55)
#define PR_CONTACT_EMAIL_ADDRESSES_W PROP_TAG(PT_MV_UNICODE,0x3A56)
#define PR_CONTACT_EMAIL_ADDRESSES_A PROP_TAG(PT_MV_STRING8,0x3A56)
#define PR_CONTACT_EMAIL_ADDRESSES WINELIB_NAME_AW(PR_CONTACT_EMAIL_ADDRESSES_)
#define PR_COMPANY_MAIN_PHONE_NUMBER_W PROP_TAG(PT_UNICODE,0x3A57)
#define PR_COMPANY_MAIN_PHONE_NUMBER_A PROP_TAG(PT_STRING8,0x3A57)
#define PR_COMPANY_MAIN_PHONE_NUMBER WINELIB_NAME_AW(PR_COMPANY_MAIN_PHONE_NUMBER_)
#define PR_CHILDRENS_NAMES_W PROP_TAG(PT_MV_UNICODE,0x3A58)
#define PR_CHILDRENS_NAMES_A PROP_TAG(PT_MV_STRING8,0x3A58)
#define PR_CHILDRENS_NAMES WINELIB_NAME_AW(PR_CHILDRENS_NAMES_)
#define PR_HOME_ADDRESS_CITY_W PROP_TAG(PT_UNICODE,0x3A59)
#define PR_HOME_ADDRESS_CITY_A PROP_TAG(PT_STRING8,0x3A59)
#define PR_HOME_ADDRESS_CITY WINELIB_NAME_AW(PR_HOME_ADDRESS_CITY_)
#define PR_HOME_ADDRESS_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A5A)
#define PR_HOME_ADDRESS_COUNTRY_A PROP_TAG(PT_STRING8,0x3A5A)
#define PR_HOME_ADDRESS_COUNTRY WINELIB_NAME_AW(PR_HOME_ADDRESS_COUNTRY_)
#define PR_HOME_ADDRESS_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A5B)
#define PR_HOME_ADDRESS_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A5B)
#define PR_HOME_ADDRESS_POSTAL_CODE WINELIB_NAME_AW(PR_HOME_ADDRESS_POSTAL_CODE_)
#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A5C)
#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A5C)
#define PR_HOME_ADDRESS_STATE_OR_PROVINCE WINELIB_NAME_AW(PR_HOME_ADDRESS_STATE_OR_PROVINCE_)
#define PR_HOME_ADDRESS_STREET_W PROP_TAG(PT_UNICODE,0x3A5D)
#define PR_HOME_ADDRESS_STREET_A PROP_TAG(PT_STRING8,0x3A5D)
#define PR_HOME_ADDRESS_STREET WINELIB_NAME_AW(PR_HOME_ADDRESS_STREET_)
#define PR_HOME_ADDRESS_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A5E)
#define PR_HOME_ADDRESS_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A5E)
#define PR_HOME_ADDRESS_POST_OFFICE_BOX WINELIB_NAME_AW(PR_HOME_ADDRESS_POST_OFFICE_BOX_)
#define PR_OTHER_ADDRESS_CITY_W PROP_TAG(PT_UNICODE,0x3A5F)
#define PR_OTHER_ADDRESS_CITY_A PROP_TAG(PT_STRING8,0x3A5F)
#define PR_OTHER_ADDRESS_CITY WINELIB_NAME_AW(PR_OTHER_ADDRESS_CITY_)
#define PR_OTHER_ADDRESS_COUNTRY_W PROP_TAG(PT_UNICODE,0x3A60)
#define PR_OTHER_ADDRESS_COUNTRY_A PROP_TAG(PT_STRING8,0x3A60)
#define PR_OTHER_ADDRESS_COUNTRY WINELIB_NAME_AW(PR_OTHER_ADDRESS_COUNTRY_)
#define PR_OTHER_ADDRESS_POSTAL_CODE_W PROP_TAG(PT_UNICODE,0x3A61)
#define PR_OTHER_ADDRESS_POSTAL_CODE_A PROP_TAG(PT_STRING8,0x3A61)
#define PR_OTHER_ADDRESS_POSTAL_CODE WINELIB_NAME_AW(PR_OTHER_ADDRESS_POSTAL_CODE_)
#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG(PT_UNICODE,0x3A62)
#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG(PT_STRING8,0x3A62)
#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE WINELIB_NAME_AW(PR_OTHER_ADDRESS_STATE_OR_PROVINCE_)
#define PR_OTHER_ADDRESS_STREET_W PROP_TAG(PT_UNICODE,0x3A63)
#define PR_OTHER_ADDRESS_STREET_A PROP_TAG(PT_STRING8,0x3A63)
#define PR_OTHER_ADDRESS_STREET WINELIB_NAME_AW(PR_OTHER_ADDRESS_STREET_)
#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_W PROP_TAG(PT_UNICODE,0x3A64)
#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_A PROP_TAG(PT_STRING8,0x3A64)
#define PR_OTHER_ADDRESS_POST_OFFICE_BOX WINELIB_NAME_AW(PR_OTHER_ADDRESS_POST_OFFICE_BOX_)
#define PR_STORE_PROVIDERS PROP_TAG(PT_BINARY,0x3D00)
#define PR_AB_PROVIDERS PROP_TAG(PT_BINARY,0x3D01)
#define PR_TRANSPORT_PROVIDERS PROP_TAG(PT_BINARY,0x3D02)
#define PR_DEFAULT_PROFILE PROP_TAG(PT_BOOLEAN,0x3D04)
#define PR_AB_SEARCH_PATH PROP_TAG(PT_MV_BINARY,0x3D05)
#define PR_AB_DEFAULT_DIR PROP_TAG(PT_BINARY,0x3D06)
#define PR_AB_DEFAULT_PAB PROP_TAG(PT_BINARY,0x3D07)
#define PR_FILTERING_HOOKS PROP_TAG(PT_BINARY, 0x3D08)
#define PR_SERVICE_NAME_W PROP_TAG(PT_UNICODE,0x3D09)
#define PR_SERVICE_NAME_A PROP_TAG(PT_STRING8,0x3D09)
#define PR_SERVICE_NAME WINELIB_NAME_AW(PR_SERVICE_NAME_)
#define PR_SERVICE_DLL_NAME_W PROP_TAG(PT_UNICODE,0x3D0A)
#define PR_SERVICE_DLL_NAME_A PROP_TAG(PT_STRING8,0x3D0A)
#define PR_SERVICE_DLL_NAME WINELIB_NAME_AW(PR_SERVICE_DLL_NAME_)
#define PR_SERVICE_ENTRY_NAME PROP_TAG(PT_STRING8,0x3D0B)
#define PR_SERVICE_UID PROP_TAG(PT_BINARY,0x3D0C)
#define PR_SERVICE_EXTRA_UIDS PROP_TAG(PT_BINARY,0x3D0D)
#define PR_SERVICES PROP_TAG(PT_BINARY,0x3D0E)
#define PR_SERVICE_SUPPORT_FILES_W PROP_TAG(PT_MV_UNICODE,0x3D0F)
#define PR_SERVICE_SUPPORT_FILES_A PROP_TAG(PT_MV_STRING8,0x3D0F)
#define PR_SERVICE_SUPPORT_FILES WINELIB_NAME_AW(PR_SERVICE_SUPPORT_FILES_)
#define PR_SERVICE_DELETE_FILES_W PROP_TAG(PT_MV_UNICODE,0x3D10)
#define PR_SERVICE_DELETE_FILES_A PROP_TAG(PT_MV_STRING8,0x3D10)
#define PR_SERVICE_DELETE_FILES WINELIB_NAME_AW(PR_SERVICE_DELETE_FILES_)
#define PR_AB_SEARCH_PATH_UPDATE PROP_TAG(PT_BINARY,0x3D11)
#define PR_PROFILE_NAME_A PROP_TAG(PT_STRING8,0x3D12)
#define PR_PROFILE_NAME_W PROP_TAG(PT_UNICODE,0x3D12)
#define PR_PROFILE_NAME WINELIB_NAME_AW(PR_PROFILE_NAME_)
#define PR_IDENTITY_DISPLAY_W PROP_TAG(PT_UNICODE,0x3E00)
#define PR_IDENTITY_DISPLAY_A PROP_TAG(PT_STRING8,0x3E00)
#define PR_IDENTITY_DISPLAY WINELIB_NAME_AW(PR_IDENTITY_DISPLAY_)
#define PR_IDENTITY_ENTRYID PROP_TAG(PT_BINARY,0x3E01)
#define PR_RESOURCE_METHODS PROP_TAG(PT_I4,0x3E02)
/* Service provider type */
#define PR_RESOURCE_TYPE PROP_TAG(PT_I4,0x3E03)
#define PR_STATUS_CODE PROP_TAG(PT_I4,0x3E04)
#define PR_IDENTITY_SEARCH_KEY PROP_TAG(PT_BINARY,0x3E05)
#define PR_OWN_STORE_ENTRYID PROP_TAG(PT_BINARY,0x3E06)
#define PR_RESOURCE_PATH_W PROP_TAG(PT_UNICODE,0x3E07)
#define PR_RESOURCE_PATH_A PROP_TAG(PT_STRING8,0x3E07)
#define PR_RESOURCE_PATH WINELIB_NAME_AW(PR_RESOURCE_PATH_)
#define PR_STATUS_STRING_W PROP_TAG(PT_UNICODE,0x3E08)
#define PR_STATUS_STRING_A PROP_TAG(PT_STRING8,0x3E08)
#define PR_STATUS_STRING WINELIB_NAME_AW(PR_STATUS_STRING_)
#define PR_X400_DEFERRED_DELIVERY_CANCEL PROP_TAG(PT_BOOLEAN,0x3E09)
#define PR_HEADER_FOLDER_ENTRYID PROP_TAG(PT_BINARY,0x3E0A)
#define PR_REMOTE_PROGRESS PROP_TAG(PT_I4,0x3E0B)
#define PR_REMOTE_PROGRESS_TEXT_W PROP_TAG(PT_UNICODE,0x3E0C)
#define PR_REMOTE_PROGRESS_TEXT_A PROP_TAG(PT_STRING8,0x3E0C)
#define PR_REMOTE_PROGRESS_TEXT WINELIB_NAME_AW(PR_REMOTE_PROGRESS_TEXT_)
#define PR_REMOTE_VALIDATE_OK PROP_TAG(PT_BOOLEAN,0x3E0D)
#define PR_CONTROL_FLAGS PROP_TAG(PT_I4,0x3F00)
#define PR_CONTROL_STRUCTURE PROP_TAG(PT_BINARY,0x3F01)
#define PR_CONTROL_TYPE PROP_TAG(PT_I4,0x3F02)
#define PR_DELTAX PROP_TAG(PT_I4,0x3F03)
#define PR_DELTAY PROP_TAG(PT_I4,0x3F04)
#define PR_XPOS PROP_TAG(PT_I4,0x3F05)
#define PR_YPOS PROP_TAG(PT_I4,0x3F06)
#define PR_CONTROL_ID PROP_TAG(PT_BINARY,0x3F07)
#define PR_INITIAL_DETAILS_PANE PROP_TAG(PT_I4,0x3F08)
#define PROP_ID_SECURE_MIN 0x67F0
#define PROP_ID_SECURE_MAX 0x67FF
#endif /* MAPITAGS_H */

216
include/mapiutil.h Normal file
View File

@ -0,0 +1,216 @@
/*
* Copyright 2004 Jon Griffiths
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef MAPIUTIL_H_
#define MAPIUTIL_H_
#include <mapix.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TAD_ALL_ROWS 1 /* Delete all rows */
LPMALLOC WINAPI MAPIGetDefaultMalloc(void);
#define SOF_UNIQUEFILENAME 0x80000000U /* Create a unique (temporary) filename */
#if defined (UNICODE) || defined (__WINESRC__)
typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
ULONG,LPWSTR,LPWSTR,LPSTREAM*);
HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
ULONG,LPWSTR,LPWSTR,LPSTREAM*);
#else
typedef HRESULT (WINAPI * LPOPENSTREAMONFILE)(LPALLOCATEBUFFER,LPFREEBUFFER,
ULONG,LPSTR,LPSTR,LPSTREAM*);
HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER,LPFREEBUFFER,
ULONG,LPSTR,LPSTR,LPSTREAM*);
#endif
#define OPENSTREAMONFILE "OpenStreamOnFile"
BOOL WINAPI FEqualNames(LPMAPINAMEID,LPMAPINAMEID);
typedef struct IPropData IPropData;
typedef IPropData *LPPROPDATA;
#define IPROP_READONLY 0x00001U
#define IPROP_READWRITE 0x00002U
#define IPROP_CLEAN 0x10000U
#define IPROP_DIRTY 0x20000U
SCODE WINAPI CreateIProp(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
LPVOID,LPPROPDATA*);
SCODE WINAPI PropCopyMore(LPSPropValue,LPSPropValue,ALLOCATEMORE*,LPVOID);
ULONG WINAPI UlPropSize(LPSPropValue);
VOID WINAPI GetInstance(LPSPropValue,LPSPropValue,ULONG);
BOOL WINAPI FPropContainsProp(LPSPropValue,LPSPropValue,ULONG);
BOOL WINAPI FPropCompareProp(LPSPropValue,ULONG,LPSPropValue);
LONG WINAPI LPropCompareProp(LPSPropValue,LPSPropValue);
HRESULT WINAPI HrAddColumns(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,LPFREEBUFFER);
HRESULT WINAPI HrAddColumnsEx(LPMAPITABLE,LPSPropTagArray,LPALLOCATEBUFFER,
LPFREEBUFFER,void (*)(LPSPropTagArray));
HRESULT WINAPI HrAllocAdviseSink(LPNOTIFCALLBACK,LPVOID,LPMAPIADVISESINK*);
HRESULT WINAPI HrThisThreadAdviseSink(LPMAPIADVISESINK,LPMAPIADVISESINK*);
HRESULT WINAPI HrDispatchNotifications (ULONG);
ULONG WINAPI UlAddRef(void*);
ULONG WINAPI UlRelease(void*);
HRESULT WINAPI HrGetOneProp(LPMAPIPROP,ULONG,LPSPropValue*);
HRESULT WINAPI HrSetOneProp(LPMAPIPROP,LPSPropValue);
BOOL WINAPI FPropExists(LPMAPIPROP,ULONG);
void WINAPI FreePadrlist(LPADRLIST);
void WINAPI FreeProws(LPSRowSet);
HRESULT WINAPI HrQueryAllRows(LPMAPITABLE,LPSPropTagArray,LPSRestriction,
LPSSortOrderSet,LONG,LPSRowSet*);
LPSPropValue WINAPI PpropFindProp(LPSPropValue,ULONG,ULONG);
#if defined (UNICODE) || defined (__WINESRC__)
BOOL WINAPI FBinFromHex(LPWSTR,LPBYTE);
SCODE WINAPI ScBinFromHexBounded(LPWSTR,LPBYTE,ULONG);
void WINAPI HexFromBin(LPBYTE,int,LPWSTR);
ULONG WINAPI UlFromSzHex(LPCWSTR);
LPWSTR WINAPI SzFindCh(LPCWSTR,USHORT);
LPWSTR WINAPI SzFindLastCh(LPCWSTR,USHORT);
LPWSTR WINAPI SzFindSz(LPCWSTR,LPCWSTR);
UINT WINAPI UFromSz(LPCSTR);
#else
BOOL WINAPI FBinFromHex(LPSTR,LPBYTE);
SCODE WINAPI ScBinFromHexBounded(LPSTR,LPBYTE,ULONG);
void WINAPI HexFromBin(LPBYTE,int,LPSTR);
ULONG WINAPI UlFromSzHex(LPCSTR);
LPSTR WINAPI SzFindCh(LPCSTR,USHORT);
LPSTR WINAPI SzFindLastCh(LPCSTR,USHORT);
LPSTR WINAPI SzFindSz(LPCSTR,LPCSTR);
UINT WINAPI UFromSz(LPCSTR);
#endif
SCODE WINAPI ScInitMapiUtil(ULONG);
void WINAPI DeinitMapiUtil(void);
#define szHrDispatchNotifications "_HrDispatchNotifications@4"
#define szScCreateConversationIndex "_ScCreateConversationIndex@16"
typedef HRESULT (WINAPI DISPATCHNOTIFICATIONS)(ULONG);
typedef DISPATCHNOTIFICATIONS *LPDISPATCHNOTIFICATIONS;
typedef SCODE (WINAPI CREATECONVERSATIONINDEX)(ULONG,LPBYTE,ULONG*,LPBYTE*);
typedef CREATECONVERSATIONINDEX *LPCREATECONVERSATIONINDEX;
typedef struct ITableData ITableData;
typedef ITableData *LPTABLEDATA;
typedef void (WINAPI CALLERRELEASE)(ULONG,LPTABLEDATA,LPMAPITABLE);
/*****************************************************************************
* ITableData interface
*
* The underlying table data structure for IMAPITable.
*/
#define INTERFACE ITableData
#define ITableData_METHODS \
IUnknown_METHODS \
STDMETHOD(HrGetView)(THIS_ LPSSortOrderSet lpSort, CALLERRELEASE *lpRel, \
ULONG ulData, LPMAPITABLE *lppTable) PURE; \
STDMETHOD(HrModifyRow)(THIS_ LPSRow lpRow) PURE; \
STDMETHOD(HrDeleteRow)(THIS_ LPSPropValue lpKey) PURE; \
STDMETHOD(HrQueryRow)(THIS_ LPSPropValue lpKey, LPSRow *lppRow, ULONG *lpRowNum) PURE; \
STDMETHOD(HrEnumRow)(THIS_ ULONG ulRowNum, LPSRow *lppRow) PURE; \
STDMETHOD(HrNotify)(THIS_ ULONG ulFlags, ULONG cValues, LPSPropValue lpValues) PURE; \
STDMETHOD(HrInsertRow)(THIS_ ULONG ulRow, LPSRow lpRow) PURE; \
STDMETHOD(HrModifyRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows) PURE; \
STDMETHOD(HrDeleteRows)(THIS_ ULONG ulFlags, LPSRowSet lpRows, ULONG *lpCount) PURE;
ICOM_DEFINE(ITableData,IUnknown)
#undef INTERFACE
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ITableData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define ITableData_AddRef(p) (p)->lpVtbl->AddRef(p)
#define ITableData_Release(p) (p)->lpVtbl->Release(p)
/*** ITableData methods ***/
#define ITableData_HrGetView(p,a,b,c,d) (p)->lpVtbl->HrGetView(p,a,b,c,d)
#define ITableData_HrModifyRow(p,a) (p)->lpVtbl->HrModifyRow(p,a)
#define ITableData_HrDeleteRow(p,a) (p)->lpVtbl->HrDeleteRow(p,a)
#define ITableData_HrQueryRow(p,a,b,c) (p)->lpVtbl->HrQueryRow(p,a,b,c)
#define ITableData_HrEnumRow(p,a,b) (p)->lpVtbl->HrEnumRow(p,a,b)
#define ITableData_HrNotify(p,a,b,c) (p)->lpVtbl->HrNotify(p,a,b,c)
#define ITableData_HrInsertRow(p,a,b) (p)->lpVtbl->HrInsertRow(p,a,b)
#define ITableData_HrModifyRows(p,a,b) (p)->lpVtbl->HrModifyRows(p,a,b)
#define ITableData_HrDeleteRows(p,a,b,c) (p)->lpVtbl->HrDeleteRows(p,a,b,c)
#endif
SCODE WINAPI CreateTable(LPCIID,ALLOCATEBUFFER*,ALLOCATEMORE*,FREEBUFFER*,
LPVOID,ULONG,ULONG,LPSPropTagArray,LPTABLEDATA*);
SCODE WINAPI ScCountNotifications(int,LPNOTIFICATION,ULONG*);
SCODE WINAPI ScCountProps(int,LPSPropValue,ULONG*);
SCODE WINAPI ScCopyNotifications(int,LPNOTIFICATION,LPVOID,ULONG*);
SCODE WINAPI ScCopyProps(int,LPSPropValue,LPVOID,ULONG*);
SCODE WINAPI ScDupPropset(int,LPSPropValue,LPALLOCATEBUFFER,LPSPropValue*);
SCODE WINAPI ScRelocNotifications(int,LPNOTIFICATION,LPVOID,LPVOID,ULONG*);
SCODE WINAPI ScRelocProps(int,LPSPropValue,LPVOID,LPVOID,ULONG*);
LPSPropValue WINAPI LpValFindProp(ULONG,ULONG,LPSPropValue);
static inline FILETIME FtAddFt(FILETIME ftLeft, FILETIME ftRight)
{
LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
union { FILETIME ft; LONG64 ll; } ftmap;
ftmap.ll = *pl + *pr;
return ftmap.ft;
}
static inline FILETIME FtSubFt(FILETIME ftLeft, FILETIME ftRight)
{
LONG64 *pl = (LONG64*)&ftLeft, *pr = (LONG64*)&ftRight;
union { FILETIME ft; LONG64 ll; } ftmap;
ftmap.ll = *pl - *pr;
return ftmap.ft;
}
static inline FILETIME FtNegFt(FILETIME ftLeft)
{
LONG64 *p = (LONG64*)&ftLeft;
union { FILETIME ft; LONG64 ll; } ftmap;
ftmap.ll = -*p;
return ftmap.ft;
}
static inline FILETIME FtMulDw(DWORD dwLeft, FILETIME ftRight)
{
LONG64 l = (LONG64)dwLeft, *pr = (LONG64*)&ftRight;
union { FILETIME ft; LONG64 ll; } ftmap;
ftmap.ll = l * (*pr);
return ftmap.ft;
}
static inline FILETIME FtMulDwDw(DWORD dwLeft, DWORD dwRight)
{
LONG64 l = (LONG64)dwLeft, r = (LONG64)dwRight;
union { FILETIME ft; LONG64 ll; } ftmap;
ftmap.ll = l * r;
return ftmap.ft;
}
#ifdef __cplusplus
}
#endif
#endif /* MAPIUTIL_H_ */

119
include/mapival.h Normal file
View File

@ -0,0 +1,119 @@
/*
* Copyright 2004 Jon Griffiths
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef MAPIVAL_H
#define MAPIVAL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <mapiutil.h>
BOOL WINAPI FBadRglpszW(LPWSTR*,ULONG);
BOOL WINAPI FBadRowSet(LPSRowSet);
BOOL WINAPI FBadRglpNameID(LPMAPINAMEID*,ULONG);
BOOL WINAPI FBadEntryList(LPENTRYLIST);
ULONG WINAPI FBadRestriction(LPSRestriction);
ULONG WINAPI FBadPropTag(ULONG);
ULONG WINAPI FBadRow(LPSRow);
ULONG WINAPI FBadProp(LPSPropValue);
ULONG WINAPI FBadSortOrderSet(LPSSortOrderSet);
ULONG WINAPI FBadColumnSet(LPSPropTagArray);
#define FBadRgPropVal(p,n) FAILED(ScCountProps((n),(p),NULL))
#define FBadPropVal(p) FBadRgPropVal(1,(p))
#define FBadAdrList(p) FBadRowSet((LPSRowSet)(p))
#define BAD_STANDARD_OBJ(a,b,c,d) FALSE
#define FBadUnknown(a) FALSE
#define FBadQueryInterface(a,b,c) FALSE
#define FBadAddRef(a) FALSE
#define FBadRelease(a) FALSE
#define FBadGetLastError(a,b,c,d) FALSE
#define FBadSaveChanges(a,b) FALSE
#define FBadGetProps(a,b,c,d) FALSE
#define FBadGetPropList(a,b) FALSE
#define FBadOpenProperty(a,b,c,d,e,f) FALSE
#define FBadSetProps(a,b,c,d) FALSE
#define FBadDeleteProps(a,b,c) FALSE
#define FBadCopyTo(a,b,c,d,e,f,g,h,i,j) FALSE
#define FBadCopyProps(a,b,c,d,e,f,g,h) FALSE
#define FBadGetNamesFromIDs(a,b,c,d,e,f) FALSE
#define FBadGetIDsFromNames(a,b,c,d,e) FALSE
#define ValidateParms(x) do { } while(0)
#define UlValidateParms(x) do { } while(0)
#define CheckParms(x) do { } while(0)
#define ValidateParameters1(a,b) do { } while(0)
#define ValidateParameters2(a,b,c) do { } while(0)
#define ValidateParameters3(a,b,c,d) do { } while(0)
#define ValidateParameters4(a,b,c,d,e) do { } while(0)
#define ValidateParameters5(a,b,c,d,e,f) do { } while(0)
#define ValidateParameters6(a,b,c,d,e,f,g) do { } while(0)
#define ValidateParameters7(a,b,c,d,e,f,g,h) do { } while(0)
#define ValidateParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
#define ValidateParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
#define ValidateParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
#define ValidateParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
#define ValidateParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
#define ValidateParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
#define ValidateParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
#define ValidateParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
#define ValidateParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
#define UlValidateParameters1(a,b) do { } while(0)
#define UlValidateParameters2(a,b,c) do { } while(0)
#define UlValidateParameters3(a,b,c,d) do { } while(0)
#define UlValidateParameters4(a,b,c,d,e) do { } while(0)
#define UlValidateParameters5(a,b,c,d,e,f) do { } while(0)
#define UlValidateParameters6(a,b,c,d,e,f,g) do { } while(0)
#define UlValidateParameters7(a,b,c,d,e,f,g,h) do { } while(0)
#define UlValidateParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
#define UlValidateParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
#define UlValidateParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
#define UlValidateParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
#define UlValidateParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
#define UlValidateParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
#define UlValidateParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
#define UlValidateParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
#define UlValidateParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
#define CheckParameters1(a,b) do { } while(0)
#define CheckParameters2(a,b,c) do { } while(0)
#define CheckParameters3(a,b,c,d) do { } while(0)
#define CheckParameters4(a,b,c,d,e) do { } while(0)
#define CheckParameters5(a,b,c,d,e,f) do { } while(0)
#define CheckParameters6(a,b,c,d,e,f,g) do { } while(0)
#define CheckParameters7(a,b,c,d,e,f,g,h) do { } while(0)
#define CheckParameters8(a,b,c,d,e,f,g,h,i) do { } while(0)
#define CheckParameters9(a,b,c,d,e,f,g,h,i,j) do { } while(0)
#define CheckParameters10(a,b,c,d,e,f,g,h,i,j,k) do { } while(0)
#define CheckParameters11(a,b,c,d,e,f,g,h,i,j,k,l) do { } while(0)
#define CheckParameters12(a,b,c,d,e,f,g,h,i,j,k,l,m) do { } while(0)
#define CheckParameters13(a,b,c,d,e,f,g,h,i,j,k,l,m,n) do { } while(0)
#define CheckParameters14(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) do { } while(0)
#define CheckParameters15(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) do { } while(0)
#define CheckParameters16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) do { } while(0)
#ifdef __cplusplus
}
#endif
#endif /* MAPIVAL_H */

171
include/mapix.h Normal file
View File

@ -0,0 +1,171 @@
/*
* Copyright 2004 Jon Griffiths
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef MAPIX_H
#define MAPIX_H
#ifndef MAPIDEFS_H
#include <mapidefs.h>
#endif
#ifndef MAPICODE_H
#include <mapicode.h>
#endif
#ifndef MAPIGUID_H
#include <mapiguid.h>
#endif
#ifndef MAPITAGS_H
#include <mapitags.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct IProfAdmin IProfAdmin;
typedef IProfAdmin *LPPROFADMIN;
typedef struct IMsgServiceAdmin IMsgServiceAdmin;
typedef IMsgServiceAdmin *LPSERVICEADMIN;
typedef struct IMAPISession IMAPISession;
typedef IMAPISession *LPMAPISESSION;
typedef unsigned long FLAGS;
/* Flags for MAPILogon and MAPILogonEx */
#define MAPI_LOGON_UI 0x000001
#define MAPI_NEW_SESSION 0x000002
#define MAPI_EXTENDED 0x000020
#define MAPI_FORCE_DOWNLOAD 0x001000
#define MAPI_PASSWORD_UI 0x020000
#define MAPI_ALLOW_OTHERS 0x000008
#define MAPI_EXPLICIT_PROFILE 0x000010
#define MAPI_SERVICE_UI_ALWAYS 0x002000
#define MAPI_NO_MAIL 0x008000
#define MAPI_NT_SERVICE 0x010000
#define MAPI_TIMEOUT_SHORT 0x100000
#define MAPI_SIMPLE_DEFAULT (MAPI_LOGON_UI|MAPI_ALLOW_OTHERS|MAPI_FORCE_DOWNLOAD)
#define MAPI_SIMPLE_EXPLICIT (MAPI_NEW_SESSION|MAPI_EXPLICIT_PROFILE|MAPI_FORCE_DOWNLOAD)
typedef struct tagMAPIINIT_0
{
ULONG ulVersion;
ULONG ulFlags;
} MAPIINIT_0, *LPMAPIINIT_0;
typedef MAPIINIT_0 MAPIINIT, *LPMAPIINIT;
#define MAPI_INIT_VERSION 0U
typedef HRESULT (WINAPI MAPIINITIALIZE)(void*);
typedef MAPIINITIALIZE *LPMAPIINITIALIZE;
MAPIINITIALIZE MAPIInitialize;
typedef void (WINAPI MAPIUNINITIALIZE)(void);
typedef MAPIUNINITIALIZE *LPMAPIUNINITIALIZE;
MAPIUNINITIALIZE MAPIUninitialize;
#if defined (UNICODE) || defined (__WINESRC__)
typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(ULONG_PTR,LPWSTR,LPWSTR,ULONG,LPMAPISESSION*);
#else
typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(ULONG_PTR,LPSTR,LPSTR,ULONG,LPMAPISESSION *);
#endif
typedef MAPILOGONEX *LPMAPILOGONEX;
MAPILOGONEX MAPILogonEx;
typedef SCODE (WINAPI MAPIALLOCATEBUFFER)(ULONG,LPVOID*);
typedef MAPIALLOCATEBUFFER *LPMAPIALLOCATEBUFFER;
MAPIALLOCATEBUFFER MAPIAllocateBuffer;
typedef SCODE (WINAPI MAPIALLOCATEMORE)(ULONG,LPVOID,LPVOID*);
typedef MAPIALLOCATEMORE *LPMAPIALLOCATEMORE;
MAPIALLOCATEMORE MAPIAllocateMore;
typedef ULONG (WINAPI MAPIFREEBUFFER)(LPVOID);
typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER;
MAPIFREEBUFFER MAPIFreeBuffer;
/*****************************************************************************
* IMAPISession interface
*/
#define INTERFACE IMAPISession
#define IMAPISession_METHODS \
IUnknown_METHODS \
STDMETHOD(GetLastError)(THIS_ HRESULT hResult, ULONG ulFlags, LPMAPIERROR *lppMAPIError) PURE; \
STDMETHOD(GetMsgStoresTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; \
STDMETHOD(OpenMsgStore)(THIS_ ULONG_PTR ulUIParam, ULONG cbId, \
LPENTRYID lpId, LPCIID lpIFace, ULONG ulFlags, LPMDB *lppMDB) PURE; \
STDMETHOD(OpenAddressBook)(THIS_ ULONG_PTR ulUIParam, LPCIID iid, ULONG ulFlags, LPADRBOOK *lppAdrBook) PURE; \
STDMETHOD(OpenProfileSection)(THIS_ LPMAPIUID lpUID, LPCIID iid, ULONG ulFlags, LPPROFSECT *lppProf) PURE; \
STDMETHOD(GetStatusTable)(THIS_ ULONG ulFlags, LPMAPITABLE *lppTable) PURE; \
STDMETHOD(OpenEntry)(THIS_ ULONG cbId, LPENTRYID lpId, LPCIID iid, \
ULONG ulFlags, ULONG *lpType, LPUNKNOWN *lppUnk) PURE; \
STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbLID, LPENTRYID lpLID, ULONG cbRID, \
LPENTRYID lpRID, ULONG ulFlags, ULONG *lpRes) PURE; \
STDMETHOD(Advise)(THIS_ ULONG cbId, LPENTRYID lpId, ULONG ulMask, \
LPMAPIADVISESINK lpSink, ULONG *lpCxn) PURE;\
STDMETHOD(Unadvise)(THIS_ ULONG ulConnection) PURE;\
STDMETHOD(MessageOptions)(THIS_ ULONG_PTR ulUIParam, ULONG ulFlags, LPSTR lpszAddr, LPMESSAGE lpMsg) PURE; \
STDMETHOD(QueryDefaultMessageOpt)(THIS_ LPSTR lpszAddr, ULONG ulFlags, \
ULONG *lpcVals, LPSPropValue *lppOpts) PURE; \
STDMETHOD(EnumAdrTypes)(THIS_ ULONG ulFlags, ULONG *lpcTypes, LPSTR **lpppszTypes) PURE; \
STDMETHOD(QueryIdentity)(THIS_ ULONG *lpcbId, LPENTRYID *lppEntryID) PURE; \
STDMETHOD(Logoff)(THIS_ ULONG_PTR ulUIParam, ULONG ulFlags, ULONG ulReserved) PURE; \
STDMETHOD(SetDefaultStore)(THIS_ ULONG ulFlags, ULONG cbId, LPENTRYID lpId) PURE; \
STDMETHOD(AdminServices)(THIS_ ULONG ulFlags, LPSERVICEADMIN *lppAdmin) PURE; \
STDMETHOD(ShowForm)(THIS_ ULONG_PTR ulUIParam, LPMDB lpStore, \
LPMAPIFOLDER lpParent, LPCIID iid, ULONG ulToken, \
LPMESSAGE lpSent, ULONG ulFlags, ULONG ulStatus, \
ULONG ulMsgFlags, ULONG ulAccess, LPSTR lpszClass) PURE; \
STDMETHOD(PrepareForm)(THIS_ LPCIID lpIFace, LPMESSAGE lpMsg, ULONG *lpToken) PURE;
ICOM_DEFINE(IMAPISession,IUnknown)
#undef INTERFACE
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IMAPISession_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IMAPISession_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IMAPISession_Release(p) (p)->lpVtbl->Release(p)
/*** IMAPISession methods ***/
#define IMAPISession_GetLastError(p,a,b,c) (p)->lpVtbl->GetLastError(p,a,b,c)
#define IMAPISession_GetMsgStoresTable(p,a,b) (p)->lpVtbl->GetMsgStoresTable(p,a,b)
#define IMAPISession_OpenMsgStore(p,a,b,c,d,e,f) (p)->lpVtbl->OpenMsgStore(p,a,b,c,d,e,f)
#define IMAPISession_OpenAddressBook(p,a,b,c,d) (p)->lpVtbl->OpenAddressBook(p,a,b,c,d)
#define IMAPISession_OpenProfileSection(p,a,b,c,d) (p)->lpVtbl->OpenProfileSection(p,a,b,c,d)
#define IMAPISession_GetStatusTable(p,a,b) (p)->lpVtbl->GetStatusTable(p,a,b)
#define IMAPISession_OpenEntry(p,a,b,c,d,e,f) (p)->lpVtbl->OpenEntry(p,a,b,c,d,e,f)
#define IMAPISession_CompareEntryIDs(p,a,b,c,d,e,f) (p)->lpVtbl->CompareEntryIDs(p,a,b,c,d,e,f)
#define IMAPISession_Advise(p,a,b,c,d,e) (p)->lpVtbl->Advise(p,a,b,c,d,e)
#define IMAPISession_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
#define IMAPISession_MessageOptions(p,a,b,c,d) (p)->lpVtbl->MessageOptions)(p,a,b,c,d)
#define IMAPISession_QueryDefaultMessageOpt(p,a,b,c,d) \
(p)->lpVtbl->QueryDefaultMessageOpt(p,a,b,c,d)
#define IMAPISession_EnumAdrTypes(p,a,b,c) (p)->lpVtbl->EnumAdrTypes(p,a,b,c)
#define IMAPISession_QueryIdentity(p,a,b) (p)->lpVtbl->QueryIdentity(p,a,b)
#define IMAPISession_Logoff(p,a,b,c) (p)->lpVtbl->Logoff(p,a,b,c)
#define IMAPISession_SetDefaultStore(p,a,b,c) (p)->lpVtbl->SetDefaultStore(p,a,b,c)
#define IMAPISession_AdminServices(p,a,b) (p)->lpVtbl->AdminServices(p,a,b)
#define IMAPISession_ShowForm(p,a,b,c,d,e,f,g,h,i,j,k) \
(p)->lpVtbl->ShowForm(p,a,b,c,d,e,f,g,h,i,j,k)
#define IMAPISession_PrepareForm(p,a,b,c) (p)->lpVtbl->PrepareForm(p,a,b,c)
#endif
#ifdef __cplusplus
}
#endif
#endif /* MAPIX_H */