mapidefs.h revision 5112e32d7072e280613921c982a6672f2c859cf3
/*
* Copyright (C) 1998 Justin Bradford
* Copyright (c) 2009 Owen Rudge for CodeWeavers
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Sun elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef MAPIDEFS_H
#define MAPIDEFS_H
#ifndef __WINESRC__
# include <windows.h>
#endif
#include <winerror.h>
#include <objbase.h>
#include <stddef.h>
/* Some types from other headers */
#ifndef __LHANDLE
#define __LHANDLE
#endif
#ifndef _tagCY_DEFINED
#define _tagCY_DEFINED
typedef union tagCY
{
struct
{
#ifdef WORDS_BIGENDIAN
#else
#endif
} CY;
#endif /* _tagCY_DEFINED */
#ifndef _FILETIME_
#define _FILETIME_
typedef struct _FILETIME
{
#ifdef WORDS_BIGENDIAN
#else
#endif
#endif
/* Memory allocation routines */
typedef ALLOCATEBUFFER *LPALLOCATEBUFFER;
typedef ALLOCATEMORE *LPALLOCATEMORE;
typedef FREEBUFFER *LPFREEBUFFER;
/* MAPI exposed interfaces */
typedef struct IABContainer IABContainer;
typedef IABContainer *LPABCONT;
typedef IDistList *LPDISTLIST;
typedef IMailUser *LPMAILUSER;
typedef struct IMAPIAdviseSink *LPMAPIADVISESINK;
typedef struct IMAPIContainer *LPMAPICONTAINER;
typedef struct IMAPIFolder *LPMAPIFOLDER;
typedef struct IMAPIProgress IMAPIProgress;
typedef IMAPIProgress *LPMAPIPROGRESS;
typedef struct IMAPIStatus IMAPIStatus;
typedef IMAPIStatus *LPMAPISTATUS;
typedef IProfSect *LPPROFSECT;
typedef struct IProviderAdmin IProviderAdmin;
typedef IProviderAdmin *LPPROVIDERADMIN;
#ifndef MAPI_DIM
#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
typedef struct _ENTRYID
{
/* MAPI GUID's */
typedef struct _MAPIUID
{
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_ACCESS_CREATE_HIERARCHY 0x00000008U
#define MAPI_ACCESS_CREATE_CONTENTS 0x00000010U
#define MAPI_ACCESS_CREATE_ASSOCIATED 0x00000020U
#define MAPI_USE_DEFAULT 0x00000040U
#if defined (UNICODE) || defined (__WINESRC__)
#define fMapiUnicode MAPI_UNICODE
#else
#define fMapiUnicode 0U
#endif
/* IMAPISession::OpenMessageStore() flags */
#define MDB_NO_DIALOG 0x00000001
/* Types of message receivers */
#ifndef MAPI_ORIG
#define MAPI_ORIG 0 /* The original author */
#endif
#ifndef cchProfileNameMax
#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_LONG 3U
#define PT_R4 4U
#define PT_DOUBLE 5U
#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_INSTANCE 0x2000
#ifndef WINE_NO_UNICODE_MACROS
# ifdef UNICODE
# define PT_TSTRING PT_UNICODE
# else
# define PT_TSTRING PT_STRING8
# endif
#endif
#define PROP_TYPE_MASK 0xFFFFU
#define PROP_TYPE(t) ((t) & PROP_TYPE_MASK)
#define PROP_ID(t) ((t) >> 16)
#define PROP_ID_NULL 0
#define PROP_ID_INVALID 0xFFFF
/* Multi-valued property types */
#define PT_MV_SHORT PT_MV_I2
#define PT_MV_I4 PT_MV_LONG
#define PT_MV_FLOAT PT_MV_R4
#define PT_MV_R8 PT_MV_DOUBLE
#define PT_MV_LONGLONG PT_MV_I8
/* The property tag structure. This describes a list of columns */
typedef struct _SPropTagArray
{
#define SizedSPropTagArray(n,id) \
/* Multi-valued PT_APPTIME property value */
typedef struct _SAppTimeArray
{
double *lpat; /* Pointer to double array of length cValues */
/* PT_BINARY property value */
typedef struct _SBinary
{
/* Multi-valued PT_BINARY property value */
typedef struct _SBinaryArray
{
} SBinaryArray;
/* Multi-valued PT_CY property value */
typedef struct _SCurrencyArray
{
/* Multi-valued PT_SYSTIME property value */
typedef struct _SDateTimeArray
{
/* Multi-valued PT_DOUBLE property value */
typedef struct _SDoubleArray
{
double *lpdbl; /* Pointer to double array of length cValues */
} SDoubleArray;
/* Multi-valued PT_CLSID property value */
typedef struct _SGuidArray
{
} SGuidArray;
/* Multi-valued PT_LONGLONG property value */
typedef struct _SLargeIntegerArray
{
/* Multi-valued PT_LONG property value */
typedef struct _SLongArray
{
} SLongArray;
/* Multi-valued PT_STRING8 property value */
typedef struct _SLPSTRArray
{
} SLPSTRArray;
/* Multi-valued PT_FLOAT property value */
typedef struct _SRealArray
{
float *lpflt; /* Pointer to float array of length cValues */
} SRealArray;
/* Multi-valued PT_SHORT property value */
typedef struct _SShortArray
{
short int *lpi; /* Pointer to short array of length cValues */
} SShortArray;
/* Multi-valued PT_UNICODE property value */
typedef struct _SWStringArray
{
/* A property value */
typedef union _PV
{
short int i;
LONG l;
float flt;
double dbl;
unsigned short b;
double at;
LONG x;
} __UPV;
/* Property value structure. This is essentially a mini-Variant */
typedef struct _SPropValue
{
} SPropValue, *LPSPropValue;
/* Structure describing a table row (a collection of property values) */
typedef struct _SRow
{
/* Structure describing a set of table rows */
typedef struct _SRowSet
{
#define SizedSRowSet(n,id) \
/* Structure describing a problem with a property */
typedef struct _SPropProblem
{
/* A collection of property problems */
typedef struct _SPropProblemArray
{
/* FPropContainsProp flags */
/* Table types returned by IMAPITable_GetStatus() */
#define TBLTYPE_SNAPSHOT 0U /* Table is fixed at creation time and contents do not change */
/* Table status returned by IMAPITable_GetStatus() */
#define TBLSTAT_COMPLETE 0U /* All operations have completed (normal status) */
/* Flags for IMAPITable operations that can be asynchronous */
/* Flags for IMAPITable_FindRow() */
/* Table bookmarks */
/* Row restrictions */
typedef struct _SRestriction* LPSRestriction;
typedef struct _SAndRestriction
{
typedef struct _SBitMaskRestriction
{
typedef struct _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
{
typedef struct _SContentRestriction
{
typedef struct _SExistRestriction
{
typedef struct _SNotRestriction
{
typedef struct _SOrRestriction
{
typedef struct _SPropertyRestriction
{
typedef struct _SSizeRestriction
{
typedef struct _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
{
union
{
} res;
} SRestriction;
/* Errors */
typedef struct _MAPIERROR
{
#if defined (UNICODE) || defined (__WINESRC__)
#else
#endif
} MAPIERROR, *LPMAPIERROR;
/* Sorting */
#define TABLE_SORT_ASCEND 0U
#define TABLE_SORT_DESCEND 1U
#define TABLE_SORT_COMBINE 2U
typedef struct _SSortOrder
{
} SSortOrder, *LPSSortOrder;
typedef struct _SSortOrderSet
{
} SSortOrderSet, * LPSSortOrderSet;
#define MNID_ID 0
#define MNID_STRING 1
typedef struct _MAPINAMEID
{
union
{
} 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
{
/* fnevNewMail notification */
typedef struct _NEWMAIL_NOTIFICATION
{
#if defined (UNICODE) || defined (__WINESRC__)
#else
#endif
/* fnevObjectCreated/Deleted/Modified/Moved/Copied notification */
typedef struct _OBJECT_NOTIFICATION
{
/* fnevTableModified notification */
typedef struct _TABLE_NOTIFICATION
{
/* fnevExtended notification */
typedef struct _EXTENDED_NOTIFICATION
{
/* fnevStatusObjectModified notification */
typedef struct
{
/* The notification structure passed to advise sinks */
typedef struct _NOTIFICATION
{
union
{
} info;
typedef NOTIFCALLBACK *LPNOTIFCALLBACK;
/* IMAPIContainer::OpenEntry flags */
#define MAPI_BEST_ACCESS 0x00000010
/*****************************************************************************
* IMAPITable interface
*
* This is the read-only 'view' over an I(MAPI)TableData object.
*/
#define INTERFACE IMAPITable
{
/*** IUnknown methods ***/
/*** IMAPITable methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPITable methods ***/
#endif
typedef IMAPITable *LPMAPITABLE;
/*****************************************************************************
* IMAPIAdviseSink interface
*/
#define INTERFACE IMAPIAdviseSink
{
/*** IUnknown methods ***/
/*** IMAPIAdviseSink methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIAdviseSink methods ***/
#endif
/*****************************************************************************
* IMAPIProp interface
*/
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
#endif
typedef IMAPIProp *LPMAPIPROP;
#define KEEP_OPEN_READONLY (0x00000001U)
#define KEEP_OPEN_READWRITE (0x00000002U)
#define FORCE_SAVE (0x00000004U)
/*****************************************************************************
* IMsgStore interface
*/
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
/*** IMsgStore methods ***/
STDMETHOD(Advise)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulEventMask, LPMAPIADVISESINK lpAdviseSink,
STDMETHOD(CompareEntryIDs)(THIS_ ULONG cbEntryID1, LPENTRYID lpEntryID1, ULONG cbEntryID2, LPENTRYID lpEntryID2,
STDMETHOD(OpenEntry)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, ULONG ulFlags, ULONG *lpulObjType,
STDMETHOD(SetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG cbEntryID, LPENTRYID lpEntryID) PURE;
STDMETHOD(GetReceiveFolder)(THIS_ LPSTR lpszMessageClass, ULONG ulFlags, ULONG * lpcbEntryID, LPENTRYID *lppEntryID,
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
/*** IMsgStore methods ***/
#endif
/*****************************************************************************
* IMAPIContainer interface
*/
#define INTERFACE IMAPIContainer
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
/*** IMAPIContainer methods ***/
STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE;
STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList,
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
/*** IMAPIContainer methods ***/
#endif
/*****************************************************************************
* IMAPIFolder interface
*/
#define INTERFACE IMAPIFolder
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
/*** IMAPIContainer methods ***/
STDMETHOD(SetSearchCriteria)(THIS_ LPSRestriction lpRestriction, LPENTRYLIST lpContainerList, ULONG ulSearchFlags) PURE;
STDMETHOD(GetSearchCriteria)(THIS_ ULONG ulFlags, LPSRestriction * lppRestriction, LPENTRYLIST * lppContainerList,
/*** IMAPIFolder methods ***/
STDMETHOD(CopyMessages)(THIS_ LPENTRYLIST lpMsgList, LPCIID lpInterface, LPVOID lpDestFolder, ULONG ulUIParam,
STDMETHOD(DeleteMessages)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
STDMETHOD(CreateFolder)(THIS_ ULONG ulFolderType, LPSTR lpszFolderName, LPSTR lpszFolderComment, LPCIID lpInterface,
STDMETHOD(CopyFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, LPCIID lpInterface, LPVOID lpDestFolder,
STDMETHOD(DeleteFolder)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulUIParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(SetReadFlags)(THIS_ LPENTRYLIST lpMsgList, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
STDMETHOD(GetMessageStatus)(THIS_ ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG * lpulMessageStatus) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
/*** IMAPIContainer methods ***/
/*** IMAPIFolder methods ***/
#endif
typedef struct
{
} FLATENTRY, *LPFLATENTRY;
typedef struct
{
typedef struct
{
typedef struct
{
typedef struct _ADRENTRY
{
} ADRENTRY, *LPADRENTRY;
typedef struct _ADRLIST
{
/*****************************************************************************
* IMessage interface
*/
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
/*** IMessage methods ***/
STDMETHOD(OpenAttach)(THIS_ ULONG ulAttachmentNum, LPCIID lpInterface, ULONG ulFlags, LPATTACH *lppAttach) PURE;
STDMETHOD(CreateAttach)(THIS_ LPCIID lpInterface, ULONG ulFlags, ULONG *lpulAttachmentNum, LPATTACH *lppAttach) PURE;
STDMETHOD(DeleteAttach)(THIS_ ULONG ulAttachmentNum, ULONG ulUIParam, LPMAPIPROGRESS lpProgress, ULONG ulFlags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
/*** IMessage methods ***/
#endif
/* Message flags (PR_MESSAGE_FLAGS) */
#define MSGFLAG_READ 0x00000001U
#define MSGFLAG_UNMODIFIED 0x00000002U
#define MSGFLAG_SUBMIT 0x00000004U
#define MSGFLAG_UNSENT 0x00000008U
#define MSGFLAG_HASATTACH 0x00000010U
#define MSGFLAG_FROMME 0x00000020U
/*****************************************************************************
* IAttach interface
*/
{
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
STDMETHOD(GetProps)(THIS_ LPSPropTagArray lpPropTags, ULONG ulFlags, ULONG *lpValues, LPSPropValue *lppProps) PURE;
STDMETHOD(OpenProperty)(THIS_ ULONG ulPropTag, LPCIID lpIid, ULONG ulOpts, ULONG ulFlags, LPUNKNOWN *lppUnk) PURE;
STDMETHOD(CopyProps)(THIS_ LPSPropTagArray lpIncludeProps, ULONG ulParam, LPMAPIPROGRESS lpProgress,
STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray *lppPropTags, LPGUID lpIid, ULONG ulFlags, ULONG *lpCount,
STDMETHOD(GetIDsFromNames)(THIS_ ULONG cPropNames, LPMAPINAMEID *lppNames, ULONG ulFlags, LPSPropTagArray *lppPropTags) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPIProp methods ***/
#endif
/* Attachment flags */
#define NO_ATTACHMENT 0x00000000U
#define ATTACH_BY_VALUE 0x00000001U
#endif /*MAPIDEFS_H*/