windows-nt/Source/XPSP1/NT/shell/applets/cleanup/dataclen/dataclen.h
2020-09-26 16:20:57 +08:00

173 lines
4.8 KiB
C++

#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