New CVssWriter, CVssWriterEx and CVssWriterEx2 classes. git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3501 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/vswriter.h b/mingw-w64-headers/include/vswriter.h index 5154d84..ddd7fa0 100644 --- a/mingw-w64-headers/include/vswriter.h +++ b/mingw-w64-headers/include/vswriter.h
@@ -667,7 +667,123 @@ }; #endif /*__cplusplus*/ -/*TODO http://msdn.microsoft.com/en-us/library/aa384640%28v=VS.85%29.aspx */ +#ifdef __cplusplus +#if __MINGW_GNUC_PREREQ(4,6) +/* We need __thiscall support */ +class CVssWriter { +protected: + bool WINAPI AreComponentsSelected() const; + VSS_BACKUP_TYPE WINAPI GetBackupType() const; + LONG WINAPI GetContext() const; + VSS_APPLICATION_LEVEL WINAPI GetCurrentLevel() const; + VSS_ID WINAPI GetCurrentSnapshotSetId() const; + LPCWSTR* WINAPI GetCurrentVolumeArray() const; + UINT WINAPI GetCurrentVolumeCount() const; + VSS_RESTORE_TYPE WINAPI GetRestoreType() const; + HRESULT WINAPI GetSnapshotDeviceName( + LPCWSTR wszOriginalVolume, + LPCWSTR *ppwszSnapshotDevice) const; + bool WINAPI IsBootableSystemStateBackedUp() const; + bool WINAPI IsPartialFileSupportEnabled() const; + bool WINAPI IsPathAffected( + LPCWSTR wszPath) const; + HRESULT WINAPI SetWriterFailure( + HRESULT hr); +public: + //Pure virtuals + virtual bool WINAPI OnAbort() = 0; + virtual bool WINAPI OnFreeze() = 0; + virtual bool WINAPI OnPrepareSnapshot() = 0; + virtual bool WINAPI OnThaw() = 0; + //Virtuals + virtual __thiscall ~CVssWriter(); + virtual bool WINAPI OnBackupComplete( + IVssWriterComponents *pComponent); + virtual bool WINAPI OnBackupShutdown( + VSS_ID SnapshotSetId); + virtual bool WINAPI OnIdentify( + IVssCreateWriterMetadata *pMetadata); + virtual bool WINAPI OnPostRestore( + IVssWriterComponents *pComponent); + virtual bool WINAPI OnPostSnapshot( + IVssWriterComponents *pComponent); + virtual bool WINAPI OnPrepareBackup( + IVssWriterComponents *pComponent); + virtual bool WINAPI OnPreRestore( + IVssWriterComponents *pComponent); + //gendef says public: virtual bool __stdcall CVssWriter::OnBackOffIOOnVolume(unsigned short *,struct _GUID,struct _GUID) + //Method unsupported + virtual bool WINAPI OnBackOffIOOnVolume( + VSS_PWSZ _vss_pwsz, + VSS_ID _id1, + VSS_ID _id2); + //gendef says public: virtual bool __stdcall CVssWriter::OnContinueIOOnVolume(unsigned short *,struct _GUID,struct _GUID) + //Method unsupported + virtual bool WINAPI OnContinueIOOnVolume( + VSS_PWSZ _vss_pwsz, + VSS_ID _id1, + VSS_ID _id2); + //gendef says public: virtual bool __stdcall CVssWriter::OnVSSShutdown(void) + //Method unsupported + virtual bool WINAPI OnVssShutdown(); + //Non-virtuals + __thiscall CVssWriter(); + HRESULT WINAPI Initialize( + VSS_ID WriterId, + LPCWSTR WriterName, + VSS_USAGE_TYPE UsageType, + VSS_SOURCE_TYPE SourceType, + VSS_APPLICATION_LEVEL AppLevel, + DWORD dwTimeoutFreeze = 60000, + VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER, + bool bIOThrottlingOnly = false, + LPCWSTR wszWriterInstanceName = NULL); + HRESULT WINAPI Subscribe( + DWORD dwEventFlags); + HRESULT WINAPI Unsubscribe(); + //gendef says public: long __stdcall CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID) + //Method unsupported + HRESULT WINAPI InstallAlternateWriter( + VSS_ID _id1, + VSS_ID _id2); +}; + +class CVssWriterEx : public CVssWriter { + protected: + HRESULT WINAPI GetIdentifyInformation( + IVssExamineWriterMetadata **ppMetadata) const; + HRESULT WINAPI SubscribeEx( + DWORD dwUnsubscribeTimeout, + DWORD dwEventFlags); + public: + virtual bool WINAPI OnIdentifyEx( + IVssCreateWriterMetadataEx *pMetadata) const; + HRESULT WINAPI InitializeEx( + VSS_ID WriterId, + LPCWSTR wszWriterName, + DWORD dwMajorVersion, + DWORD dwMinorVersion, + VSS_USAGE_TYPE ut, + VSS_SOURCE_TYPE st, + VSS_APPLICATION_LEVEL nLevel, + DWORD dwTimeoutFreeze = 60000, + VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER, + bool bIOThrottlingOnly = false, + LPCWSTR wszWriterInstanceName = NULL); +}; + +class CVssWriterEx2: public CVssWriterEx { + public: + HRESULT WINAPI GetSessionId( + VSS_ID *idSession) const; + bool WINAPI IsWriterShuttingDown() const; + HRESULT WINAPI SetWriterFailureEx( + HRESULT hrWriter, + HRESULT hrApplication, + LPCWSTR wszApplicationMessage); +}; +#endif /*__MINGW_GNUC_PREREQ(4,6)*/ +#endif /*__cplusplus*/ #include <vsbackup.h>