/*
* 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
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle 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
#include <windows.h>
#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 */
/* MAPI exposed interfaces */
#ifndef MAPI_DIM
#endif
/* Flags for abFlags[0] */
/* Flags for abFlags[1] */
typedef struct _ENTRYID
{
/* MAPI GUID's */
typedef struct _MAPIUID
{
0x00,0xdd,0x01,0x0f,0x54,0x02 }
/* Object types */
/* Flags for various calls */
#if defined (UNICODE) || defined (__WINESRC__)
#else
#define fMapiUnicode 0U
#endif
/* IMAPISession::OpenMessageStore() flags */
/* Types of message receivers */
#ifndef MAPI_ORIG
#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
#ifndef WINE_NO_UNICODE_MACROS
# ifdef UNICODE
# else
# endif
#endif
#define PROP_ID_NULL 0
/* Multi-valued property types */
/* The property tag structure. This describes a list of columns */
typedef struct _SPropTagArray
{
/* Multi-valued PT_APPTIME property value */
typedef struct _SAppTimeArray
{
/* 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
{
} 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
{
} SRealArray;
/* Multi-valued PT_SHORT property value */
typedef struct _SShortArray
{
} 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
{
/* Structure describing a table row (a collection of property values) */
typedef struct _SRow
{
/* Structure describing a set of table rows */
typedef struct _SRowSet
{
/* 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() */
/* Table status returned by IMAPITable_GetStatus() */
/* Flags for IMAPITable operations that can be asynchronous */
/* Flags for IMAPITable_FindRow() */
/* Table bookmarks */
/* Row restrictions */
typedef struct _SAndRestriction
{
typedef struct _SBitMaskRestriction
{
typedef struct _SCommentRestriction
{
#define RELOP_LT 0U
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
typedef struct _SRestriction
{
union
{
} res;
} SRestriction;
/* Errors */
typedef struct _MAPIERROR
{
#if defined (UNICODE) || defined (__WINESRC__)
#else
#endif
/* Sorting */
#define TABLE_SORT_ASCEND 0U
typedef struct _SSortOrder
{
typedef struct _SSortOrderSet
{
#define MNID_ID 0
typedef struct _MAPINAMEID
{
union
{
} Kind;
/* Desired notification types (bitflags) */
/* Type of notification event */
/* 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;
/* IMAPIContainer::OpenEntry flags */
/*****************************************************************************
* IMAPITable interface
*
* This is the read-only 'view' over an I(MAPI)TableData object.
*/
{
/*** IUnknown methods ***/
/*** IMAPITable methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IMAPITable methods ***/
#endif
/*****************************************************************************
* IMAPIAdviseSink interface
*/
{
/*** 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
/*****************************************************************************
* 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
*/
{
/*** 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
*/
{
/*** 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
{
typedef struct
{
typedef struct
{
typedef struct
{
typedef struct _ADRENTRY
{
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) */
/*****************************************************************************
* 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 */
#endif /*MAPIDEFS_H*/