|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1998.
//
// File: schedif.h
//
// Contents: interfaces for synchronization scheduling
//
// Interfaces: IEnumSyncSchedules
// ISyncSchedule
// IEnumSyncItems
//
// Classes: CEnumSyncSchedules
// CSyncSchedule
// CEnumSyncItems
//
// Notes:
//
// History: 27-Feb-98 Susia Created.
//
//--------------------------------------------------------------------------
#ifndef _SYNCSCHED_IF_
#define _SYNCSCHED_IF_
#define MAX_SCHEDULENAMESIZE (GUID_SIZE + 1 + MAX_DOMANDANDMACHINENAMESIZE + 1)
//+--------------------------------------------------------------
//
// Class: CEnumSyncSchedules
//
// History: 27-Feb-98 SusiA Created
//
//---------------------------------------------------------------
class CEnumSyncSchedules : public IEnumSyncSchedules { public: CEnumSyncSchedules(IEnumWorkItems *pIEnumWorkItems, ITaskScheduler *pITaskScheduler); ~CEnumSyncSchedules();
// IUnknown members
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// IEnumSyncSchedules methods
STDMETHODIMP Next(ULONG celt, SYNCSCHEDULECOOKIE *pSyncSchedCookie, ULONG *pceltFetched);
STDMETHODIMP Skip(ULONG celt);
STDMETHODIMP Reset(void);
STDMETHODIMP Clone(IEnumSyncSchedules **ppEnumSyncSchedules);
private: ULONG m_cRef; IEnumWorkItems *m_pIEnumWorkItems; ITaskScheduler *m_pITaskScheduler; BOOL IsSyncMgrSched(LPCWSTR pwstrTaskName); BOOL IsSyncMgrSchedHidden(LPCWSTR pwstrTaskName); BOOL VerifyScheduleSID(LPCWSTR pwstrTaskName); BOOL CheckForTaskNameKey(LPCWSTR pwstrTaskName); }; typedef CEnumSyncSchedules *LPENUMSYNCSCHEDULES;
typedef struct tagCACHELIST { struct tagCACHELIST *pNext; CLSID phandlerID; SYNCMGRITEMID itemID; DWORD dwCheckState; } CACHELIST;
//+--------------------------------------------------------------
//
// Class: CSyncSchedule
//
// History: 27-Feb-98 SusiA Created
//
//---------------------------------------------------------------
class CSyncSchedule : public ISyncSchedulep {
public: CSyncSchedule(ITask *pITask, LPTSTR ptstrGUIDName, LPTSTR ptstrFriendlyName); ~CSyncSchedule();
// IUnknown members
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// ISyncSchedule methods
STDMETHODIMP GetFlags(DWORD *pdwFlags);
STDMETHODIMP SetFlags(DWORD dwFlags);
STDMETHODIMP GetConnection(DWORD *pcbSize, LPWSTR pwszConnectionName, DWORD *pdwConnType);
STDMETHODIMP SetConnection(LPCWSTR pwszConnectionName, DWORD dwConnType);
STDMETHODIMP GetScheduleName(DWORD *pcbSize, LPWSTR pwszScheduleName);
STDMETHODIMP SetScheduleName(LPCWSTR pwszScheduleName);
STDMETHODIMP GetScheduleCookie(SYNCSCHEDULECOOKIE *pSyncSchedCookie);
STDMETHODIMP SetAccountInformation(LPCWSTR pwszAccountName, LPCWSTR pwszPassword);
STDMETHODIMP GetAccountInformation(DWORD *pcbSize, LPWSTR pwszAccountName);
STDMETHODIMP GetTrigger(ITaskTrigger ** ppTrigger);
STDMETHODIMP GetNextRunTime(SYSTEMTIME * pstNextRun);
STDMETHODIMP GetMostRecentRunTime(SYSTEMTIME * pstRecentRun);
STDMETHODIMP EditSyncSchedule(HWND hParent, DWORD dwReserved);
STDMETHODIMP AddItem(LPSYNC_HANDLER_ITEM_INFO pHandlerItemInfo); STDMETHODIMP RegisterItems( REFCLSID pHandlerID, SYNCMGRITEMID *pItemID);
STDMETHODIMP UnregisterItems( REFCLSID pHandlerID, SYNCMGRITEMID *pItemID); STDMETHODIMP SetItemCheck(REFCLSID pHandlerID, SYNCMGRITEMID *pItemID, DWORD dwCheckState);
STDMETHODIMP GetItemCheck(REFCLSID pHandlerID, SYNCMGRITEMID *pItemID, DWORD *pdwCheckState);
STDMETHODIMP EnumItems(REFCLSID pHandlerID, IEnumSyncItems **ppEnumItems);
STDMETHODIMP Save();
STDMETHODIMP GetITask(ITask **ppITask);
// ISyncSchedulp methods
STDMETHODIMP GetHandlerInfo(REFCLSID pHandlerID,LPSYNCMGRHANDLERINFO *ppSyncMgrHandlerInfo);
private: SCODE Initialize(); SCODE LoadAllHandlers(); SCODE LoadOneHandler(REFCLSID pHandlerID); SCODE SetDefaultCredentials(); SCODE GetScheduleGUIDName(DWORD *pcbSize, LPTSTR ptszScheduleName); SCODE CacheItemCheckState(REFCLSID phandlerID, SYNCMGRITEMID itemID, DWORD dwCheckState); SCODE RetreiveCachedItemCheckState(REFCLSID phandlerID, SYNCMGRITEMID itemID, DWORD *pdwCheckState);
SCODE ApplyCachedItemsCheckState(REFCLSID phandlerID); SCODE PurgeCachedItemsCheckState(REFCLSID phandlerID); SCODE WriteOutAndPurgeCache(void);
CACHELIST *m_pFirstCacheEntry;
ULONG m_cRef; ITask *m_pITask; //
// Since we don't expose functions to get and set
// the GUID name, this one is a TCHAR for ease of writing the registry
TCHAR m_ptstrGUIDName[MAX_PATH + 1]; WCHAR m_pwszFriendlyName[MAX_PATH + 1]; WCHAR m_pwszConnectionName[RAS_MaxEntryName + 1]; DWORD m_dwConnType; BOOL m_fCleanReg;
LPCONNECTIONSETTINGS m_pConnectionSettings; CHndlrQueue *m_HndlrQueue; WORD m_iTrigger; ITaskTrigger *m_pITrigger; BOOL m_fNewSchedule;
friend class CSyncMgrSynchronize; friend class CSchedSyncPage;
}; typedef CSyncSchedule *LPSYNCSCHEDULE;
//+--------------------------------------------------------------
//
// Class: CEnumSyncItems
//
// History: 27-Feb-98 SusiA Created
//
//---------------------------------------------------------------
class CEnumSyncItems : public IEnumSyncItems { friend class CEnumSyncItems;
public: CEnumSyncItems(REFGUID pHandlerId, CHndlrQueue *pHndlrQueue); ~CEnumSyncItems();
// IUnknown members
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// IEnumSyncItems methods
STDMETHODIMP Next(ULONG celt, LPSYNC_HANDLER_ITEM_INFO rgelt, ULONG * pceltFetched);
STDMETHODIMP Skip(ULONG celt);
STDMETHODIMP Reset(void);
STDMETHODIMP Clone(IEnumSyncItems ** ppEnumSyncItems);
private: SCODE SetHandlerAndItem(WORD wHandlerID, WORD wItemID); ULONG m_cRef; GUID m_HandlerId; WORD m_wItemId; WORD m_wHandlerId; CHndlrQueue *m_HndlrQueue; BOOL m_fAllHandlers; }; typedef CEnumSyncItems *LPENUMSYNCITEMS;
#endif // _SYNCSCHED_IF_
|