Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
2.4 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. mdwriter.h
  5. Abstract:
  6. This is the header file for snapshot writer class
  7. Author:
  8. Ming Lu (MingLu) 30-Apr-2000
  9. --*/
  10. #include <imd.h>
  11. #include <vss.h>
  12. #include <vswriter.h>
  13. class CIISVssWriter : public CVssWriter
  14. {
  15. public:
  16. CIISVssWriter()
  17. : m_pMdObject( NULL ),
  18. m_hTimer( NULL ),
  19. m_fMBLocked( FALSE ),
  20. m_mdhRoot( METADATA_MASTER_ROOT_HANDLE ),
  21. m_fCSInited( FALSE )
  22. {
  23. }
  24. ~CIISVssWriter()
  25. {
  26. if ( m_fCSInited )
  27. {
  28. DeleteCriticalSection( &m_csMBLock );
  29. }
  30. if( m_hTimer )
  31. {
  32. DBG_REQUIRE( CloseHandle( m_hTimer ) );
  33. m_hTimer = NULL;
  34. }
  35. if( m_pMdObject )
  36. {
  37. m_pMdObject->ComMDTerminate(TRUE);
  38. m_pMdObject->Release();
  39. m_pMdObject = NULL;
  40. }
  41. }
  42. BOOL Initialize(
  43. VOID
  44. );
  45. virtual bool STDMETHODCALLTYPE
  46. OnIdentify(
  47. IN IVssCreateWriterMetadata *pMetadata
  48. );
  49. virtual bool STDMETHODCALLTYPE
  50. OnPrepareBackup(
  51. IN IVssWriterComponents *pComponent
  52. );
  53. virtual bool STDMETHODCALLTYPE
  54. OnPrepareSnapshot(
  55. VOID
  56. );
  57. virtual bool STDMETHODCALLTYPE
  58. OnFreeze(
  59. VOID
  60. );
  61. virtual bool STDMETHODCALLTYPE
  62. OnThaw(
  63. VOID
  64. );
  65. virtual bool STDMETHODCALLTYPE
  66. OnAbort(
  67. VOID
  68. );
  69. virtual bool STDMETHODCALLTYPE
  70. OnBackupComplete(
  71. IN IVssWriterComponents * pComponent
  72. );
  73. BOOL
  74. ResetTimer(
  75. HANDLE hTimer,
  76. DWORD dwDuration
  77. );
  78. VOID
  79. UnlockMetaBase(
  80. VOID
  81. );
  82. private:
  83. IMDCOM * m_pMdObject;
  84. //
  85. // Handle to the internal timer object
  86. //
  87. HANDLE m_hTimer;
  88. //
  89. // Keep track of the status of metabase
  90. //
  91. BOOL m_fMBLocked;
  92. //
  93. // Metadata root handle
  94. //
  95. METADATA_HANDLE m_mdhRoot;
  96. CRITICAL_SECTION m_csMBLock;
  97. BOOL m_fCSInited;
  98. };
  99. DWORD
  100. WINAPI
  101. InitMDWriterThread(
  102. LPVOID
  103. );
  104. HRESULT
  105. InitializeMDWriter(
  106. OUT HANDLE *phMDWriterThread
  107. );
  108. VOID
  109. TerminateMDWriter(
  110. IN HANDLE hMDWriterThread
  111. );