This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/edkmapi.h

975 lines
50 KiB
C

// --edkmapi.h------------------------------------------------------------------
//
// Header file for module containing MAPI utility functions.
//
// Copyright 1986 - 1998 Microsoft Corporation. All Rights Reserved.
// -----------------------------------------------------------------------------
#ifndef _EDKMAPI_H
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _EDKMAPI_H
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
// Flags for HrMAPIOpenCachedProp().
#define EDK_CACHE_READ 0x00000001L
#define EDK_CACHE_WRITE 0x00000002L
#define MODRECIP_EMPTY (MODRECIP_ADD|MODRECIP_REMOVE)
/* Values of PR_NDR_REASON_CODE */
#define MAPI_REASON(_code) ((LONG) _code)
#define MAPI_REASON_TRANSFER_FAILED MAPI_REASON( 0 )
#define MAPI_REASON_TRANSFER_IMPOSSIBLE MAPI_REASON( 1 )
#define MAPI_REASON_CONVERSION_NOT_PERFORMED MAPI_REASON( 2 )
#define MAPI_REASON_PHYSICAL_RENDITN_NOT_DONE MAPI_REASON( 3 )
#define MAPI_REASON_PHYSICAL_DELIV_NOT_DONE MAPI_REASON( 4 )
#define MAPI_REASON_RESTRICTED_DELIVERY MAPI_REASON( 5 )
#define MAPI_REASON_DIRECTORY_OPERATN_FAILED MAPI_REASON( 6 )
#define CbSPropValue(_centries) \
((_centries)*sizeof(SPropValue))
#define CbNewADRENTRY(_centries) \
(offsetof(ADRENTRY,rgPropVals) + (_centries)*sizeof(LPSPropValue))
#define CbADRENTRY(_lpadrentry) \
(offsetof(ADRENTRY,rgPropVals) + (UINT)(_lpadrentry)->cValues*sizeof(LPSPropValue))
#define VALID_RECIP_TYPE(ulRecipType) \
(((ulRecipType & (~MAPI_SUBMITTED)) == MAPI_ORIG) || \
((ulRecipType & (~MAPI_SUBMITTED)) == MAPI_TO) || \
((ulRecipType & (~MAPI_SUBMITTED)) == MAPI_CC) || \
((ulRecipType & (~MAPI_SUBMITTED)) == MAPI_BCC))
#define VALID_RELOP_T(x) \
(((((ULONG)(x)) >= 0) && (((ULONG)(x)) < ((ULONG)RELOP_RE))) ? TRUE : FALSE)
#define VALID_ATTACH_METHOD(x) \
(((((ULONG)(x)) >= ((ULONG)NO_ATTACHMENT)) && \
(((ULONG)(x)) < ((ULONG)ATTACH_OLE))) ? TRUE : FALSE)
//$--MSG_T----------------------------------------------------------------------
// Type of message.
// -----------------------------------------------------------------------------
typedef enum _msg
{
MSG_ENVELOPE = 0, // message envelope
MSG_CONTENT, // message contents
MSG_LAST // all values are less than this
} MSG_T;
#define VALID_MSG_T(x) \
(((((ULONG)(x)) >= 0) && (((ULONG)(x)) < ((ULONG)MSG_LAST))) ? TRUE : FALSE)
//$--MD_ACTION_T----------------------------------------------------------------
// Type defining possible actions taken by an MD.
// -----------------------------------------------------------------------------
typedef enum _md_action
{
MD_AC_EXPANDED = -2, // Distribution list expanded
MD_AC_REDIRECTED, // Recipient address changed
MD_AC_RELAYED, // Normal action of a relay MTAE
MD_AC_REROUTED, // Previous attempt to route message
MD_AC_LAST // All values are less than this
} MD_ACTION_T;
#define VALID_MD_ACTION(x) \
((((LONG)(x)) >= ((LONG)-2)) && (((LONG)(x)) < ((LONG)MD_AC_LAST)))
#define CbNewTRACEINFO(_centries) \
(offsetof(TRACEINFO,rgtraceentry) + (_centries)*sizeof(TRACEENTRY))
#define CbTRACEINFO(_lptraceinfo) \
(offsetof(TRACEINFO,rgtraceentry) + \
((_lptraceinfo)->cEntries*sizeof(TRACEENTRY)))
#define CbNewINTTRACEINFO(_centries) \
(offsetof(INTTRACEINFO,rgIntTraceEntry) + (_centries)*sizeof(INTTRACEENTRY))
#define CbINTTRACEINFO(_lptraceinfo) \
(offsetof(INTTRACEINFO,rgIntTraceEntry) + \
((_lptraceinfo)->cEntries*sizeof(INTTRACEENTRY)))
//******************************************************************************
//
// EDKMAPI.C function prototypes
//
//******************************************************************************
//$--HrMAPIGetFirstSRowSet------------------------------------------------------
// Gets the first SRowSet from a table
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetFirstSRowSet( // RETURNS: return code
IN LPMAPITABLE lpTable, // pointer to table address variable
IN ULONG cRows, // count of number of rows in SRowSet
IN LPSPropTagArray rgPropTags, // array of property tags
OUT LPSRowSet FAR *lppRows); // pointer to address variable for
// SRowSet
//$--HrMAPIGetNextSRowSet-------------------------------------------------------
// Gets the next SRowSet from a table
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetNextSRowSet( // RETURNS: return code
IN LPMAPITABLE lpTable, // pointer to table
IN ULONG cRows, // count of number of rows in SRowSet
IN LPSPropTagArray rgPropTags, // array of property tags
OUT LPSRowSet FAR *lppRows); // pointer to address variable for
// SRowSet
//$--HrMAPICreateEntryList------------------------------------------------------
// Creates an ENTRYLIST.
// -----------------------------------------------------------------------------
HRESULT HrMAPICreateEntryList( // RETURNS: return code
IN ULONG cbeid, // count of bytes in Entry ID
IN LPENTRYID lpeid, // pointer to Entry ID
OUT LPENTRYLIST FAR *lppEntryList); // pointer to address variable of Entry
// list
//$--HrMAPIAppendEntryList------------------------------------------------------
// Appends to an ENTRYLIST.
// -----------------------------------------------------------------------------
HRESULT HrMAPIAppendEntryList( // RETURNS: return code
IN ULONG cbeid, // count of bytes in Entry ID
IN LPENTRYID lpeid, // pointer to Entry ID
OUT LPENTRYLIST FAR lpEntryList); // pointer to address variable of Entry
// list
//$--HrMAPIDestroyEntryList-----------------------------------------------------
// Frees an ENTRYLIST.
// -----------------------------------------------------------------------------
HRESULT HrMAPIDestroyEntryList( // RETURNS: return code
IN OUT LPENTRYLIST FAR *lppEntryList);// pointer to address variable of Entry
// list
//$--HrMAPIWriteStreamToFile----------------------------------------------------
// Write stream to a file given a file handle.
// -----------------------------------------------------------------------------
HRESULT HrMAPIWriteStreamToFile( // RETURNS: return code
IN LPSTREAM lpStream, // Pointer to stream
OUT HANDLE hFile); // Handle to file
//$--HrMAPIWriteFileToStream----------------------------------------------------
// Write file to a stream given a stream pointer.
// -----------------------------------------------------------------------------
HRESULT HrMAPIWriteFileToStream( // RETURNS: return code
IN HANDLE hFile, // Handle to file
OUT LPSTREAM lpStream); // Pointer to stream
//$--HrMAPIWriteAttachmentToFile------------------------------------------------
// Write the identified message attachment to a file.
// -----------------------------------------------------------------------------
HRESULT HrMAPIWriteAttachmentToFile( // RETURNS: return code
IN LPMESSAGE pMessage, // Message containing the attachments
IN ULONG iAttach, // Attachment identifier
OUT HANDLE hFile); // Handle to file
//$--HrMAPIGotoSRow-------------------------------------------------------------
// Goto the specified SRow in an SRowSet.
//------------------------------------------------------------------------------
HRESULT HrMAPIGotoSRow( // RETURNS: return code
IN LPSRowSet FAR lpRows, // pointer to SRowSet
IN ULONG ulRow, // index of SRow in SRowSet
OUT LPSRow *lppRow); // pointer to SRow
//$--HrMAPIGotoFirstSRow--------------------------------------------------------
// Goto the first SRow in an SRowSet.
//------------------------------------------------------------------------------
HRESULT HrMAPIGotoFirstSRow( // RETURNS: return code
IN LPSRowSet FAR lpRows, // pointer to SRowSet
OUT ULONG *lpulRow, // index of SRow in SRowSet
OUT LPSRow *lppRow); // pointer to SRow
//$--HrMAPIGotoNextSRow---------------------------------------------------------
// Goto the next SRow in an SRowSet.
//------------------------------------------------------------------------------
HRESULT HrMAPIGotoNextSRow( // RETURNS: return code
IN LPSRowSet FAR lpRows, // pointer to SRowSet
IN OUT ULONG *lpulRow, // index of SRow in SRowSet
OUT LPSRow *lppRow); // pointer to SRow
//$--HrMAPIWriteStreamToMemory--------------------------------------------------
// Reads a given number of bytes from a stream to a block of memory.
// -----------------------------------------------------------------------------
HRESULT HrMAPIWriteStreamToMemory( // RETURNS: return code
IN LPSTREAM lpStream, // pointer to stream
IN ULONG cBytes, // count of bytes in memory
IN LPBYTE lpbBytes, // pointer to memory
OUT ULONG *lpcBytesRead); // count of bytes read from stream
//$--HrMAPIWriteMemoryToStream--------------------------------------------------
// Writes a given number of bytes from a block of memory to a stream
// -----------------------------------------------------------------------------
HRESULT HrMAPIWriteMemoryToStream( // RETURNS: return code
IN LPSTREAM lpStream, // pointer to stream
IN ULONG cBytes, // count of bytes in memory
IN LPBYTE lpbBytes, // pointer to memory
OUT ULONG *lpcBytesWritten); // count of bytes written from stream
//$--HrMAPISetStreamSize--------------------------------------------------------
// Sets the size of the given stream.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetStreamSize( // RETURNS: return code
IN LPSTREAM lpStream, // pointer to stream
IN ULONG cBytes); // count of bytes in stream
//******************************************************************************
//
// IADDRESS.C function prototypes
//
//******************************************************************************
//$--HrMAPICreateAddressList----------------------------------------------------
// Create an address list.
// -----------------------------------------------------------------------------
HRESULT HrMAPICreateAddressList( // RETURNS: return code
IN ULONG cProps, // count of values in address list
// entry
IN LPSPropValue lpPropValues, // pointer to address list entry
OUT LPADRLIST *lppAdrList); // pointer to address list pointer
//$--HrMAPIAppendAddressList----------------------------------------------------
// Append to an address list.
// -----------------------------------------------------------------------------
HRESULT HrMAPIAppendAddressList( // RETURNS: return code
IN ULONG cProps, // count of values in address list
// entry
IN LPSPropValue lpPropValues, // pointer to address list entry
IN OUT LPADRLIST *lppAdrList); // pointer to address list pointer
//$--HrMAPICreateSizedAddressList-----------------------------------------------
// Create a sized address list.
// -----------------------------------------------------------------------------
HRESULT HrMAPICreateSizedAddressList( // RETURNS: return code
IN ULONG cEntries, // count of entries in address list
OUT LPADRLIST *lppAdrList); // pointer to address list pointer
//$--HrMAPISetAddressList-------------------------------------------------------
// Set an address list.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetAddressList( // RETURNS: return code
IN ULONG iEntry, // index of address list entry
IN ULONG cProps, // count of values in address list
// entry
IN LPSPropValue lpPropValues, // pointer to address list entry
IN OUT LPADRLIST lpAdrList); // pointer to address list pointer
//******************************************************************************
//
// IFOLDER.C function prototypes
//
//******************************************************************************
//$--HrMAPIFindInbox------------------------------------------------------------
// Find IPM inbox folder.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindInbox( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // Entry ID of IPM inbox
//$--HrMAPIFindOutbox-----------------------------------------------------------
// Find IPM outbox folder.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindOutbox( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // Entry ID of IPM outbox
//$--HrMAPIFindIPMSubtree-------------------------------------------------------
// Find IPM subtree folder.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindIPMSubtree( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // entry ID of IPM subtree
//$--HrGWFindMtsOutFolder-------------------------------------------------------
// Find MTS-OUT folder.
// -----------------------------------------------------------------------------
HRESULT HrGWFindMtsOutFolder( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // entry ID of MTS-OUT
//$--HrGWFindMtsInFolder--------------------------------------------------------
// Find MTS-IN folder.
// -----------------------------------------------------------------------------
HRESULT HrGWFindMtsInFolder( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // entry ID of MTS-IN
//$--HrFindExchangePublicStore--------------------------------------------------
// Find public store root folder.
// -----------------------------------------------------------------------------
HRESULT HrFindExchangePublicStore( // RETURNS: return code
IN LPMDB lpMdb, // pointer to message store
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // entry ID of public store
//$--HrMAPIFindFolder@----------------------------------------------------------
// Find a folder by name.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindFolderW( // RETURNS: return code
IN LPMAPIFOLDER lpFolder, // pointer to folder
IN LPCWSTR lpszName, // name of folder to find
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
HRESULT HrMAPIFindFolderA( // RETURNS: return code
IN LPMAPIFOLDER lpFolder, // pointer to folder
IN LPCSTR lpszName, // name of folder to find
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
#ifdef UNICODE
#define HrMAPIFindFolder HrMAPIFindFolderW
#else
#define HrMAPIFindFolder HrMAPIFindFolderA
#endif
//$--HrMAPIFindSubfolderEx@-----------------------------------------------------
// Find a folder by name.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindSubfolderExW(
IN LPMAPIFOLDER lpRootFolder, // open root folder
IN WCHAR chSep, // folder path separator
IN LPCWSTR lpszName, // folder path
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
HRESULT HrMAPIFindSubfolderExA(
IN LPMAPIFOLDER lpFolder, // open root folder
IN CHAR chSep, // folder path separator
IN LPCSTR lpszName, // folder path
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
#ifdef UNICODE
#define HrMAPIFindSubfolderEx HrMAPIFindSubfolderExW
#else
#define HrMAPIFindSubfolderEx HrMAPIFindSubfolderExA
#endif
//$--HrMAPIFindFolderEx@--------------------------------------------------------
// Finds an arbitrarily nested folder in the indicated store given its
// path name.
//------------------------------------------------------------------------------
HRESULT HrMAPIFindFolderExW(
IN LPMDB lpMdb, // Open message store
IN WCHAR chSep, // folder path separator character
IN LPCWSTR lpszFolderPath, // folder path
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
HRESULT HrMAPIFindFolderExA(
IN LPMDB lpMdb, // Open message store
IN CHAR chSep, // folder path separator character
IN LPCSTR lpszFolderPath, // folder path
OUT ULONG *lpcbeid, // pointer to count of bytes in entry ID
OUT LPENTRYID *lppeid); // pointer to entry ID pointer
#ifdef UNICODE
#define HrMAPIFindFolderEx HrMAPIFindFolderExW
#else
#define HrMAPIFindFolderEx HrMAPIFindFolderExA
#endif
//$--HrMAPIOpenFolderEx@--------------------------------------------------------
// Opens an arbitrarily nested folder in the indicated store given its
// path name.
//------------------------------------------------------------------------------
HRESULT HrMAPIOpenFolderExW(
IN LPMDB lpMdb, // Open message store
IN WCHAR chSep, // folder path separator character
IN LPCWSTR lpszFolderPath, // folder path
OUT LPMAPIFOLDER * lppFolder); // pointer to folder opened
HRESULT HrMAPIOpenFolderExA(
IN LPMDB lpMdb, // Open message store
IN CHAR chSep, // folder path separator character
IN LPCSTR lpszFolderPath, // folder path
OUT LPMAPIFOLDER * lppFolder); // pointer to folder opened
#ifdef UNICODE
#define HrMAPIOpenFolderEx HrMAPIOpenFolderExW
#else
#define HrMAPIOpenFolderEx HrMAPIOpenFolderExA
#endif
//$--HrMAPIOpenSubfolderEx@-----------------------------------------------------
// Opens an arbitrarily nested folder in the indicated folder given its
// path name.
//------------------------------------------------------------------------------
HRESULT HrMAPIOpenSubfolderExW(
IN LPMAPIFOLDER lpRootFolder, // open root folder
IN WCHAR chSep, // folder path separator character
IN LPCWSTR lpszFolderPath, // folder path
OUT LPMAPIFOLDER * lppFolder); // pointer to folder opened
HRESULT HrMAPIOpenSubfolderExA(
IN LPMAPIFOLDER lpRootFolder, // open root folder
IN CHAR chSep, // folder path separator character
IN LPCSTR lpszFolderPath, // folder path
OUT LPMAPIFOLDER * lppFolder); // pointer to folder opened
#ifdef UNICODE
#define HrMAPIOpenSubfolderEx HrMAPIOpenSubfolderExW
#else
#define HrMAPIOpenSubfolderEx HrMAPIOpenSubfolderExA
#endif
//$--HrOpenExchangePublicFolders------------------------------------------------
// Opens the root of the public folder hierarchy in the public message store.
//------------------------------------------------------------------------------
HRESULT HrOpenExchangePublicFolders(
IN LPMDB lpPubStore,
OUT LPMAPIFOLDER *lppRootFolder);
//******************************************************************************
//
// IMESSAGE.C function prototypes
//
//******************************************************************************
//$--HrMAPIFindMsgByProp--------------------------------------------------------
// Find the entry ID of a message given a property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindMsgByProp( // RETURNS: return code
IN LPMAPIFOLDER lpFolder, // pointer to folder
IN LPSPropValue lpSPropValue, // property value
OUT LPENTRYLIST *lppMsgList); // list of matching messages
//$--HrMAPIMoveMessage----------------------------------------------------------
// Move one message from one folder to another.
// -----------------------------------------------------------------------------
HRESULT HrMAPIMoveMessage( // RETURNS: return code
IN LPMAPIFOLDER lpSrcFolder, // pointer to source folder
IN LPMAPIFOLDER lpDstFolder, // pointer to destination folder
IN ULONG cbeid, // count of bytes in entry ID
IN LPENTRYID lpeid); // pointer to entry ID
//$--HrMAPICopyMessage----------------------------------------------------------
// Copy one message from one folder to another.
// -----------------------------------------------------------------------------
HRESULT HrMAPICopyMessage( // RETURNS: return code
IN LPMAPIFOLDER lpSrcFolder, // pointer to source folder
IN LPMAPIFOLDER lpDstFolder, // pointer to destination folder
IN ULONG cbeid, // count of bytes in entry ID
IN LPENTRYID lpeid); // pointer to entry ID
//$--HrMAPIDeleteMessage--------------------------------------------------------
// Delete one message from one folder to another.
// -----------------------------------------------------------------------------
HRESULT HrMAPIDeleteMessage( // RETURNS: return code
IN LPMAPIFOLDER lpFolder, // pointer to folder
IN ULONG cbeid, // count of bytes in entry ID
IN LPENTRYID lpeid); // pointer to entry ID
//******************************************************************************
//
// IPROP.C function prototypes
//
//******************************************************************************
//$--HrMAPIOpenCachedProp-------------------------------------------------------
//
// DESCRIPTION: Create a new (local) IPropData object in which the original
// object properties are cached. The local cached can be created for
// reading (for use with GetProp calls) for for writing (for use with
// SetProp calls). The purpose of this function and HrMAPICloseCachedProp
// is to reduce the number of remote procedure calls made by code
// which performs many GetProp or SetProp calls on an object.
//
// INPUT: lpObj -- property object to cache
// lpPropList -- list of properties to cache (for reading)
// defaults to all properties if NULL.
// ulFlags -- read OR write access flag (EDK_CACHE_READ
// or EDK_CACHE_WRITE)
//
// OUTPUT: lppCachedObj -- cached property object
//
// RETURNS: HRESULT -- NOERROR if successful,
// E_INVALIDARG if bad input
// E_FAIL otherwise.
//
// NOTE: This function creates a cached object for reading only
// or for writing only. It does not support and object
// for both reading and writing.
//
// -----------------------------------------------------------------------------
HRESULT HrMAPIOpenCachedProp( // RETURNS: return code
IN LPMAPIPROP lpObj, // source object
IN LPSPropTagArray lpPropList, // list of properties to cache
IN ULONG ulFlags, // open for reading only or for writing only
OUT LPPROPDATA FAR * lppCachedObj); // cached version of source object
//$--HrMAPICloseCachedProp------------------------------------------------------
//
// DESCRIPTION: If object was created as a write cache,
// copy properties in local cached object
// back to original remote object.
//
// INPUT: lpCachedObj -- cached property object
// lpOriginalObj -- original property object
// ulFlags -- read cache or write cache flag (EDK_CACHE_READ
// or EDK_CACHE_WRITE)
//
// OUTPUT: lppProblems -- set to the property problem array returned
// by if there were problems setting properties on the original
// object
//
// NOTES: lppProblems: It may be set, even though overall call
// is successful. This is because all of the SetProps have been "deferred" on the
// original object until this call, the user will need to evaluate
// the contents of the lppProblems buffer pointer based on which
// properties he/or she actually tried to set.
//
// RETURNS: HRESULT -- NOERROR if successful,
// E_INVALIDARG if bad input
// E_FAIL otherwise
//
// lppProblems will only be valid if return code
// is NOERROR.
//
// -----------------------------------------------------------------------------
HRESULT HrMAPICloseCachedProp( // RETURNS: return code
IN LPPROPDATA lpCachedObj, // cached property object
IN LPMAPIPROP lpOriginalObj, // original object
IN ULONG ulFlags, // cache type (EDK_CACHE_READ or EDK_CACHE_WRITE)
OUT LPSPropProblemArray FAR * lppProblems); // pointer to property problems array if problems setting properties
//$--HrMAPIGetPropString--------------------------------------------------------
// Get a string property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropString( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
OUT ULONG *lpcbProp, // count of bytes in property
OUT LPVOID *lppvProp); // pointer to property address variable
//$--HrMAPISetPropString--------------------------------------------------------
// Set a string property.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropString( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN LPVOID lpvProp); // pointer to property
//$--HrMAPIGetPropBinary--------------------------------------------------------
// Get a binary property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropBinary( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
OUT ULONG *lpcbProp, // count of bytes in property
OUT LPVOID *lppvProp); // pointer to property address variable
//$--HrMAPISetPropBinary--------------------------------------------------------
// Set a binary property.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropBinary( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN ULONG cbProp, // count of bytes in property
IN LPVOID lpvProp); // pointer to property
//$--HrMAPIGetPropBoolean-------------------------------------------------------
// Get a boolean property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropBoolean( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
OUT BOOL *lpfProp); // pointer to property variable
//$--HrMAPISetPropBoolean-------------------------------------------------------
// Set a boolean property.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropBoolean( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN BOOL fProp); // property
//$--HrMAPIGetPropLong----------------------------------------------------------
// Get a long property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropLong( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
OUT ULONG *lpulProp); // pointer to property variable
//$--HrMAPISetPropLong----------------------------------------------------------
// Set a long property.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropLong( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN ULONG ulProp); // property
//$--HrMAPIGetPropSystime-------------------------------------------------------
// Get a systime property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropSystime( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
OUT LPFILETIME lpSystime); // pointer to property variable
//$--HrMAPISetPropSystime-------------------------------------------------------
// Set a systime property.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropSystime( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN LPFILETIME lpSystime); // pointer to property
//$--HrMAPIGetPropToFile--------------------------------------------------------
// Get a property and put in a given file.
// -----------------------------------------------------------------------------
HRESULT HrMAPIGetPropToFile( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN LPSTR lpszFilename, // pointer to destination file name
OUT ULONG *lpcbProp); // pointer to count of bytes address
// variable
//$--HrMAPISetPropFromFile------------------------------------------------------
// Set a property from a given file.
// -----------------------------------------------------------------------------
HRESULT HrMAPISetPropFromFile( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN LPSTR lpszFilename, // pointer to source file name
OUT ULONG *lpcbProp); // pointer to count of bytes address
// variable
//$--HrMAPIOpenStreamOnProperty-------------------------------------------------
// Open a stream on a given property.
// -----------------------------------------------------------------------------
HRESULT HrMAPIOpenStreamOnProperty( // RETURNS: return code
IN LPMAPIPROP lpObj, // pointer to object
IN ULONG ulPropTag, // property tag
IN ULONG ulFlags, // flags (MAPI_CREATE and/or MAPI_MODIFY)
OUT LPSTREAM *lppStream); // pointer to stream address variable
//$--HrMAPIAppendSPropValues----------------------------------------------------
// Append one set of SPropValue's to another.
// -----------------------------------------------------------------------------
HRESULT HrMAPIAppendSPropValues( // RETURNS: return code
IN ULONG cHeadProps, // count of property values in head
IN LPSPropValue lpHeadProps, // pointer to property values in
// head
IN ULONG cTailProps, // count of property values in tail
IN LPSPropValue lpTailProps, // pointer to property values in
// tail
OUT ULONG *lpcNewProps, // pointer to count of property
// values
OUT LPSPropValue *lppNewProps); // pointer to property values
//$--HrMAPIMoveOneProp----------------------------------------------------------
// Move one property from a source object to a destination object.
// -----------------------------------------------------------------------------
HRESULT HrMAPIMoveOneProp( // RETURNS: return code
IN LPMAPIPROP lpSrcObj, // pointer to source object
IN ULONG ulSrcPropTag, // source property tag
IN ULONG ulDstPropTag, // destination property tag
IN BOOL IsMust, // TRUE if a required property
IN BOOL IsReplace, // TRUE if existing destination
// property can be replaced
IN OUT LPMAPIPROP lpDstObj); // pointer to destination object
//******************************************************************************
//
// ISTORE.C function prototypes
//
//******************************************************************************
// $--HrMAPIFindStore-----------------------------------------------------------
// Find an MDB store based on a string.
//-----------------------------------------------------------------------------
HRESULT HrMAPIFindStoreW(
IN LPMAPISESSION lpSession, // MAPI session ptr
IN LPCWSTR lpszStore, // store name
OUT ULONG FAR * lpcbentryid,// ptr to # bytes in entry ID
OUT LPENTRYID FAR * lppentryid);// ptr to entry ID buffer
HRESULT HrMAPIFindStoreA(
IN LPMAPISESSION lpSession, // MAPI session ptr
IN LPCSTR lpszStore, // store name
OUT ULONG FAR * lpcbentryid,// ptr to # bytes in entry ID
OUT LPENTRYID FAR * lppentryid);// ptr to entry ID buffer
#ifdef UNICODE
#define HrMAPIFindStore HrMAPIFindStoreW
#else
#define HrMAPIFindStore HrMAPIFindStoreA
#endif
//$--HrMAPIFindDefaultMsgStore--------------------------------------------------
// Get the entry ID of the default message store.
// -----------------------------------------------------------------------------
HRESULT HrMAPIFindDefaultMsgStore( // RETURNS: return code
IN LPMAPISESSION lplhSession, // session pointer
OUT ULONG *lpcbeid, // count of bytes in entry ID
OUT LPENTRYID *lppeid); // entry ID of default store
//$--FIsPublicStore-------------------------------------------------------------
// Returns TRUE if the MDB is a public store.
// -----------------------------------------------------------------------------
BOOL FIsPublicStore(
IN LPMDB lpmdb); // pointer to message store
//$--_HrOpenStoreFromGuid-------------------------------------------------------
// Helper function to encapsulate the nuts and bolts of opening stores by GUID.
// Used by HrOpenExchangePublicStore(), and HrOpenExchangePrivateStore().
//------------------------------------------------------------------------------
HRESULT _HrOpenStoreFromGuid(
IN LPMAPISESSION,
IN LPGUID,
OUT LPMDB *);
//$--HrOpenExchangePublicStore--------------------------------------------------
// Locates the public store provider (first matching if there are multiple)
// and returns a pointer to it.
//------------------------------------------------------------------------------
__inline HRESULT HrOpenExchangePublicStore(
IN LPMAPISESSION lphSession, // open session handle
OUT LPMDB * lppMDB) // ptr to store opened
{
return( _HrOpenStoreFromGuid( lphSession,
(LPGUID)pbExchangeProviderPublicGuid,
lppMDB));
}
//$--HrOpenExchangePrivateStore--------------------------------------------------
// Locates the primary user store provider (first matching if there are multiple)
// and returns a pointer to it.
//------------------------------------------------------------------------------
__inline HRESULT HrOpenExchangePrivateStore(
IN LPMAPISESSION lphSession, // open session handle
OUT LPMDB * lppMDB) // ptr to store opened
{
return( _HrOpenStoreFromGuid( lphSession,
(LPGUID)pbExchangeProviderPrimaryUserGuid,
lppMDB));
}
//******************************************************************************
//
// ITRACE.C function prototypes
//
//******************************************************************************
//$--HrTraceGetEntryListSize----------------------------------------------------
// Get the size of the hop trace information in bytes.
// -----------------------------------------------------------------------------
HRESULT HrTraceGetEntryListSize( // RETURNS: return code
IN LPTRACEINFO lpTraceInfo, // Pointer to hop trace address variable
OUT ULONG *lpcbTraceInfo); // Count of bytes in hop trace list
//$--HrTraceGetEntryList--------------------------------------------------------
// Get the hop trace information for a given message.
// -----------------------------------------------------------------------------
HRESULT HrTraceGetEntryList( // RETURNS: return code
IN LPMESSAGE lpMessage, // Pointer to message.
OUT LPTRACEINFO *lppTraceInfo); // Pointer to hop trace address variable
//$--HrTraceSetEntryList--------------------------------------------------------
// Set the hop trace information for a given message.
// -----------------------------------------------------------------------------
HRESULT HrTraceSetEntryList( // RETURNS: return code
IN LPMESSAGE lpMessage, // Pointer to message.
IN LPTRACEINFO lpTraceInfo); // Pointer to hop trace address variable
//$--HrTraceCopyEntry-----------------------------------------------------------
// Copy trace entry information to a trace entry structure.
// -----------------------------------------------------------------------------
HRESULT HrTraceCopyEntry( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
OUT LPTRACEENTRY lpTraceEntry); // Pointer to trace entry address
// variable.
//$--HrTraceCreateEntryList-----------------------------------------------------
// Create a hop trace information list.
// -----------------------------------------------------------------------------
HRESULT HrTraceCreateEntryList( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
OUT LPTRACEINFO *lppTraceInfo); // Pointer to hop trace address variable
//$--HrTraceAppendEntryList-----------------------------------------------------
// Append to an existing hop trace information list.
// -----------------------------------------------------------------------------
HRESULT HrTraceAppendEntryList( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
IN OUT LPTRACEINFO *lppTraceInfo); // Pointer to hop trace address variable
//$--HrTraceGotoEntry-----------------------------------------------------------
// Goto the specified TRACEENTRY in a TRACEINFO
// -----------------------------------------------------------------------------
HRESULT HrTraceGotoEntry( // RETURNS: return code
IN LPTRACEINFO lpTraceInfo, // pointer to TRACEINFO
IN ULONG ulIndex, // index of TRACEENTRY in TRACEINFO
OUT LPTRACEENTRY *lppTraceEntry); // pointer to TRACEENTRY
//$--HrTraceGotoFirstEntry------------------------------------------------------
// Goto the first TRACEENTRY in a TRACEINFO
// -----------------------------------------------------------------------------
HRESULT HrTraceGotoFirstEntry( // RETURNS: return code
IN LPTRACEINFO lpTraceInfo, // pointer to TRACEINFO
OUT ULONG *lpulIndex, // index of TRACEENTRY in TRACEINFO
OUT LPTRACEENTRY *lppTraceEntry); // pointer to TRACEENTRY
//$--HrTraceGotoNextEntry-------------------------------------------------------
// Goto the next TRACEENTRY in a TRACEINFO
// -----------------------------------------------------------------------------
HRESULT HrTraceGotoNextEntry( // RETURNS: return code
IN LPTRACEINFO lpTraceInfo, // pointer to TRACEINFO
IN OUT ULONG *lpulIndex, // index of TRACEENTRY in TRACEINFO
OUT LPTRACEENTRY *lppTraceEntry); // pointer to TRACEENTRY
//$--HrTraceOpenEntry-----------------------------------------------------------
// Open a TRACEENTRY.
// -----------------------------------------------------------------------------
HRESULT HrTraceOpenEntry( // RETURNS: return code
IN LPTRACEENTRY lpTraceEntry, // pointer to TRACEENTRY
OUT LONG *plAction, // The routing action the tracing site
// took.
OUT FILETIME *pftArrivalTime, // The time at which the communique
// entered the tracing site.
OUT FILETIME *pftDeferredTime, // The time are which the tracing site
// released the message.
OUT LPSTR *lppszADMDName, // ADMD Name
OUT LPSTR *lppszCountryName, // Country Name
OUT LPSTR *lppszPRMDId, // PRMD Identifier
OUT LPSTR *lppszAttADMDName, // Attempted ADMD Name
OUT LPSTR *lppszAttCountryName, // Attempted Country Name
OUT LPSTR *lppszAttPRMDId); // Attempted PRMD Identifier
//$--HrTraceSetInfo-------------------------------------------------------------
// Set the trace-info on a message.
// -----------------------------------------------------------------------------
HRESULT HrTraceSetInfo( // RETURNS: return code
IN LONG lAction, // pointer to action
IN FILETIME *lpftArrivalTime, // pointer to arrival time
IN FILETIME *lpftDeferredTime, // pointer to deferred time
IN LPSTR lpszCountry, // pointer to country
IN LPSTR lpszADMD, // pointer to ADMD
IN LPSTR lpszPRMD, // pointer to PRMD
IN OUT LPMESSAGE lpMessage); // pointer to message
//$--HrTraceUpdateInfo----------------------------------------------------------
// Update the trace-info on a message.
// -----------------------------------------------------------------------------
HRESULT HrTraceUpdateInfo( // RETURNS: return code
IN LONG lAction, // pointer to action
IN FILETIME *lpftArrivalTime, // pointer to arrival time
IN FILETIME *lpftDeferredTime, // pointer to deferred time
IN LPSTR lpszCountry, // pointer to country
IN LPSTR lpszADMD, // pointer to ADMD
IN LPSTR lpszPRMD, // pointer to PRMD
IN OUT LPMESSAGE lpMessage); // pointer to message
//$--HrInternalTraceCopyEntry---------------------------------------------------
// Copy internal trace entry information to an internal trace entry structure.
// -----------------------------------------------------------------------------
HRESULT HrInternalTraceCopyEntry( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszMTAName, // MTA Name
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
IN LPSTR lpszAttMTAName, // Attempted MTA Name
OUT PINTTRACEENTRY lpTraceEntry); // Pointer to trace entry address
// variable.
//$--HrInternalTraceCreateEntryList---------------------------------------------
// Create an internal hop trace information list.
// -----------------------------------------------------------------------------
HRESULT HrInternalTraceCreateEntryList( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszMTAName, // MTA Name
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
IN LPSTR lpszAttMTAName, // Attempted MTA Name
OUT PINTTRACEINFO *lppTraceInfo); // Pointer to hop trace address variable
//$--HrInternalTraceAppendEntryList---------------------------------------------
// Append to an existing internal hop trace information list.
// -----------------------------------------------------------------------------
HRESULT HrInternalTraceAppendEntryList( // RETURNS: return code
IN LONG lAction, // The routing action the tracing site
// took.
IN FILETIME ftArrivalTime, // The time at which the communique
// entered the tracing site.
IN FILETIME ftDeferredTime, // The time are which the tracing site
// released the message.
IN LPSTR lpszADMDName, // ADMD Name
IN LPSTR lpszCountryName, // Country Name
IN LPSTR lpszPRMDId, // PRMD Identifier
IN LPSTR lpszMTAName, // MTA Name
IN LPSTR lpszAttADMDName, // Attempted ADMD Name
IN LPSTR lpszAttCountryName, // Attempted Country Name
IN LPSTR lpszAttPRMDId, // Attempted PRMD Identifier
IN LPSTR lpszAttMTAName, // Attempted MTA Name
IN OUT PINTTRACEINFO *lppTraceInfo);// Pointer to hop trace address variable
#ifdef __cplusplus
}
#endif // __cplusplus
#pragma option pop /*P_O_Pop*/
#endif