Я использую VSS API и использую этот абстрактный базовый класс CVSSWriter. Я хочу вызывать его функции, но не могу создать его объект.Как я должен наследовать его, потому что это класс, определенный в VSWriter.h Вот ссылка на информацию о его методах http://msdn.microsoft.com/en-us/library/aa381524%28v=VS.85%29.aspx
Пожалуйста, помогите, когда я застрял.
Я пробовал это, но этоне работает.
class SPCVssWriterEx:public CVssWriter
{
private:
LONG _cRef;
public:
SPCVssWriterEx(){}
~SPCVssWriterEx(){}
// callback for prepare snapsot event
bool STDMETHODCALLTYPE OnPrepareSnapshot()
{
return true;
}
// callback for freeze event
bool STDMETHODCALLTYPE OnFreeze()
{
return true;
}
// callback for thaw event
bool STDMETHODCALLTYPE OnThaw()
{
return true;
}
// callback if current sequence is aborted
bool STDMETHODCALLTYPE OnAbort()
{
return true;
}
};
Эти четыре являются чисто виртуальными функциями, а также есть некоторые виртуальные функции.
Реализация для этого класса
'
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,
IN LPCWSTR wszWriterInstanceName = NULL
);
// 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 volume names
__declspec(dllexport)
LPCWSTR* STDMETHODCALLTYPE GetCurrentVolumeArray() const;
// get count of volume names in array
__declspec(dllexport)
UINT STDMETHODCALLTYPE GetCurrentVolumeCount() const;
// get the name of the snapshot device corresponding to a given volume.
__declspec(dllexport)
HRESULT STDMETHODCALLTYPE GetSnapshotDeviceName
(
IN LPCWSTR wszOriginalVolume,
OUT LPCWSTR* ppwszSnapshotDevice
) const;
// current snapshot set GUID
__declspec(dllexport)
VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId() const;
// Current backup context.
__declspec(dllexport)
LONG STDMETHODCALLTYPE GetContext() 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)
VSS_RESTORE_TYPE STDMETHODCALLTYPE GetRestoreType() 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 indicating that the backup process has either completed or has shut down
__declspec(dllexport)
virtual bool STDMETHODCALLTYPE OnBackupShutdown
(
IN VSS_ID SnapshotSetId
);
// 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;
};
'