|
|
#ifndef DATACLEN_H
#define DATACLEN_H
#include "common.h"
class CCleanerClassFactory : public IClassFactory { private: ULONG _cRef; // Reference count
DWORD _dwID; // what type of class factory are we?
~CCleanerClassFactory();
public: CCleanerClassFactory(DWORD); // IUnknown
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IClassFactory
STDMETHODIMP CreateInstance(IUnknown *, REFIID, void **); STDMETHODIMP LockServer(BOOL); };
// This is the actual Data Driven Cleaner Class
class CDataDrivenCleaner : public IEmptyVolumeCache { private: ULONG _cRef; // reference count
ULARGE_INTEGER _cbSpaceUsed; ULARGE_INTEGER _cbSpaceFreed; FILETIME _ftMinLastAccessTime; TCHAR _szVolume[MAX_PATH]; TCHAR _szFolder[MAX_PATH]; DWORD _dwFlags; TCHAR _filelist[MAX_PATH]; TCHAR _szCleanupCmdLine[MAX_PATH]; BOOL _bPurged; // TRUE if Purge() method was run
PCLEANFILESTRUCT _head; // head of the linked list of files
BOOL WalkForUsedSpace(LPCTSTR lpPath, IEmptyVolumeCacheCallBack *picb); BOOL WalkAllFiles(LPCTSTR lpPath, IEmptyVolumeCacheCallBack *picb); BOOL AddFileToList(LPCTSTR lpFile, ULARGE_INTEGER filesize, BOOL bDirectory); void PurgeFiles(IEmptyVolumeCacheCallBack *picb, BOOL bDoDirectories); void FreeList(PCLEANFILESTRUCT pCleanFile); BOOL LastAccessisOK(FILETIME ftFileLastAccess); ~CDataDrivenCleaner(void); public: CDataDrivenCleaner(void); // IUnknown
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IEmptyVolumeCache
STDMETHODIMP Initialize( HKEY hRegKey, LPCWSTR pszVolume, LPWSTR *ppszDisplayName, LPWSTR *ppszDescription, DWORD *pdwFlags ); STDMETHODIMP GetSpaceUsed( DWORDLONG *pdwSpaceUsed, IEmptyVolumeCacheCallBack *picb ); STDMETHODIMP Purge( DWORDLONG dwSpaceToFree, IEmptyVolumeCacheCallBack *picb ); STDMETHODIMP ShowProperties( HWND hwnd ); STDMETHODIMP Deactivate( DWORD *pdwFlags ); };
/*
**------------------------------------------------------------------------------ ** Class: CDataDrivenPropBag ** Purpose: This is the property bag used to allow string localization for the ** default data cleaner. This class implements multiple GUIDs each of ** which will return different values for the three valid properties. ** Notes: ** Mod Log: Created by ToddB (9/98) **------------------------------------------------------------------------------ */ class CDataDrivenPropBag : public IPropertyBag { private: ULONG _cRef; // reference count
// We use this object for several different property bags. Based on the CLSID used
// to create this object we set the value of _dwFilter to a known value so that we
// know which property bag we are.
DWORD _dwFilter;
~CDataDrivenPropBag(void);
public: CDataDrivenPropBag (DWORD); // IUnknown
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IPropertyBag
STDMETHODIMP Read(LPCOLESTR, VARIANT *, IErrorLog *); STDMETHODIMP Write(LPCOLESTR, VARIANT *); };
class CContentIndexCleaner : public IEmptyVolumeCache { private: IEmptyVolumeCache * _pDataDriven; LONG _cRef; ~CContentIndexCleaner(void);
public: CContentIndexCleaner(void); // IUnknown
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IEmptyVolumeCache
STDMETHODIMP Initialize( HKEY hRegKey, LPCWSTR pszVolume, LPWSTR *ppszDisplayName, LPWSTR *ppszDescription, DWORD *pdwFlags ); STDMETHODIMP GetSpaceUsed( DWORDLONG *pdwSpaceUsed, IEmptyVolumeCacheCallBack *picb ); STDMETHODIMP Purge( DWORDLONG dwSpaceToFree, IEmptyVolumeCacheCallBack *picb ); STDMETHODIMP ShowProperties( HWND hwnd ); STDMETHODIMP Deactivate( DWORD *pdwFlags ); };
#endif // DATACLEN_H
|