mirror of https://github.com/UMSKT/xpmgr.git
863 lines
22 KiB
C++
863 lines
22 KiB
C++
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
vsbackup.h
|
|
|
|
Abstract:
|
|
|
|
Declaration of backup interfaces.
|
|
|
|
--*/
|
|
|
|
#ifndef _VSBACKUP_H_
|
|
#define _VSBACKUP_H_
|
|
|
|
|
|
const IID IID_IVssExamineWriterMetadata = // 902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd
|
|
{
|
|
0x902fcf7f,
|
|
0xb7fd,
|
|
0x42f8,
|
|
{0x81, 0xf1, 0xb2, 0xe4, 0x00, 0xb1, 0xe5, 0xbd }
|
|
};
|
|
|
|
const IID IID_IVssExamineWriterMetadataEx = // 0c0e5ec0-ca44-472b-b702-e652db1c0451
|
|
{
|
|
0x0c0e5ec0,
|
|
0xca44,
|
|
0x472b,
|
|
{ 0xb7, 0x02, 0xe6, 0x52, 0xdb, 0x1c, 0x04, 0x51 }
|
|
};
|
|
|
|
const IID IID_IVssExamineWriterMetadataEx2 = // ce115780-a611-431b-b57f-c38303ab6aee
|
|
{
|
|
0xce115780,
|
|
0xa611,
|
|
0x431b,
|
|
{ 0xb5, 0x7f, 0xc3, 0x83, 0x03, 0xab, 0x6a, 0xee }
|
|
};
|
|
|
|
const IID IID_IVssBackupComponents = // 665c1d5f-c218-414d-a05d-7fef5f9d5c86
|
|
{
|
|
0x665c1d5f,
|
|
0xc218,
|
|
0x414d,
|
|
{ 0xa0, 0x5d, 0x7f, 0xef, 0x5f, 0x9d, 0x5c, 0x86 }
|
|
};
|
|
|
|
const IID IID_IVssBackupComponentsEx = // 963f03ad-9e4c-4a34-ac15-e4b6174e5036
|
|
{
|
|
0x963f03ad,
|
|
0x9e4c,
|
|
0x4a34,
|
|
{ 0xac, 0x15, 0xe4, 0xb6, 0x17, 0x4e, 0x50, 0x36 }
|
|
};
|
|
|
|
const IID IID_IVssBackupComponentsEx2 = // acfe2b3a-22c9-4ef8-bd03-2f9ca230084e
|
|
{
|
|
0xacfe2b3a,
|
|
0x22c9,
|
|
0x4ef8,
|
|
{ 0xbd, 0x03, 0x2f, 0x9c, 0xa2, 0x30, 0x08, 0x4e }
|
|
};
|
|
|
|
const IID IID_IVssBackupComponentsEx3 = // c191bfbc-b602-4675-8bd1-67d642f529d5
|
|
{
|
|
0xc191bfbc,
|
|
0xb602,
|
|
0x4675,
|
|
{ 0x8b, 0xd1, 0x67, 0xd6, 0x42, 0xf5, 0x29, 0xd5 }
|
|
};
|
|
|
|
|
|
// description of a component
|
|
typedef struct _VSS_COMPONENTINFO
|
|
{
|
|
VSS_COMPONENT_TYPE type; // either VSS_CT_DATABASE or VSS_CT_FILEGROUP
|
|
BSTR bstrLogicalPath; // logical path to component
|
|
BSTR bstrComponentName; // component name
|
|
BSTR bstrCaption; // description of component
|
|
BYTE *pbIcon; // icon
|
|
UINT cbIcon; // icon
|
|
bool bRestoreMetadata; // whether component supplies restore metadata
|
|
bool bNotifyOnBackupComplete; // whether component needs to be informed if backup was successful
|
|
bool bSelectable; // is component selectable
|
|
bool bSelectableForRestore; // is component selectable for restore
|
|
DWORD dwComponentFlags; // extra attribute flags for the component
|
|
UINT cFileCount; // # of files in file group
|
|
UINT cDatabases; // # of database files
|
|
UINT cLogFiles; // # of log files
|
|
UINT cDependencies; // # of components that this component depends on
|
|
} VSS_COMPONENTINFO;
|
|
|
|
typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO;
|
|
|
|
|
|
// component information
|
|
class IVssWMComponent : public IUnknown
|
|
{
|
|
public:
|
|
// get component information
|
|
STDMETHOD(GetComponentInfo)
|
|
(
|
|
__out PVSSCOMPONENTINFO *ppInfo
|
|
) = 0;
|
|
|
|
// free component information
|
|
STDMETHOD(FreeComponentInfo)
|
|
(
|
|
__in PVSSCOMPONENTINFO pInfo
|
|
) = 0;
|
|
|
|
// obtain a specific file in a file group
|
|
STDMETHOD(GetFile)
|
|
(
|
|
__in UINT iFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// obtain a specific physical database file for a database
|
|
STDMETHOD(GetDatabaseFile)
|
|
(
|
|
__in UINT iDBFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// obtain a specific physical log file for a database
|
|
STDMETHOD(GetDatabaseLogFile)
|
|
(
|
|
__in UINT iDbLogFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
STDMETHOD(GetDependency)
|
|
(
|
|
__in UINT iDependency,
|
|
__out IVssWMDependency **ppDependency
|
|
) = 0;
|
|
};
|
|
|
|
|
|
// interface to examine writer metadata
|
|
class __declspec(uuid("902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd")) IVssExamineWriterMetadata : public IUnknown
|
|
{
|
|
public:
|
|
// obtain identity of the writer
|
|
STDMETHOD(GetIdentity)
|
|
(
|
|
__out VSS_ID *pidInstance,
|
|
__out VSS_ID *pidWriter,
|
|
__out BSTR *pbstrWriterName,
|
|
__out VSS_USAGE_TYPE *pUsage,
|
|
__out VSS_SOURCE_TYPE *pSource
|
|
) = 0;
|
|
|
|
// obtain number of include files, exclude files, and components
|
|
STDMETHOD(GetFileCounts)
|
|
(
|
|
__out UINT *pcIncludeFiles,
|
|
__out UINT *pcExcludeFiles,
|
|
__out UINT *pcComponents
|
|
) = 0;
|
|
|
|
// obtain specific include files
|
|
STDMETHOD(GetIncludeFile)
|
|
(
|
|
__in UINT iFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// obtain specific exclude files
|
|
STDMETHOD(GetExcludeFile)
|
|
(
|
|
__in UINT iFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// obtain specific component
|
|
STDMETHOD(GetComponent)
|
|
(
|
|
__in UINT iComponent,
|
|
__out IVssWMComponent **ppComponent
|
|
) = 0;
|
|
|
|
// obtain restoration method
|
|
STDMETHOD(GetRestoreMethod)
|
|
(
|
|
__out VSS_RESTOREMETHOD_ENUM *pMethod,
|
|
__out BSTR *pbstrService,
|
|
__out BSTR *pbstrUserProcedure,
|
|
__out VSS_WRITERRESTORE_ENUM *pwriterRestore,
|
|
__out bool *pbRebootRequired,
|
|
__out UINT *pcMappings
|
|
) = 0;
|
|
|
|
// obtain a specific alternative location mapping
|
|
STDMETHOD(GetAlternateLocationMapping)
|
|
(
|
|
__in UINT iMapping,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
|
|
// get the backup schema
|
|
STDMETHOD(GetBackupSchema)
|
|
(
|
|
__out DWORD *pdwSchemaMask
|
|
) = 0;
|
|
|
|
// obtain reference to actual XML document
|
|
STDMETHOD(GetDocument)
|
|
(
|
|
__out IXMLDOMDocument **pDoc
|
|
) = 0;
|
|
|
|
// convert document to a XML string
|
|
STDMETHOD(SaveAsXML)
|
|
(
|
|
__in BSTR *pbstrXML
|
|
) = 0;
|
|
|
|
// load document from an XML string
|
|
STDMETHOD(LoadFromXML)
|
|
(
|
|
__in BSTR bstrXML
|
|
) = 0;
|
|
};
|
|
|
|
|
|
class __declspec(uuid("0c0e5ec0-ca44-472b-b702-e652db1c0451")) IVssExamineWriterMetadataEx : public IVssExamineWriterMetadata
|
|
{
|
|
public:
|
|
// obtain identity of the writer
|
|
STDMETHOD(GetIdentityEx)
|
|
(
|
|
__out VSS_ID *pidInstance,
|
|
__out VSS_ID *pidWriter,
|
|
__out BSTR *pbstrWriterName,
|
|
__out BSTR* pbstrInstanceName,
|
|
__out VSS_USAGE_TYPE *pUsage,
|
|
__out VSS_SOURCE_TYPE *pSource
|
|
) = 0;
|
|
};
|
|
|
|
|
|
class __declspec(uuid("ce115780-a611-431b-b57f-c38303ab6aee")) IVssExamineWriterMetadataEx2 : public IVssExamineWriterMetadataEx
|
|
{
|
|
public:
|
|
STDMETHOD(GetVersion)
|
|
(
|
|
__out DWORD* pdwMajorVersion,
|
|
__out DWORD* pdwMinorVersion
|
|
) = 0;
|
|
|
|
STDMETHOD(GetExcludeFromSnapshotCount)
|
|
(
|
|
__out UINT* pcExcludedFromSnapshot
|
|
) = 0;
|
|
|
|
// obtain specific exclude files
|
|
STDMETHOD(GetExcludeFromSnapshotFile)
|
|
(
|
|
__in UINT iFile,
|
|
__out IVssWMFiledesc **ppFiledesc
|
|
) = 0;
|
|
};
|
|
|
|
class IVssWriterComponentsExt :
|
|
public IVssWriterComponents,
|
|
public IUnknown
|
|
{
|
|
};
|
|
|
|
|
|
// backup components interface
|
|
class __declspec(uuid("665c1d5f-c218-414d-a05d-7fef5f9d5c86")) IVssBackupComponents : public IUnknown
|
|
{
|
|
public:
|
|
// get count of writer components
|
|
STDMETHOD(GetWriterComponentsCount)
|
|
(
|
|
__out UINT *pcComponents
|
|
) = 0;
|
|
|
|
// obtain a specific writer component
|
|
STDMETHOD(GetWriterComponents)
|
|
(
|
|
__in UINT iWriter,
|
|
__out IVssWriterComponentsExt **ppWriter
|
|
) = 0;
|
|
|
|
// initialize and create BACKUP_COMPONENTS document
|
|
STDMETHOD(InitializeForBackup)
|
|
(
|
|
__in_opt BSTR bstrXML = NULL
|
|
) = 0;
|
|
|
|
// set state describing backup
|
|
STDMETHOD(SetBackupState)
|
|
(
|
|
__in bool bSelectComponents,
|
|
__in bool bBackupBootableSystemState,
|
|
__in VSS_BACKUP_TYPE backupType,
|
|
__in bool bPartialFileSupport = false
|
|
) = 0;
|
|
|
|
STDMETHOD(InitializeForRestore)
|
|
(
|
|
__in BSTR bstrXML
|
|
) = 0;
|
|
|
|
// set state describing restore
|
|
STDMETHOD(SetRestoreState)
|
|
(
|
|
__in VSS_RESTORE_TYPE restoreType
|
|
) = 0;
|
|
|
|
// gather writer metadata
|
|
STDMETHOD(GatherWriterMetadata)
|
|
(
|
|
__out IVssAsync **pAsync
|
|
) = 0;
|
|
|
|
// get count of writers with metadata
|
|
STDMETHOD(GetWriterMetadataCount)
|
|
(
|
|
__out UINT *pcWriters
|
|
) = 0;
|
|
|
|
// get writer metadata for a specific writer
|
|
STDMETHOD(GetWriterMetadata)
|
|
(
|
|
__in UINT iWriter,
|
|
__out VSS_ID *pidInstance,
|
|
__out IVssExamineWriterMetadata **ppMetadata
|
|
) = 0;
|
|
|
|
// free writer metadata
|
|
STDMETHOD(FreeWriterMetadata)() = 0;
|
|
|
|
// add a component to the BACKUP_COMPONENTS document
|
|
STDMETHOD(AddComponent)
|
|
(
|
|
__in VSS_ID instanceId,
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName
|
|
) = 0;
|
|
|
|
// dispatch PrepareForBackup event to writers
|
|
STDMETHOD(PrepareForBackup)
|
|
(
|
|
__out IVssAsync **ppAsync
|
|
) = 0;
|
|
|
|
// abort the backup
|
|
STDMETHOD(AbortBackup)() = 0;
|
|
|
|
// dispatch the Identify event so writers can expose their metadata
|
|
STDMETHOD(GatherWriterStatus)
|
|
(
|
|
__out IVssAsync **pAsync
|
|
) = 0;
|
|
|
|
|
|
// get count of writers with status
|
|
STDMETHOD(GetWriterStatusCount)
|
|
(
|
|
__out UINT *pcWriters
|
|
) = 0;
|
|
|
|
STDMETHOD(FreeWriterStatus)() = 0;
|
|
|
|
STDMETHOD(GetWriterStatus)
|
|
(
|
|
__in UINT iWriter,
|
|
__out VSS_ID *pidInstance,
|
|
__out VSS_ID *pidWriter,
|
|
__out BSTR *pbstrWriter,
|
|
__out VSS_WRITER_STATE *pnStatus,
|
|
__out HRESULT *phResultFailure
|
|
) = 0;
|
|
|
|
// indicate whether backup succeeded on a component
|
|
STDMETHOD(SetBackupSucceeded)
|
|
(
|
|
__in VSS_ID instanceId,
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in bool bSucceded
|
|
) = 0;
|
|
|
|
// set backup options for the writer
|
|
STDMETHOD(SetBackupOptions)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszBackupOptions
|
|
) = 0;
|
|
|
|
// indicate that a given component is selected to be restored
|
|
STDMETHOD(SetSelectedForRestore)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in bool bSelectedForRestore
|
|
) = 0;
|
|
|
|
|
|
// set restore options for the writer
|
|
STDMETHOD(SetRestoreOptions)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszRestoreOptions
|
|
) = 0;
|
|
|
|
// indicate that additional restores will follow
|
|
STDMETHOD(SetAdditionalRestores)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in bool bAdditionalRestores
|
|
) = 0;
|
|
|
|
|
|
// set the backup stamp that the differential or incremental
|
|
// backup is based on
|
|
STDMETHOD(SetPreviousBackupStamp)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszPreviousBackupStamp
|
|
) = 0;
|
|
|
|
|
|
|
|
// save BACKUP_COMPONENTS document as XML string
|
|
STDMETHOD(SaveAsXML)
|
|
(
|
|
__in BSTR *pbstrXML
|
|
) = 0;
|
|
|
|
// signal BackupComplete event to the writers
|
|
STDMETHOD(BackupComplete)
|
|
(
|
|
__out IVssAsync **ppAsync
|
|
) = 0;
|
|
|
|
// add an alternate mapping on restore
|
|
STDMETHOD(AddAlternativeLocationMapping)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE componentType,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszPath,
|
|
__in LPCWSTR wszFilespec,
|
|
__in bool bRecursive,
|
|
__in LPCWSTR wszDestination
|
|
) = 0;
|
|
|
|
// add a subcomponent to be restored
|
|
STDMETHOD(AddRestoreSubcomponent)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE componentType,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszSubComponentLogicalPath,
|
|
__in LPCWSTR wszSubComponentName,
|
|
__in bool bRepair
|
|
) = 0;
|
|
|
|
// requestor indicates whether files were successfully restored
|
|
STDMETHOD(SetFileRestoreStatus)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in VSS_FILE_RESTORE_STATUS status
|
|
) = 0;
|
|
|
|
// add a new location target for a file to be restored
|
|
STDMETHOD(AddNewTarget)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszPath,
|
|
__in LPCWSTR wszFileName,
|
|
__in bool bRecursive,
|
|
__in LPCWSTR wszAlternatePath
|
|
) = 0;
|
|
|
|
// add a new location for the ranges file in case it was restored to
|
|
// a different location
|
|
STDMETHOD(SetRangesFilePath)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in UINT iPartialFile,
|
|
__in LPCWSTR wszRangesFile
|
|
) = 0;
|
|
|
|
// signal PreRestore event to the writers
|
|
STDMETHOD(PreRestore)
|
|
(
|
|
__out IVssAsync **ppAsync
|
|
) = 0;
|
|
|
|
// signal PostRestore event to the writers
|
|
STDMETHOD(PostRestore)
|
|
(
|
|
__out IVssAsync **ppAsync
|
|
) = 0;
|
|
|
|
// Called to set the context for subsequent snapshot-related operations
|
|
STDMETHOD(SetContext)
|
|
(
|
|
__in LONG lContext
|
|
) = 0;
|
|
|
|
// start a snapshot set
|
|
STDMETHOD(StartSnapshotSet)
|
|
(
|
|
__out VSS_ID *pSnapshotSetId
|
|
) = 0;
|
|
|
|
// add a volume to a snapshot set
|
|
STDMETHOD(AddToSnapshotSet)
|
|
(
|
|
__in_z VSS_PWSZ pwszVolumeName,
|
|
__in VSS_ID ProviderId,
|
|
__out VSS_ID *pidSnapshot
|
|
) = 0;
|
|
|
|
// create the snapshot set
|
|
STDMETHOD(DoSnapshotSet)
|
|
(
|
|
__out IVssAsync** ppAsync
|
|
) = 0;
|
|
|
|
STDMETHOD(DeleteSnapshots)
|
|
(
|
|
__in VSS_ID SourceObjectId,
|
|
__in VSS_OBJECT_TYPE eSourceObjectType,
|
|
__in BOOL bForceDelete,
|
|
__in LONG* plDeletedSnapshots,
|
|
__in VSS_ID* pNondeletedSnapshotID
|
|
) = 0;
|
|
|
|
STDMETHOD(ImportSnapshots)
|
|
(
|
|
__out IVssAsync** ppAsync
|
|
) = 0;
|
|
|
|
STDMETHOD(BreakSnapshotSet)
|
|
(
|
|
__in VSS_ID SnapshotSetId
|
|
) = 0;
|
|
|
|
STDMETHOD(GetSnapshotProperties)
|
|
(
|
|
__in VSS_ID SnapshotId,
|
|
__out VSS_SNAPSHOT_PROP *pProp
|
|
) = 0;
|
|
|
|
STDMETHOD(Query)
|
|
(
|
|
__in VSS_ID QueriedObjectId,
|
|
__in VSS_OBJECT_TYPE eQueriedObjectType,
|
|
__in VSS_OBJECT_TYPE eReturnedObjectsType,
|
|
__in IVssEnumObject **ppEnum
|
|
) = 0;
|
|
|
|
STDMETHOD(IsVolumeSupported)
|
|
(
|
|
__in VSS_ID ProviderId,
|
|
__in_z VSS_PWSZ pwszVolumeName,
|
|
__in BOOL * pbSupportedByThisProvider
|
|
) = 0;
|
|
|
|
STDMETHOD(DisableWriterClasses)
|
|
(
|
|
__in const VSS_ID *rgWriterClassId,
|
|
__in UINT cClassId
|
|
) = 0;
|
|
|
|
STDMETHOD(EnableWriterClasses)
|
|
(
|
|
__in const VSS_ID *rgWriterClassId,
|
|
__in UINT cClassId
|
|
) = 0;
|
|
|
|
STDMETHOD(DisableWriterInstances)
|
|
(
|
|
__in const VSS_ID *rgWriterInstanceId,
|
|
__in UINT cInstanceId
|
|
) = 0;
|
|
|
|
// called to expose a snapshot
|
|
STDMETHOD(ExposeSnapshot)
|
|
(
|
|
__in VSS_ID SnapshotId,
|
|
__in_z VSS_PWSZ wszPathFromRoot,
|
|
__in LONG lAttributes,
|
|
__in_z VSS_PWSZ wszExpose,
|
|
__out_z VSS_PWSZ *pwszExposed
|
|
) = 0;
|
|
|
|
STDMETHOD(RevertToSnapshot)
|
|
(
|
|
__in VSS_ID SnapshotId,
|
|
__in BOOL bForceDismount
|
|
) = 0;
|
|
|
|
STDMETHOD(QueryRevertStatus)
|
|
(
|
|
__in_z VSS_PWSZ pwszVolume,
|
|
__out IVssAsync **ppAsync
|
|
) = 0;
|
|
};
|
|
|
|
|
|
class __declspec(uuid("963f03ad-9e4c-4a34-ac15-e4b6174e5036")) IVssBackupComponentsEx : public IVssBackupComponents
|
|
{
|
|
public:
|
|
// get writer metadata for a specific writer
|
|
STDMETHOD(GetWriterMetadataEx)
|
|
(
|
|
__in UINT iWriter,
|
|
__out VSS_ID *pidInstance,
|
|
__out IVssExamineWriterMetadataEx **ppMetadata
|
|
) = 0;
|
|
|
|
// indicate that a given component is selected to be restored
|
|
STDMETHOD(SetSelectedForRestoreEx)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in bool bSelectedForRestore,
|
|
__in VSS_ID instanceId = GUID_NULL
|
|
) = 0;
|
|
};
|
|
|
|
|
|
class __declspec(uuid("acfe2b3a-22c9-4ef8-bd03-2f9ca230084e")) IVssBackupComponentsEx2 : public IVssBackupComponentsEx
|
|
{
|
|
public:
|
|
STDMETHOD(UnexposeSnapshot)
|
|
(
|
|
__in VSS_ID snapshotId
|
|
) = 0;
|
|
|
|
STDMETHOD(SetAuthoritativeRestore)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in bool bAuth
|
|
)= 0;
|
|
|
|
STDMETHOD(SetRollForward)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in VSS_ROLLFORWARD_TYPE rollType,
|
|
__in LPCWSTR wszRollForwardPoint
|
|
)= 0;
|
|
|
|
STDMETHOD(SetRestoreName)
|
|
(
|
|
__in VSS_ID writerId,
|
|
__in VSS_COMPONENT_TYPE ct,
|
|
__in LPCWSTR wszLogicalPath,
|
|
__in LPCWSTR wszComponentName,
|
|
__in LPCWSTR wszRestoreName
|
|
) = 0;
|
|
|
|
STDMETHOD(BreakSnapshotSetEx)
|
|
(
|
|
__in VSS_ID SnapshotSetID,
|
|
__in DWORD dwBreakFlags,
|
|
__out IVssAsync** ppAsync
|
|
) = 0;
|
|
|
|
STDMETHOD(PreFastRecovery)
|
|
(
|
|
__in VSS_ID SnapshotSetID,
|
|
__in DWORD dwPreFastRecoveryFlags,
|
|
__out IVssAsync** ppAsync
|
|
) = 0;
|
|
|
|
STDMETHOD(FastRecovery)
|
|
(
|
|
__in VSS_ID SnapshotSetID,
|
|
__in DWORD dwFastRecoveryFlags,
|
|
__out IVssAsync** ppAsync
|
|
) = 0;
|
|
};
|
|
|
|
|
|
class __declspec(uuid("c191bfbc-b602-4675-8bd1-67d642f529d5")) IVssBackupComponentsEx3 : public IVssBackupComponentsEx2
|
|
{
|
|
public:
|
|
|
|
STDMETHOD(GetWriterStatusEx)
|
|
(
|
|
__in UINT iWriter,
|
|
__out VSS_ID *pidInstance,
|
|
__out VSS_ID *pidWriter,
|
|
__out BSTR *pbstrWriter,
|
|
__out VSS_WRITER_STATE *pnStatus,
|
|
__out HRESULT *phrFailureWriter,
|
|
__out_opt HRESULT *phrApplication = NULL,
|
|
__out_opt BSTR *pbstrApplicationMessage = NULL
|
|
) = 0;
|
|
|
|
STDMETHOD(AddSnapshotToRecoverySet)
|
|
(
|
|
__in VSS_ID snapshotId,
|
|
__in DWORD dwFlags,
|
|
__in_opt VSS_PWSZ pwszDestinationVolume = NULL
|
|
) = 0;
|
|
|
|
STDMETHOD(RecoverSet)
|
|
(
|
|
__in DWORD dwFlags,
|
|
__deref_out IVssAsync** ppAsync
|
|
) = 0;
|
|
|
|
STDMETHOD(GetSessionId)
|
|
(
|
|
__out VSS_ID *idSession
|
|
) = 0;
|
|
};
|
|
|
|
#define VSS_SW_BOOTABLE_STATE (1 << 0)
|
|
|
|
extern "C" {
|
|
HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal
|
|
(
|
|
__out IVssBackupComponents **ppBackup
|
|
);
|
|
|
|
HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal
|
|
(
|
|
__in BSTR bstrXML,
|
|
__out IVssExamineWriterMetadata **ppMetadata
|
|
);
|
|
|
|
|
|
HRESULT APIENTRY IsVolumeSnapshottedInternal
|
|
(
|
|
__in_z VSS_PWSZ pwszVolumeName,
|
|
__out BOOL *pbSnapshotsPresent,
|
|
__out LONG *plSnapshotCapability
|
|
);
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
// Life-management methods for structure members
|
|
|
|
void APIENTRY VssFreeSnapshotPropertiesInternal(
|
|
__in VSS_SNAPSHOT_PROP* pProp
|
|
);
|
|
|
|
|
|
HRESULT APIENTRY GetProviderMgmtInterfaceInternal(
|
|
__in VSS_ID ProviderId,
|
|
__in IID InterfaceId,
|
|
__out IUnknown** ppItf
|
|
);
|
|
|
|
HRESULT APIENTRY ShouldBlockRevertInternal
|
|
(
|
|
__in LPCWSTR wszVolumeName,
|
|
__out bool* pbBlock
|
|
);
|
|
}
|
|
|
|
inline HRESULT CreateVssBackupComponents
|
|
(
|
|
__out IVssBackupComponents **ppBackup
|
|
)
|
|
{
|
|
return CreateVssBackupComponentsInternal(ppBackup);
|
|
}
|
|
|
|
inline HRESULT CreateVssExamineWriterMetadata
|
|
(
|
|
__in BSTR bstrXML,
|
|
__out IVssExamineWriterMetadata **ppMetadata
|
|
)
|
|
{
|
|
return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata);
|
|
}
|
|
|
|
inline HRESULT IsVolumeSnapshotted
|
|
(
|
|
__in_z VSS_PWSZ pwszVolumeName,
|
|
__out BOOL *pbSnapshotsPresent,
|
|
__out LONG *plSnapshotCapability
|
|
)
|
|
{
|
|
return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability);
|
|
}
|
|
|
|
inline void VssFreeSnapshotProperties
|
|
(
|
|
__in VSS_SNAPSHOT_PROP* pProp
|
|
)
|
|
{
|
|
return VssFreeSnapshotPropertiesInternal(pProp);
|
|
}
|
|
|
|
inline HRESULT GetProviderMgmtInterface
|
|
(
|
|
__in VSS_ID ProviderId,
|
|
__in IID InterfaceId,
|
|
__out IUnknown** ppItf
|
|
)
|
|
{
|
|
return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf);
|
|
}
|
|
|
|
inline HRESULT ShouldBlockRevert
|
|
(
|
|
__in LPCWSTR wszVolumeName,
|
|
__out bool* pbBlock
|
|
)
|
|
{
|
|
return ShouldBlockRevertInternal(wszVolumeName, pbBlock);
|
|
}
|
|
|
|
|
|
#endif // _VSBACKUP_H_
|
|
|
|
|