home *** CD-ROM | disk | FTP | other *** search
- // --edkmapi.h------------------------------------------------------------------
- //
- // Header file for module containing MAPI utility functions.
- //
- // Copyright 1986 - 1998 Microsoft Corporation. All Rights Reserved.
- // -----------------------------------------------------------------------------
- #ifndef _EDKMAPI_H
- #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
-
- #endif
-