mirror of https://github.com/tongzx/nt5src
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.
719 lines
16 KiB
719 lines
16 KiB
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Abstract:
|
|
|
|
@doc
|
|
@module Writer.h | Declaration of Writer
|
|
@end
|
|
|
|
Author:
|
|
|
|
Adi Oltean [aoltean] 08/18/1999
|
|
|
|
TBD:
|
|
|
|
Add comments.
|
|
|
|
Revision History:
|
|
|
|
Name Date Comments
|
|
aoltean 08/18/1999 Created
|
|
brianb 03/28/2000 hid implementation details
|
|
mikejohn 09/18/2000 176860: Added calling convention methods where missing
|
|
|
|
--*/
|
|
|
|
#ifndef __CVSS_WRITER_H_
|
|
#define __CVSS_WRITER_H_
|
|
|
|
// declaration of how application data is used
|
|
typedef enum VSS_USAGE_TYPE
|
|
{
|
|
VSS_UT_UNDEFINED = 0,
|
|
VSS_UT_BOOTABLESYSTEMSTATE, // formerly "system state"
|
|
VSS_UT_SYSTEMSERVICE, // system service
|
|
VSS_UT_USERDATA, // user data
|
|
VSS_UT_OTHER // unclassified
|
|
};
|
|
|
|
typedef enum VSS_SOURCE_TYPE
|
|
{
|
|
VSS_ST_UNDEFINED = 0,
|
|
VSS_ST_TRANSACTEDDB, // transacted db (e.g., SQL Server, JET Blue)
|
|
VSS_ST_NONTRANSACTEDDB, // not transacted(e.g., Jet Red)
|
|
VSS_ST_OTHER // unclassified
|
|
};
|
|
|
|
typedef enum VSS_RESTOREMETHOD_ENUM
|
|
{
|
|
VSS_RME_UNDEFINED = 0,
|
|
VSS_RME_RESTORE_IF_NOT_THERE,
|
|
VSS_RME_RESTORE_IF_CAN_REPLACE,
|
|
VSS_RME_STOP_RESTORE_START,
|
|
VSS_RME_RESTORE_TO_ALTERNATE_LOCATION,
|
|
VSS_RME_RESTORE_AT_REBOOT,
|
|
VSS_RME_CUSTOM
|
|
};
|
|
|
|
typedef enum VSS_WRITERRESTORE_ENUM
|
|
{
|
|
VSS_WRE_UNDEFINED = 0,
|
|
VSS_WRE_NEVER,
|
|
VSS_WRE_IF_REPLACE_FAILS,
|
|
VSS_WRE_ALWAYS
|
|
};
|
|
|
|
|
|
typedef enum VSS_COMPONENT_TYPE
|
|
{
|
|
VSS_CT_UNDEFINED = 0,
|
|
VSS_CT_DATABASE,
|
|
VSS_CT_FILEGROUP
|
|
};
|
|
|
|
typedef enum VSS_ALTERNATE_WRITER_STATE
|
|
{
|
|
VSS_AWS_UNDEFINED = 0,
|
|
VSS_AWS_NO_ALTERNATE_WRITER,
|
|
VSS_AWS_ALTERNATE_WRITER_EXISTS,
|
|
VSS_AWS_THIS_IS_ALTERNATE_WRITER
|
|
};
|
|
|
|
// Flags to specify which types of events to receive. Used in Subscribe.
|
|
typedef enum VSS_SUBSCRIBE_MASK
|
|
{
|
|
VSS_SM_POST_SNAPSHOT_FLAG = 0x00000001,
|
|
VSS_SM_BACKUP_EVENTS_FLAG = 0x00000002,
|
|
VSS_SM_RESTORE_EVENTS_FLAG = 0x00000004,
|
|
VSS_SM_IO_THROTTLING_FLAG = 0x00000008,
|
|
VSS_SM_ALL_FLAGS = 0xffffffff
|
|
};
|
|
|
|
// enumeration of restore targets
|
|
typedef enum VSS_RESTORE_TARGET
|
|
{
|
|
VSS_RT_UNDEFINED = 0,
|
|
VSS_RT_ORIGINAL,
|
|
VSS_RT_ALTERNATE,
|
|
VSS_RT_NEW,
|
|
VSS_RT_DIRECTED
|
|
};
|
|
|
|
// enumeration of file restore status codes
|
|
typedef enum VSS_FILE_RESTORE_STATUS
|
|
{
|
|
VSS_RS_UNDEFINED = 0,
|
|
VSS_RS_NONE,
|
|
VSS_RS_ALL,
|
|
VSS_RS_FAILED
|
|
};
|
|
|
|
|
|
|
|
// file description
|
|
class IVssWMFiledesc : public IUnknown
|
|
{
|
|
public:
|
|
// get path to toplevel directory
|
|
STDMETHOD(GetPath)(OUT BSTR *pbstrPath) = 0;
|
|
|
|
// get filespec (may include wildcards)
|
|
STDMETHOD(GetFilespec)(OUT BSTR *pbstrFilespec) = 0;
|
|
|
|
// is path a directory or root of a tree
|
|
STDMETHOD(GetRecursive)(OUT bool *pbRecursive) = 0;
|
|
|
|
// alternate location for files
|
|
STDMETHOD(GetAlternateLocation)(OUT BSTR *pbstrAlternateLocation) = 0;
|
|
};
|
|
|
|
|
|
// backup components interface
|
|
class IVssComponent : public IUnknown
|
|
{
|
|
public:
|
|
// obtain logical path of component
|
|
STDMETHOD(GetLogicalPath)(OUT BSTR *pbstrPath) = 0;
|
|
|
|
// obtain component type(VSS_CT_DATABASE or VSS_CT_FILEGROUP)
|
|
STDMETHOD(GetComponentType)(VSS_COMPONENT_TYPE *pct) = 0;
|
|
|
|
// get component name
|
|
STDMETHOD(GetComponentName)(OUT BSTR *pbstrName) = 0;
|
|
|
|
// determine whether the component was successfully backed up.
|
|
STDMETHOD(GetBackupSucceeded)(OUT bool *pbSucceeded) = 0;
|
|
|
|
// get altermative location mapping count
|
|
STDMETHOD(GetAlternateLocationMappingCount)
|
|
(
|
|
OUT UINT *pcMappings
|
|
) = 0;
|
|
|
|
// get a paraticular alternative location mapping
|
|
STDMETHOD(GetAlternateLocationMapping)
|
|
(
|
|
IN UINT iMapping,
|
|
OUT IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// set the backup metadata for a component
|
|
STDMETHOD(SetBackupMetadata)
|
|
(
|
|
IN LPCWSTR wszData
|
|
) = 0;
|
|
|
|
// get the backup metadata for a component
|
|
STDMETHOD(GetBackupMetadata)
|
|
(
|
|
OUT BSTR *pbstrData
|
|
) = 0;
|
|
|
|
// indicate that only ranges in the file are to be backed up
|
|
STDMETHOD(AddPartialFile)
|
|
(
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilename,
|
|
IN LPCWSTR wszRanges,
|
|
IN LPCWSTR wszMetadata
|
|
) = 0;
|
|
|
|
// get count of partial file declarations
|
|
STDMETHOD(GetPartialFileCount)
|
|
(
|
|
OUT UINT *pcPartialFiles
|
|
) = 0;
|
|
|
|
// get a partial file declaration
|
|
STDMETHOD(GetPartialFile)
|
|
(
|
|
IN UINT iPartialFile,
|
|
OUT BSTR *pbstrPath,
|
|
OUT BSTR *pbstrFilename,
|
|
OUT BSTR *pbstrRange,
|
|
OUT BSTR *pbstrMetadata
|
|
) = 0;
|
|
|
|
// determine if the component is selected to be restored
|
|
STDMETHOD(IsSelectedForRestore)
|
|
(
|
|
OUT bool *pbSelectedForRestore
|
|
) = 0;
|
|
|
|
STDMETHOD(GetAdditionalRestores)
|
|
(
|
|
OUT bool *pbAdditionalRestores
|
|
) = 0;
|
|
|
|
// add a new location target for a file to be restored
|
|
STDMETHOD(AddNewTarget)
|
|
(
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFileName,
|
|
IN bool bRecursive,
|
|
IN LPCWSTR wszAlternatePath
|
|
) = 0;
|
|
|
|
// get count of new target specifications
|
|
STDMETHOD(GetNewTargetCount)
|
|
(
|
|
OUT UINT *pcNewTarget
|
|
) = 0;
|
|
|
|
STDMETHOD(GetNewTarget)
|
|
(
|
|
IN UINT iNewTarget,
|
|
OUT IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// add a directed target specification
|
|
STDMETHOD(AddDirectedTarget)
|
|
(
|
|
IN LPCWSTR wszSourcePath,
|
|
IN LPCWSTR wszSourceFilename,
|
|
IN LPCWSTR wszSourceRangeList,
|
|
IN LPCWSTR wszDestinationPath,
|
|
IN LPCWSTR wszDestinationFilename,
|
|
IN LPCWSTR wszDestinationRangeList
|
|
) = 0;
|
|
|
|
// get count of directed target specifications
|
|
STDMETHOD(GetDirectedTargetCount)
|
|
(
|
|
OUT UINT *pcDirectedTarget
|
|
) = 0;
|
|
|
|
// obtain a particular directed target specification
|
|
STDMETHOD(GetDirectedTarget)
|
|
(
|
|
IN UINT iDirectedTarget,
|
|
OUT BSTR *pbstrSourcePath,
|
|
OUT BSTR *pbstrSourceFileName,
|
|
OUT BSTR *pbstrSourceRangeList,
|
|
OUT BSTR *pbstrDestinationPath,
|
|
OUT BSTR *pbstrDestinationFilename,
|
|
OUT BSTR *pbstrDestinationRangeList
|
|
) = 0;
|
|
|
|
// set restore metadata associated with the component
|
|
STDMETHOD(SetRestoreMetadata)
|
|
(
|
|
IN LPCWSTR wszRestoreMetadata
|
|
) = 0;
|
|
|
|
// obtain restore metadata associated with the component
|
|
STDMETHOD(GetRestoreMetadata)
|
|
(
|
|
OUT BSTR *pbstrRestoreMetadata
|
|
) = 0;
|
|
|
|
// set the restore target
|
|
STDMETHOD(SetRestoreTarget)
|
|
(
|
|
IN VSS_RESTORE_TARGET target
|
|
) = 0;
|
|
|
|
// obtain the restore target
|
|
STDMETHOD(GetRestoreTarget)
|
|
(
|
|
OUT VSS_RESTORE_TARGET *pTarget
|
|
) = 0;
|
|
|
|
// set failure message during pre restore event
|
|
STDMETHOD(SetPreRestoreFailureMsg)
|
|
(
|
|
IN LPCWSTR wszPreRestoreFailureMsg
|
|
) = 0;
|
|
|
|
// obtain failure message during pre restore event
|
|
STDMETHOD(GetPreRestoreFailureMsg)
|
|
(
|
|
OUT BSTR *pbstrPreRestoreFailureMsg
|
|
) = 0;
|
|
|
|
// set the failure message during the post restore event
|
|
STDMETHOD(SetPostRestoreFailureMsg)
|
|
(
|
|
IN LPCWSTR wszPostRestoreFailureMsg
|
|
) = 0;
|
|
|
|
// obtain the failure message set during the post restore event
|
|
STDMETHOD(GetPostRestoreFailureMsg)
|
|
(
|
|
OUT BSTR *pbstrPostRestoreFailureMsg
|
|
) = 0;
|
|
|
|
// set the backup stamp of the backup
|
|
STDMETHOD(SetBackupStamp)
|
|
(
|
|
IN LPCWSTR wszBackupStamp
|
|
) = 0;
|
|
|
|
// obtain the stamp of the backup
|
|
STDMETHOD(GetBackupStamp)
|
|
(
|
|
OUT BSTR *pbstrBackupStamp
|
|
) = 0;
|
|
|
|
|
|
// obtain the backup stamp that the differential or incremental
|
|
// backup is baed on
|
|
STDMETHOD(GetPreviousBackupStamp)
|
|
(
|
|
OUT BSTR *pbstrBackupStamp
|
|
) = 0;
|
|
|
|
// obtain backup options for the writer
|
|
STDMETHOD(GetBackupOptions)
|
|
(
|
|
OUT BSTR *pbstrBackupOptions
|
|
) = 0;
|
|
|
|
// obtain the restore options
|
|
STDMETHOD(GetRestoreOptions)
|
|
(
|
|
OUT BSTR *pbstrRestoreOptions
|
|
) = 0;
|
|
|
|
// obtain count of subcomponents to be restored
|
|
STDMETHOD(GetRestoreSubcomponentCount)
|
|
(
|
|
OUT UINT *pcRestoreSubcomponent
|
|
) = 0;
|
|
|
|
// obtain a particular subcomponent to be restored
|
|
STDMETHOD(GetRestoreSubcomponent)
|
|
(
|
|
UINT iComponent,
|
|
OUT BSTR *pbstrLogicalPath,
|
|
OUT BSTR *pbstrComponentName,
|
|
OUT bool *pbRepair
|
|
) = 0;
|
|
|
|
|
|
// obtain whether files were successfully restored
|
|
STDMETHOD(GetFileRestoreStatus)
|
|
(
|
|
OUT VSS_FILE_RESTORE_STATUS *pStatus
|
|
) = 0;
|
|
|
|
};
|
|
|
|
// backup writer components interface (i.e., all components for an
|
|
// individual writer
|
|
class IVssWriterComponents
|
|
{
|
|
public:
|
|
// get count of components
|
|
STDMETHOD(GetComponentCount)(OUT UINT *pcComponents) = 0;
|
|
|
|
// get information about the writer
|
|
STDMETHOD(GetWriterInfo)
|
|
(
|
|
OUT VSS_ID *pidInstance,
|
|
OUT VSS_ID *pidWriter
|
|
) = 0;
|
|
|
|
// obtain a specific component
|
|
STDMETHOD(GetComponent)
|
|
(
|
|
IN UINT iComponent,
|
|
OUT IVssComponent **ppComponent
|
|
) = 0;
|
|
};
|
|
|
|
// create backup metadata interface
|
|
class IVssCreateWriterMetadata
|
|
{
|
|
public:
|
|
// add files to include to metadata document
|
|
STDMETHOD(AddIncludeFiles)
|
|
(
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilespec,
|
|
IN bool bRecursive,
|
|
IN LPCWSTR wszAlternateLocation
|
|
) = 0;
|
|
|
|
// add files to exclude to metadata document
|
|
STDMETHOD(AddExcludeFiles)
|
|
(
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilespec,
|
|
IN bool bRecursive
|
|
) = 0;
|
|
|
|
// add component to metadata document
|
|
STDMETHOD(AddComponent)
|
|
(
|
|
IN VSS_COMPONENT_TYPE ct,
|
|
IN LPCWSTR wszLogicalPath,
|
|
IN LPCWSTR wszComponentName,
|
|
IN LPCWSTR wszCaption,
|
|
IN const BYTE *pbIcon,
|
|
IN UINT cbIcon,
|
|
IN bool bRestoreMetadata,
|
|
IN bool bNotifyOnBackupComplete,
|
|
IN bool bSelectable
|
|
) = 0;
|
|
|
|
// add physical database files to a database component
|
|
STDMETHOD(AddDatabaseFiles)
|
|
(
|
|
IN LPCWSTR wszLogicalPath,
|
|
IN LPCWSTR wszDatabaseName,
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilespec
|
|
) = 0;
|
|
|
|
// add log files to a database component
|
|
STDMETHOD(AddDatabaseLogFiles)
|
|
(
|
|
IN LPCWSTR wszLogicalPath,
|
|
IN LPCWSTR wszDatabaseName,
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilespec
|
|
) = 0;
|
|
|
|
|
|
// add files to a FILE_GROUP component
|
|
STDMETHOD(AddFilesToFileGroup)
|
|
(
|
|
IN LPCWSTR wszLogicalPath,
|
|
IN LPCWSTR wszGroupName,
|
|
IN LPCWSTR wszPath,
|
|
IN LPCWSTR wszFilespec,
|
|
IN bool bRecursive,
|
|
IN LPCWSTR wszAlternateLocation
|
|
) = 0;
|
|
|
|
// create a restore method
|
|
STDMETHOD(SetRestoreMethod)
|
|
(
|
|
IN VSS_RESTOREMETHOD_ENUM method,
|
|
IN LPCWSTR wszService,
|
|
IN LPCWSTR wszUserProcedure,
|
|
IN VSS_WRITERRESTORE_ENUM writerRestore,
|
|
IN bool bRebootRequired
|
|
) = 0;
|
|
|
|
// add alternative location mappings to the restore method
|
|
STDMETHOD(AddAlternateLocationMapping)
|
|
(
|
|
IN LPCWSTR wszSourcePath,
|
|
IN LPCWSTR wszSourceFilespec,
|
|
IN bool bRecursive,
|
|
IN LPCWSTR wszDestination
|
|
) = 0;
|
|
|
|
// obtain reference to actual XML document
|
|
STDMETHOD(GetDocument)(IXMLDOMDocument **pDoc) = 0;
|
|
|
|
// save document as an XML string
|
|
STDMETHOD(SaveAsXML)(BSTR *pbstrXML) = 0;
|
|
};
|
|
|
|
|
|
class IVssWriterImpl;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CVssWriter
|
|
|
|
|
|
class CVssWriter
|
|
{
|
|
// Constants
|
|
public:
|
|
|
|
// Constructors & Destructors
|
|
public:
|
|
__declspec(dllexport)
|
|
STDMETHODCALLTYPE CVssWriter();
|
|
|
|
__declspec(dllexport)
|
|
virtual STDMETHODCALLTYPE ~CVssWriter();
|
|
|
|
// Exposed operations
|
|
public:
|
|
// initialize the writer object
|
|
__declspec(dllexport)
|
|
HRESULT STDMETHODCALLTYPE Initialize
|
|
(
|
|
IN VSS_ID WriterID,
|
|
IN LPCWSTR wszWriterName,
|
|
IN VSS_USAGE_TYPE ut,
|
|
IN VSS_SOURCE_TYPE st,
|
|
IN VSS_APPLICATION_LEVEL nLevel = VSS_APP_FRONT_END,
|
|
IN DWORD dwTimeoutFreeze = 60000, // Maximum milliseconds between Freeze/Thaw
|
|
IN VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER,
|
|
IN bool bIOThrottlingOnly = false
|
|
);
|
|
|
|
// cause the writer to subscribe to events.
|
|
__declspec(dllexport)
|
|
HRESULT STDMETHODCALLTYPE Subscribe
|
|
(
|
|
IN DWORD dwEventFlags = VSS_SM_BACKUP_EVENTS_FLAG | VSS_SM_RESTORE_EVENTS_FLAG
|
|
);
|
|
|
|
// cause the writer to unsubscribe from events
|
|
__declspec(dllexport)
|
|
HRESULT STDMETHODCALLTYPE Unsubscribe();
|
|
|
|
// installs an alternative writer
|
|
__declspec(dllexport)
|
|
HRESULT STDMETHODCALLTYPE InstallAlternateWriter
|
|
(
|
|
IN VSS_ID writerId,
|
|
IN CLSID persistentWriterClassId
|
|
);
|
|
|
|
// Internal properties - accessible from OnXXX methods
|
|
protected:
|
|
|
|
// get array of volumne names
|
|
__declspec(dllexport)
|
|
LPCWSTR* STDMETHODCALLTYPE GetCurrentVolumeArray() const;
|
|
|
|
// get count of volume names in array
|
|
__declspec(dllexport)
|
|
UINT STDMETHODCALLTYPE GetCurrentVolumeCount() const;
|
|
|
|
// current snapshot set GUID
|
|
__declspec(dllexport)
|
|
VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId() const;
|
|
|
|
// current app level (either 1,2,3)
|
|
__declspec(dllexport)
|
|
VSS_APPLICATION_LEVEL STDMETHODCALLTYPE GetCurrentLevel() const;
|
|
|
|
// determine if path is in set of volumes being snapshotted
|
|
__declspec(dllexport)
|
|
bool STDMETHODCALLTYPE IsPathAffected
|
|
(
|
|
IN LPCWSTR wszPath
|
|
) const;
|
|
|
|
// does the backup include bootable state (formerly system state backup)
|
|
__declspec(dllexport)
|
|
bool STDMETHODCALLTYPE IsBootableSystemStateBackedUp() const;
|
|
|
|
// is the backup application smart (i.e., selecting components) or
|
|
// dump (i.e., just selecting volumes)
|
|
__declspec(dllexport)
|
|
bool STDMETHODCALLTYPE AreComponentsSelected() const;
|
|
|
|
__declspec(dllexport)
|
|
VSS_BACKUP_TYPE STDMETHODCALLTYPE GetBackupType() const;
|
|
|
|
__declspec(dllexport)
|
|
bool STDMETHODCALLTYPE IsPartialFileSupportEnabled() const;
|
|
|
|
_declspec(dllexport)
|
|
HRESULT STDMETHODCALLTYPE SetWriterFailure(HRESULT hr);
|
|
|
|
// Ovverides
|
|
public:
|
|
// callback when request for metadata comes in
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnIdentify(IN IVssCreateWriterMetadata *pMetadata);
|
|
|
|
// callback for prepare backup event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnPrepareBackup(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
// callback for prepare snapsot event
|
|
virtual bool STDMETHODCALLTYPE OnPrepareSnapshot() = 0;
|
|
|
|
// callback for freeze event
|
|
virtual bool STDMETHODCALLTYPE OnFreeze() = 0;
|
|
|
|
// callback for thaw event
|
|
virtual bool STDMETHODCALLTYPE OnThaw() = 0;
|
|
|
|
// callback if current sequence is aborted
|
|
virtual bool STDMETHODCALLTYPE OnAbort() = 0;
|
|
|
|
// callback on backup complete event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnBackupComplete
|
|
(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
// callback on pre-restore event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnPreRestore
|
|
(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
// callback on post-restore event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnPostRestore
|
|
(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
// callback on post snapshot event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnPostSnapshot
|
|
(
|
|
IN IVssWriterComponents *pComponent
|
|
);
|
|
|
|
// callback on back off I/O volume event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnBackOffIOOnVolume
|
|
(
|
|
IN VSS_PWSZ wszVolumeName,
|
|
IN VSS_ID snapshotId,
|
|
IN VSS_ID providerId
|
|
);
|
|
|
|
// callback on Continue I/O on volume event
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnContinueIOOnVolume
|
|
(
|
|
IN VSS_PWSZ wszVolumeName,
|
|
IN VSS_ID snapshotId,
|
|
IN VSS_ID providerId
|
|
);
|
|
|
|
// callback to specify that the volume snaphost service is shutting down. Used
|
|
// by alternative writers to signal when to shutdown.
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnVSSShutdown();
|
|
|
|
// callback to an alternative writer when the application writer subscribes. Used to
|
|
// signal the alternative writer to shutdown.
|
|
__declspec(dllexport)
|
|
virtual bool STDMETHODCALLTYPE OnVSSApplicationStartup();
|
|
|
|
private:
|
|
|
|
IVssWriterImpl *m_pWrapper;
|
|
};
|
|
|
|
|
|
//
|
|
// MessageId: VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT
|
|
//
|
|
// MessageText:
|
|
//
|
|
// indicates that the snapshot contains only a subset of the
|
|
// volumes needed to correctly backup an application component
|
|
//
|
|
const HRESULT VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT = (0x800423f0L);
|
|
|
|
//
|
|
// MessageId: VSS_E_WRITERERROR_OUTOFRESOURCES
|
|
//
|
|
// MessageText:
|
|
//
|
|
// indi`cates that the writer failed due to an out of memory,
|
|
// out of handles, or other resource allocation failure
|
|
//
|
|
const HRESULT VSS_E_WRITERERROR_OUTOFRESOURCES = (0x800423f1L);
|
|
|
|
|
|
//
|
|
// MessageId: VSS_E_WRITERERROR_TIMEOUT
|
|
//
|
|
// MessageText:
|
|
//
|
|
// indicates that the writer failed due to a timeout between
|
|
// freeze and thaw.
|
|
//
|
|
const HRESULT VSS_E_WRITERERROR_TIMEOUT = (0x800423f2L);
|
|
|
|
//
|
|
// MessageId: VSS_E_WRITERERROR_RETRYABLE
|
|
//
|
|
// MessageText:
|
|
//
|
|
// indicates that the writer failed due to an error
|
|
// that might not occur if another snapshot is created
|
|
//
|
|
const HRESULT VSS_E_WRITERERROR_RETRYABLE = (0x800423f3L);
|
|
|
|
//
|
|
// MessageId: VSS_E_WRITERERROR_NONRETRYABLE
|
|
//
|
|
// MessageText:
|
|
//
|
|
// indicates that the writer failed due to an error
|
|
// that most likely would occur if another snapshot is created
|
|
//
|
|
const HRESULT VSS_E_WRITERERROR_NONRETRYABLE = (0x800423f4L);
|
|
|
|
|
|
|
|
|
|
|
|
#endif //__CVSS_WRITER_H_
|