dataclen.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 9k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*
  2. **------------------------------------------------------------------------------
  3. ** Module:  System data driven cleaner
  4. ** File:    dataclen.h
  5. **
  6. ** Purpose: Defines the 'System data driven cleaner' for the IEmptyVolumeCache
  7. **          interface
  8. ** Notes:
  9. ** Mod Log: Created by Jason Cobb (2/97)
  10. **
  11. ** Copyright (c)1997 Microsoft Corporation, All Rights Reserved
  12. **------------------------------------------------------------------------------
  13. */
  14. #ifndef DATACLEN_H
  15. #define DATACLEN_H
  16. #ifndef COMMON_H
  17.     #include "common.h"
  18. #endif
  19. /*
  20. **------------------------------------------------------------------------------
  21. ** Project include files 
  22. **------------------------------------------------------------------------------
  23. */
  24. /*
  25. **------------------------------------------------------------------------------
  26. ** Class Declarations
  27. **------------------------------------------------------------------------------
  28. */
  29. /*
  30. **------------------------------------------------------------------------------
  31. ** Class:   CDataDrivenCleanerClassFactory
  32. ** Purpose: Manufactures instances of our CDataDrivenCleaner object
  33. ** Notes:   
  34. ** Mod Log: Created by Jason Cobb (2/97)
  35. **------------------------------------------------------------------------------
  36. */ 
  37. class CCleanerClassFactory : public IClassFactory
  38. {
  39. private:
  40. protected:
  41. //
  42. // Data
  43. //
  44. ULONG   _cRef;     // Reference count
  45.     DWORD   _dwID;     // what type of class factory are we?
  46. public:
  47. //
  48. // Constructors
  49. //
  50. CCleanerClassFactory(DWORD);
  51. ~CCleanerClassFactory();
  52.     //
  53. // IUnknown interface members
  54. //
  55.     STDMETHODIMP            QueryInterface(REFIID, LPVOID FAR *);
  56.     STDMETHODIMP_(ULONG)    AddRef();
  57.     STDMETHODIMP_(ULONG)    Release();
  58. //   
  59. // IClassFactory interface members
  60.     //
  61.     STDMETHODIMP            CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
  62.     STDMETHODIMP            LockServer(BOOL);
  63. };
  64. typedef CCleanerClassFactory *LPCCLEANERCLASSFACTORY;
  65. /*
  66. **------------------------------------------------------------------------------
  67. ** Class:   CDataDrivenCleaner
  68. ** Purpose: This is the actual Data Driven Cleaner Class
  69. ** Notes:   
  70. ** Mod Log: Created by Jason Cobb (2/97)
  71. **------------------------------------------------------------------------------
  72. */ 
  73. class CDataDrivenCleaner : public IEmptyVolumeCache
  74. {
  75. private:
  76. protected:
  77. //
  78.     // Data
  79. //
  80. ULONG               _cRef;                 // reference count
  81. LPDATAOBJECT        _lpdObject;            // Last Data object
  82.     ULARGE_INTEGER      _cbSpaceUsed;
  83.     ULARGE_INTEGER _cbSpaceFreed;
  84.     FILETIME _ftMinLastAccessTime;
  85.     TCHAR               _szVolume[MAX_PATH];
  86. TCHAR               _szFolder[MAX_PATH];
  87. DWORD               _dwFlags;
  88. TCHAR               _filelist[MAX_PATH];
  89. TCHAR _CleanupString[MAX_PATH];
  90. BOOL _bPurged; // TRUE if Purge() method was run
  91. PCLEANFILESTRUCT    _head;                   // head of the linked list of files
  92. BOOL WalkForUsedSpace(PTCHAR lpPath, IEmptyVolumeCacheCallBack *picb);
  93. BOOL WalkAllFiles(PTCHAR lpPath, IEmptyVolumeCacheCallBack *picb);
  94. BOOL AddFileToList(PTCHAR lpFile, ULARGE_INTEGER filesize, BOOL bDirectory);
  95. void PurgeFiles(IEmptyVolumeCacheCallBack *picb, BOOL bDoDirectories);
  96. void FreeList(PCLEANFILESTRUCT pCleanFile);
  97. BOOL bLastAccessisOK(FILETIME ftFileLastAccess);
  98. BOOL bW98ProcessIsRunning(HKEY hRegKey);
  99. public:
  100. //
  101.     // Constructors
  102. //
  103. CDataDrivenCleaner (void);
  104. ~CDataDrivenCleaner (void);
  105. //
  106.     // IUnknown interface members
  107. //
  108. STDMETHODIMP            QueryInterface (REFIID, LPVOID FAR *);
  109. STDMETHODIMP_(ULONG)    AddRef (void);
  110. STDMETHODIMP_(ULONG)    Release (void);
  111.     //
  112.     // IEmptyVolumeCache interface members
  113.     //
  114.     STDMETHODIMP    Initialize(
  115.                                 HKEY hRegKey,
  116.                                 LPCWSTR pszVolume,
  117.                                 LPWSTR *ppszDisplayName,
  118.                                 LPWSTR *ppszDescription,
  119.                                 DWORD *pdwFlags
  120.                                 );
  121.                                 
  122.     STDMETHODIMP    GetSpaceUsed(
  123.                                 DWORDLONG *pdwSpaceUsed,
  124.                                 IEmptyVolumeCacheCallBack *picb
  125.                                 );
  126.                                 
  127.     STDMETHODIMP    Purge(
  128.                                 DWORDLONG dwSpaceToFree,
  129.                                 IEmptyVolumeCacheCallBack *picb
  130.                                 );
  131.                                 
  132.     STDMETHODIMP    ShowProperties(
  133.                                 HWND hwnd
  134.                                 );
  135.                                 
  136.     STDMETHODIMP    Deactivate(
  137.                                 DWORD *pdwFlags
  138.                                 );                                                                                                                                
  139. };
  140. typedef CDataDrivenCleaner *LPCDATADRIVENCLEANER;
  141. /*
  142. **------------------------------------------------------------------------------
  143. ** Class:   CDataDrivenPropBag
  144. ** Purpose: This is the property bag used to allow string localization for the
  145. **          default data cleaner.  This class implements multiple GUIDs each of
  146. **          which will return different values for the three valid properties.
  147. ** Notes:   
  148. ** Mod Log: Created by ToddB (9/98)
  149. **------------------------------------------------------------------------------
  150. */ 
  151. class CDataDrivenPropBag : public IPropertyBag
  152. {
  153. private:
  154. protected:
  155. //
  156.     // Data
  157. //
  158. ULONG               _cRef;                 // reference count
  159.     // We use this object for several different property bags.  Based on the CLSID used
  160.     // to create this object we set the value of _dwFilter to a known value so that we
  161.     // know which property bag we are.
  162. DWORD               _dwFilter;
  163. public:
  164. //
  165.     // Constructors
  166. //
  167. CDataDrivenPropBag (DWORD);
  168. ~CDataDrivenPropBag (void);
  169. //
  170.     // IUnknown interface members
  171. //
  172. STDMETHODIMP            QueryInterface (REFIID, LPVOID FAR *);
  173. STDMETHODIMP_(ULONG)    AddRef (void);
  174. STDMETHODIMP_(ULONG)    Release (void);
  175.     //
  176.     // IPropertyBag interface members
  177.     //
  178.     STDMETHODIMP            Read (LPCOLESTR, VARIANT *, IErrorLog *);
  179.     STDMETHODIMP            Write (LPCOLESTR, VARIANT *);
  180. };
  181. typedef CDataDrivenPropBag *LPCDATADRIVENPROPBAG;
  182. #ifdef WINNT
  183. class CContentIndexCleaner : public IEmptyVolumeCache
  184. {
  185.     private:
  186.         IEmptyVolumeCache * _pDataDriven;
  187.         LONG _cRef;
  188.         
  189.     public:
  190.      //
  191.         // Constructors
  192.      //
  193.      CContentIndexCleaner(void);
  194.      ~CContentIndexCleaner(void);
  195.      //
  196.         // IUnknown interface members
  197.      //
  198.      STDMETHODIMP            QueryInterface (REFIID, LPVOID FAR *);
  199.      STDMETHODIMP_(ULONG)    AddRef (void);
  200.      STDMETHODIMP_(ULONG)    Release (void);
  201.     
  202.         //
  203.         // IEmptyVolumeCache interface members
  204.         //
  205.         STDMETHODIMP    Initialize(
  206.                                     HKEY hRegKey,
  207.                                     LPCWSTR pszVolume,
  208.                                     LPWSTR *ppszDisplayName,
  209.                                     LPWSTR *ppszDescription,
  210.                                     DWORD *pdwFlags
  211.                                     );
  212.                                     
  213.         STDMETHODIMP    GetSpaceUsed(
  214.                                     DWORDLONG *pdwSpaceUsed,
  215.                                     IEmptyVolumeCacheCallBack *picb
  216.                                     );
  217.                                     
  218.         STDMETHODIMP    Purge(
  219.                                     DWORDLONG dwSpaceToFree,
  220.                                     IEmptyVolumeCacheCallBack *picb
  221.                                     );
  222.                                     
  223.         STDMETHODIMP    ShowProperties(
  224.                                     HWND hwnd
  225.                                     );
  226.                                     
  227.         STDMETHODIMP    Deactivate(
  228.                                     DWORD *pdwFlags
  229.                                     );                                                                                                                                
  230.             
  231. };
  232. typedef CContentIndexCleaner *LPCCONTENTINDEXCLEANER;
  233. #endif // WINNT
  234. #endif // DATACLEN_H
  235. /*
  236. **------------------------------------------------------------------------------
  237. ** End of File
  238. **------------------------------------------------------------------------------
  239. */