123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730 |
- /*
- * Copyright 2005 - 2016 Zarafa and its licensors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- /**
- @file
- Free/busy Interface defines
- @defgroup libfreebusy Freebusy library
- @{
- The Free/Busy API allows mail providers to provide free/busy status information for specified
- user accounts within a specified time range. The free/busy status of a block of time on a user's
- calendar is one of the following: out-of-office, busy, tentative, or free.
- @par Create a Free/Busy Provider
- To provide free/busy information to mail users, a mail provider creates a free/busy provider
- and registers it with Outlook. The free/busy provider must implement the following interfaces.
- Note that a number of members in these interfaces are not supported and must return the specified
- return values. In particular, the Free/Busy API does not support write access to free/busy
- information and delegate access to accounts.
- - IFreeBusySupport \n
- This interface supports specification of interfaces that access free/busy data for
- specified users. It uses FBUser to identify a user.
- - IFreeBusyData \n
- This interface gets and sets a time range for a given user and returns an interface
- for enumerating free/busy blocks of data within this time range. It uses relative time
- to get and set this time range.
- - IEnumFBBlock \n
- This interface supports accessing and enumerating free/busy blocks of data for a user
- within a time range.
- @note
- An enumeration contains free/busy blocks that indicate the free/busy status of periods of
- time on a user's calendar, within a time range (specified by IFreeBusyData::EnumBlocks).
- Items on a calendar, such as appointments and meeting requests, form blocks in the enumeration.
- Items adjacent to one another on the calendar having the same free/busy status are combined to
- form one single block. A free period of time on a calendar also forms a block. Therefore, no two
- consecutive blocks in an enumeration would have the same free/busy status. These blocks do not
- overlap in time. When there are overlapping items on a calendar, Outlook merges these items to
- form non-overlapping free/busy blocks in the enumeration based on this order of precedence:
- out-of-office, busy, tentative.
- @par To register the free/busy provider with Outlook, the mail provider should:
- -# Register the free/busy provider with COM, providing a CLSID that allows access to the provider's
- implementation of IFreeBusySupport.
- -# Let Outlook know that the free/busy provider exists by setting this key in the system registry: \n
- HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office\\11.0\\Outlook\\SchedulingInformation\\FreeBusySupport
-
- For example, if the transport provider is SMTP, set the above key to the following data: \n
- - Name Type Value \n
- - SMTP REG_SZ {CLSID for respective implementation of IFreeBusySupport} \n
- In this scenario, Outlook will co-create the COM class and use it to retrieve free/busy information
- for any SMTP mail users. To support an address book and transport provider that use an address entry
- type other than SMTP, change the Name accordingly.
-
- \remarks
- During installation, free/busy providers should check if a registry setting for the the same address
- entry type already exists. If it does, the free/busy provider should overwrite the current provider
- for that address entry type, and restore to that provider when it uninstalls. However, if a user has
- installed more than one free/busy provider for the same address entry type, the user should uninstall
- these providers in the reverse order as installation (that is, always uninstall the latest provider),
- otherwise the registry may point to a provider that has already been uninstalled.
- @par API Components
- The Free/Busy API includes the following components:
- - Definitions
- - Constants for the Free/Busy API
- - Data Types
- - FBBlock_1
- - FBStatus
- - FBUser
- - sfbEvent
- - Interfaces
- - IEnumFBBlock
- - IFreeBusyData
- - IFreeBusySupport
- */
- #ifndef FREEBUSY_INCLUDED
- #define FREEBUSY_INCLUDED
- #include <mapix.h>
- #include <mapidefs.h>
- namespace KC {
- /**
- * Defines a free/busy event block. This is one block of a array of FBEvent blocks
- *
- * The event blocks are stored properties PR_FREEBUSY_*
- *
- * @todo rename sfbEvent to FBEvent
- */
- struct sfbEvent {
- short rtmStart; /**< The start time is the number of minutes
- between 12 AM Coordinated Universal Time (UTC) of the
- first day of the month and the start time of the event
- in UTC. */
- short rtmEnd; /**< The end time is the number of minutes between 12 AM UTC of
- the first day of the month and the end time of the event
- in UTC */
- };
- #define FB_DATE(yearmonth,daytime) ((((ULONG)(unsigned short)(yearmonth))<<16)|((ULONG)(unsigned short)(daytime)))
- #define FB_YEARMONTH(year, month) ((((unsigned short)year<<4)&0xFFF0) | ((unsigned short)month))
- #define FB_YEAR(yearmonth) ( ((unsigned short)yearmonth) >> 4 )
- #define FB_MONTH(yearmonth) ( ((unsigned short)yearmonth)&0x000F )
- /**
- * An enumeration for the free/busy status of free/busy blocks.
- * The free/busy status of a block of time determines how it is displayed on a
- * calendar: Free, Busy, Tentative, or Out of Office.
- */
- enum FBStatus {
- fbFree = 0, /**< Free */
- fbTentative = fbFree + 1, /**< Tentative */
- fbBusy = fbTentative + 1, /**< Busy */
- fbOutOfOffice = fbBusy + 1, /**< Out Of Office */
- fbKopanoAllBusy = 1000 /**< Internal used */
- };
- /**
- * Defines a free/busy block of data. This is an item on a calendar represented by
- * an appointment or meeting request.
- */
- struct FBBlock_1 {
- LONG m_tmStart; /**< Start time for the block, expressed in relative time. */
- LONG m_tmEnd; /**< End time for the block, expressed in relative time. */
- FBStatus m_fbstatus; /**< Free/busy status for this block, indicating whether the user is
- out-of-office, busy, tentative, or free, during the time period
- between m_tmStart and m_tmEnd. */
- };
- typedef struct FBBlock_1 *LPFBBlock_1;
- /**
- * Extends the free/busy block of data. It also stores the basedate of occurrence
- * for exceptions. For normal occurrences base date is same as start date
- */
- struct OccrInfo {
- FBBlock_1 fbBlock;
- time_t tBaseDate;
- };
- /**
- * Identifies a user that may or may not have free/busy data available.
- */
- struct FBUser {
- ULONG m_cbEid; /**< The length of the entry ID of the mail user as represented by the IMailUser interface. */
- LPENTRYID m_lpEid; /**< The entry ID of the mail user as represented by the IMailUser interface. */
- ULONG m_ulReserved; /**< This parameter is reserved for Outlook internal use and is not supported. */
- LPWSTR m_pwszReserved; /**< This parameter is reserved for Outlook internal use and is not supported.*/
- };
- typedef struct FBUser *LPFBUser;
- /**
- * @interface IFreeBusyUpdate
- * Updates the freebusy data
- *
- * The interface IFreeBusyUpdate
- * Provided by: Free/busy provider
- * Interface identifier: IID_IFreeBusyUpdate
- */
- class IFreeBusyUpdate : public IUnknown {
- public:
- /**
- * Unknown function, Possible reload the freebusydata ?
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall Reload() = 0;
- /**
- * Add freebusy blocks, May be called more than once successively
- * Alternative name: AddAppt
- * @param lpBlocks an array of free/busy blocks to publish
- * @param nBlocks Number of freebusy blocks
- */
- virtual HRESULT __stdcall PublishFreeBusy(FBBlock_1 *lpBlocks, ULONG nBlocks) = 0;
- /**
- * Unknown function, this member not supported
- *
- * @note The variables of the function are possible wrong should be like,
- int __stdcall IFreeBusyUpdate__RemoveAppt(int,int,int,int);
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall RemoveAppt() = 0;
- /**
- * Remove all Freebusy data
- * Alternative name: RemoveAllAppt
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall ResetPublishedFreeBusy() = 0;
- /**
- * Unknown function, this member not supported
- *
- * @note The variables of the function are possible wrong
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall ChangeAppt() = 0; //retn = 10h
- /**
- * Save the freebusydata with time frame between the begintime and endtime.
- */
- virtual HRESULT __stdcall SaveChanges(FILETIME ftBegin, FILETIME ftEnd) = 0;
- /**
- * Unknown function, this member not supported
- *
- * @note The variables of the function are possible wrong
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall GetFBTimes() = 0; //retn = 8?
- /**
- * Unknown function, this member not supported
- *
- * @note The variables of the function are possible wrong
- * @return This member must return S_OK
- */
- virtual HRESULT __stdcall Intersect() = 0; //retn = 10 ?
- };
- /**
- * @interface IEnumFBBlock
- * Supports accessing and enumerating free/busy blocks of data for a user within a time range.
- *
- * Class: IEnumFBBlock
- * Inherits from: IUnknown
- * Provided by: Free/busy provider
- * Interface identifier: IID_IEnumFBBlock
- *
- * An enumeration contains free/busy blocks of data that do not overlap in time. When
- * there are overlapping items on a calendar, Outlook merges these items to form
- * non-overlapping free/busy blocks in the enumeration based on this order of
- * precedence: out-of-office, busy, tentative.
- *
- * A free/busy provider obtains this interface and the enumeration for a time range for
- * a user through IFreeBusyData.
- *
- */
- class IEnumFBBlock : public IUnknown {
- public:
- /**
- * Gets the next specified number of blocks of free/busy data in an enumeration.
- *
- * @param[in] celt Number of free/busy data blocks in pblk to retrieve.
- * @param[in] pblk Pointer to an array of free/busy blocks. The array is allocated a size of celt.
- The requested free/busy blocks are returned in this array.
- * @param[out] pcfetch Number of free/busy blocks actually returned in pblk.
- *
- * @retval S_OK The requested number of blocks has been returned.
- * @retval S_FALSE The requested number of blocks has not been returned.
- */
- virtual HRESULT __stdcall Next(LONG celt, FBBlock_1 *pblk, LONG *pcfetch) = 0;
- /**
- * Skips a specified number of blocks of free/busy data.
- *
- * @param[in] celt Number of free/busy blocks to skip.
- *
- * @retval S_OK The requested number of blocks has been skiped.
- */
- virtual HRESULT __stdcall Skip(LONG celt) = 0;
- /**
- * Resets the enumerator by setting the cursor to the beginning.
- */
- virtual HRESULT __stdcall Reset() = 0;
- /**
- * Creates a copy of the enumerator, using the same time restriction
- * but setting the cursor to the beginning of the enumerator.
- *
- * @param[out] ppclone Pointer to pointer to the copy of IEnumFBBlock interface.
- *
- * @retval E_OUTOFMEMORY There is insufficient memory for making the copy.
-
- */
- virtual HRESULT __stdcall Clone(IEnumFBBlock **ppclone) = 0;
- /**
- * Restricts the enumeration to a specified time period.
- *
- * @param[in] ftmStart Start time to restrict enumeration.
- * @param[in] ftmEnd End time to restrict enumeration.
- *
- * @note This method also resets the enumeration.
- */
- virtual HRESULT __stdcall Restrict(FILETIME ftmStart, FILETIME ftmEnd) = 0;
- };
- /**
- * @interface IFreeBusyData
- * For a given user, gets and sets a time range and returns an interface for
- * enumerating free/busy blocks of data within this time range.
- *
- * Class: IFreeBusyData
- * Inherits from: IUnknown
- * Provided by: Free/busy provider
- * Interface identifier: IID_IFreeBusyData
- *
- * Most of the members in this interface are placeholders reserved for the internal
- * use of Outlook and are subject to change. Free/busy providers must implement them only
- * as specified, returning only the specified return values.
- */
- class IFreeBusyData : public IUnknown {
- public:
-
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall Reload(void*) = 0;
- /**
- * Gets an interface for a user that enumerates free/busy blocks of data within a
- * specified time range.
- *
- * @param[out] ppenumfb Interface to enumerate free/busy blocks.
- * @param[in] ftmStart Start time for enumeration. It is expressed in FILETIME.
- * @param[in] ftmEnd End time for enumeration. It is expressed in FILETIME.
- *
- * \remarks
- * Used to indicate the time range of calendar items for which to retrieve details.
- * The values of ftmStart and ftmEnd are cached and returned in a subsequent call of
- * IFreeBusyData::GetFBPublishRange.
- *
- * A free/busy provider can also subsequently use the returned IEnumFBBlock interface
- * to access the enumeration.
- */
- virtual HRESULT __stdcall EnumBlocks(IEnumFBBlock **ppenumfb, FILETIME ftmStart, FILETIME ftmEnd) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall Merge(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall GetDelegateInfo(void *) = 0;
- /**
- * This member not supported must return S_OK.
- */
- virtual HRESULT __stdcall FindFreeBlock(LONG, LONG, LONG, BOOL, LONG, LONG, LONG, FBBlock_1 *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall InterSect(void *, LONG, void *) = 0;
- /**
- * Sets the range of time for an enumeration of free/busy block of data for a user.
- *
- * @param[in] rtmStart
- * A relative time value for the start of free/busy information.
- * This value is the number of minutes since January 1, 1601.
- * @param[in] rtmEnd
- * A relative time value for the end of free/busy information.
- * This value is the number of minutes since January 1, 1601.
- *
- * \remarks
- * Used to indicate the time range of calendar items for which to retrieve details.
- * The values of ftmStart and ftmEnd are cached and returned in a subsequent call of
- * IFreeBusyData::GetFBPublishRange.
- */
- virtual HRESULT __stdcall SetFBRange(LONG rtmStart, LONG rtmEnd) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall NextFBAppt(void *, ULONG, void *, ULONG, void *, void *) = 0;
- /**
- * Gets a preset time range for an enumeration of free/busy blocks of data for a user.
- *
- * @param[out] prtmStart
- * A relative time value for the start of free/busy information.
- * This value is the number of minutes since January 1, 1601.
- * @param[out] prtmEnd
- * A relative time value for the end of free/busy information.
- * This value is the number of minutes since January 1, 1601.
- *
- * \remarks
- * A free/busy provider calls IFreeBusyData::EnumBlocks or IFreeBusyData::SetFBRange
- * to set the time range for an enumeration. IFreeBusyData::GetFBPublishRange must
- * return the cached values for the time range set by the most recent call for
- * IFreeBusyData::EnumBlocks or IFreeBusyData::SetFBRange.
- */
- virtual HRESULT __stdcall GetFBPublishRange(LONG *prtmStart, LONG *prtmEnd) = 0;
- };
- /**
- * @interface IFreeBusySupport
- * Supports specification of interfaces that access free/busy data for specified users.
- *
- * Class: IFreeBusySupport
- * Inherits from: IUnknown
- * Provided by: Free/busy provider
- * Interface identifier: IID_IFreeBusySupport
- *
- * \remarks
- * Most of the members in this interface are placeholders reserved for the internal
- * use of Outlook and are subject to change. Free/busy providers must implement them
- * only as specified, returning only the specified return values.
- *
- */
- class IFreeBusySupport : public IUnknown {
- public:
- /**
- * Initialize the freebusy support object for further uses of the interface.
- *
- * The first call to get the information to communicate with MAPI
- * The freebusysupport holds the session and store to use it in other functions
- *
- * @param[in] lpMAPISession
- * A sessionobject to open a store in other functions of IFreeBusySupport interface
- * @param[in] lpMsgStore
- * Userstore to save freebusy data. Passing NULL results in the freebusydata is readonly.
- * @param[in] bStore
- * Unknown data, is true if lpMsgStore isn't NULL
- *
- */
-
- virtual HRESULT __stdcall Open(IMAPISession* lpMAPISession, IMsgStore* lpMsgStore, BOOL bStore) = 0;
- /**
- * Close the free/busy support object data.
- *
- * It will release session and store which are initialized by IFreeBusySupport::Open
- *
- */
- virtual HRESULT __stdcall Close() = 0;
- /**
- * Returns, for each specified user, an interface for enumerating free/busy blocks
- * of data within a time range.
- *
- * @param[in] cMax
- * The number of IFreeBusyData interfaces to return.
- * @param[in] rgfbuser
- * The array of free/busy users to retrieve data for.
- * @param[in,out] prgfbdata
- * The array of IFreeBusyData interfaces corresponding to the rgfbuser array
- * of FBUser structures.
- *
- * @note This array of pointers is allocated by the caller and freed by the caller.
- * The actual interfaces pointed to are released when the caller is done with them.
- * @param[out] phrStatus
- * The array of HRESULT results for retrieving each corresponding IFreeBusyData
- * interface. The value may be NULL. A result is set to S_OK if corresponding
- * prgfbdata is valid.
- * @param[out] pcRead
- * The actual number of users for which an IFreeBusyData interface has been found.
- *
- * @retval S_OK
- * The call is successful.
- */
- virtual HRESULT __stdcall LoadFreeBusyData( ULONG cMax, FBUser *rgfbuser, IFreeBusyData **prgfbdata,
- HRESULT *phrStatus, ULONG *pcRead) = 0;//18
- /**
- * This member is a placeholder and is not supported, but hacked now.
- *
- * @param[in] cUsers
- * The number of users in lpUsers
- * @param[in] lpUsers
- * The array of user information
- * @param[out] lppFBUpdate
- * Should return array of IFreeBusyUpdate interfaces for each user.
- *
- * @note This array of pointers is allocated by the caller and freed by the caller.
- * The actual interfaces pointed to are released when the caller is done with them.
- * @param[out] lpcFBUpdate
- * actual returned interfaces in lppFBUpdate
- * @param lpData4
- * unknown param (always NULL? )
- *
- * @retval S_OK
- * The call is successful.
- * @retval E_NOTIMPL
- * The is not supported.
- *
- * @todo research for lpDate4
- */
- virtual HRESULT __stdcall LoadFreeBusyUpdate(ULONG cUsers, FBUser *lpUsers, IFreeBusyUpdate **lppFBUpdate, ULONG *lpcFBUpdate, void *lpData4) = 0;
- /**
- * This member not supported must return S_OK.
- */
- virtual HRESULT __stdcall CommitChanges() = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall GetDelegateInfo(FBUser, void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall SetDelegateInfo(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall AdviseFreeBusy(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall Reload(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall GetFBDetailSupport(void **, BOOL ) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall HrHandleServerSched(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall HrHandleServerSchedAccess() = 0;
- /**
- * This member not supported must return FALSE.
- */
- virtual BOOL __stdcall FShowServerSched(BOOL ) = 0;
- /**
- * This member not supported must return S_OK.
- */
- virtual HRESULT __stdcall HrDeleteServerSched() = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall GetFReadOnly(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- *
- * @note The guid of lpData is
- * DEFINE_GUID(IID_I????, 0x00067069, 0x0, 0x0, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46);//{00067069-0000-0000-C000-000000000046}
- * lpData vtable are total 24 functions
- */
- virtual HRESULT __stdcall SetLocalFB(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall PrepareForSync() = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall GetFBPublishMonthRange(void *) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall PublishRangeChanged() = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- *
- * Alternative name: Clean
- */
- virtual HRESULT __stdcall CleanTombstone() = 0;
- /**
- * Get delegate information of a user.
- *
- * @param[in] sFBUser The user information
- * @param[out] lpulStatus A 'unknown struct' with delegate information
- * @param[out] prtmStart The start time of the publish range (should be ULONG)
- * @param[out] prtmEnd The end time of the publish range (should be ULONG)
- *
- * @retval E_NOTIMPL
- * Not supported, client should send a meeting request
- *
- * @todo change type of prtmStart and prtmEnd from unsigned int to LONG
- * @todo change type lpulStatus to void or the right struct
- */
- virtual HRESULT __stdcall GetDelegateInfoEx(FBUser sFBUser, unsigned int *lpulStatus, unsigned int *prtmStart, unsigned int *prtmEnd) = 0;
- /**
- * This member not supported must return E_NOTIMPL.
- */
- virtual HRESULT __stdcall PushDelegateInfoToWorkspace() = 0;
- };
- /**
- * @interface IFreeBusySupportOutlook2000
- * Supports specification of interfaces that access free/busy data for specified users. used in Outlook 2000
- *
- * Class: IFreeBusySupportOutlook2000
- * Inherits from: IUnknown
- * Provided by: Free/busy provider
- * Interface identifier: IID_IFreeBusySupport
- *
- * \remarks
- * Most of the members in this interface are placeholders reserved for the internal
- * use of Outlook and are subject to change. Free/busy providers must implement them
- * only as specified, returning only the specified return values.
- *
- * \warning
- * Missing call is CleanTombstone. This is not support in outlook 2000
- *
- */
- class IFreeBusySupportOutlook2000 : public IUnknown {
- public:
- /*! @copydoc IFreeBusySupport::Open */
- virtual HRESULT __stdcall Open(IMAPISession* lpMAPISession, IMsgStore* lpMsgStore, BOOL bStore) = 0;
- /*! @copydoc IFreeBusySupport::Close */
- virtual HRESULT __stdcall Close() = 0;
- /*! @copydoc IFreeBusySupport::LoadFreeBusyData */
- virtual HRESULT __stdcall LoadFreeBusyData( ULONG cMax, FBUser *rgfbuser, IFreeBusyData **prgfbdata,
- HRESULT *phrStatus, ULONG *pcRead) = 0;//18
- /*! @copydoc IFreeBusySupport::LoadFreeBusyUpdate */
- virtual HRESULT __stdcall LoadFreeBusyUpdate(ULONG cUsers, FBUser *lpUsers, IFreeBusyUpdate **lppFBUpdate, ULONG *lpcFBUpdate, void *lpData4) = 0;
- /*! @copydoc IFreeBusySupport::CommitChanges */
- virtual HRESULT __stdcall CommitChanges() = 0;
- /*! @copydoc IFreeBusySupport::GetDelegateInfo */
- virtual HRESULT __stdcall GetDelegateInfo(FBUser, void *) = 0;
- /*! @copydoc IFreeBusySupport::SetDelegateInfo */
- virtual HRESULT __stdcall SetDelegateInfo(void *) = 0;
- /*! @copydoc IFreeBusySupport::AdviseFreeBusy */
- virtual HRESULT __stdcall AdviseFreeBusy(void *) = 0;
- /*! @copydoc IFreeBusySupport::Reload */
- virtual HRESULT __stdcall Reload(void *) = 0;
- /*! @copydoc IFreeBusySupport::GetFBDetailSupport */
- virtual HRESULT __stdcall GetFBDetailSupport(void **, BOOL ) = 0;
- /*! @copydoc IFreeBusySupport::HrHandleServerSched */
- virtual HRESULT __stdcall HrHandleServerSched(void *) = 0;
- /*! @copydoc IFreeBusySupport::HrHandleServerSchedAccess */
- virtual HRESULT __stdcall HrHandleServerSchedAccess() = 0;
- /*! @copydoc IFreeBusySupport::FShowServerSched */
- virtual BOOL __stdcall FShowServerSched(BOOL ) = 0;
- /*! @copydoc IFreeBusySupport::HrDeleteServerSched */
- virtual HRESULT __stdcall HrDeleteServerSched() = 0;
- /*! @copydoc IFreeBusySupport::GetFReadOnly */
- virtual HRESULT __stdcall GetFReadOnly(void *) = 0;
- /*! @copydoc IFreeBusySupport::SetLocalFB */
- virtual HRESULT __stdcall SetLocalFB(void *) = 0;
- /*! @copydoc IFreeBusySupport::PrepareForSync */
- virtual HRESULT __stdcall PrepareForSync() = 0;
- /*! @copydoc IFreeBusySupport::GetFBPublishMonthRange */
- virtual HRESULT __stdcall GetFBPublishMonthRange(void *) = 0;
- /*! @copydoc IFreeBusySupport::PublishRangeChanged */
- virtual HRESULT __stdcall PublishRangeChanged() = 0;
- /*!
- * @copydoc IFreeBusySupport::CleanTombstone
- *
- * Not supported in outlook 2000
- */
- // virtual HRESULT __stdcall CleanTombstone() = 0;
- /*! @copydoc IFreeBusySupport::GetDelegateInfoEx */
- virtual HRESULT __stdcall GetDelegateInfoEx(FBUser sFBUser, unsigned int *lpulStatus, unsigned int *prtmStart, unsigned int *prtmEnd) = 0;
- /*! @copydoc IFreeBusySupport::PushDelegateInfoToWorkspace */
- virtual HRESULT __stdcall PushDelegateInfoToWorkspace() = 0;
- };
- } /* namespace */
- #endif // FREEBUSY_INCLUDED
- /** @} */
|