From 9973b02148f5e9ae47e153c3ad7d7575bf035066 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Thu, 10 Feb 2022 22:02:23 +0530 Subject: [PATCH 2/2] headers: Add vswriter.idl
Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-crt/libsrc/vss-uuid.c | 1 + mingw-w64-headers/Makefile.am | 1 + mingw-w64-headers/include/vswriter.idl | 576 +++++++++++++++++++++++++ 3 files changed, 578 insertions(+) create mode 100644 mingw-w64-headers/include/vswriter.idl diff --git a/mingw-w64-crt/libsrc/vss-uuid.c b/mingw-w64-crt/libsrc/vss-uuid.c index 23871f0..feb01f8 100644 --- a/mingw-w64-crt/libsrc/vss-uuid.c +++ b/mingw-w64-crt/libsrc/vss-uuid.c @@ -14,3 +14,4 @@ #include <vsbackup.h> #include <vsmgmt.h> #include <vsprov.h> +#include <vswriter.h> diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am index bdd107b..38a70b0 100644 --- a/mingw-w64-headers/Makefile.am +++ b/mingw-w64-headers/Makefile.am @@ -231,6 +231,7 @@ IDL_SRCS = \ include/vsmgmt.idl \ include/vsprov.idl \ include/vss.idl \ + include/vswriter.idl \ include/wbemads.idl \ include/wbemcli.idl \ include/wbemdisp.idl \ diff --git a/mingw-w64-headers/include/vswriter.idl b/mingw-w64-headers/include/vswriter.idl new file mode 100644 index 0000000..3051d58 --- /dev/null +++ b/mingw-w64-headers/include/vswriter.idl @@ -0,0 +1,576 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER.PD within this package. + */ + +/** + * C++ interfaces, which are not COM interface, are declared with + * uuid(00000000-0000-0000-0000-000000000000) to make widl happy + */ + +import "oaidl.idl"; +import "ocidl.idl"; +import "vss.idl"; + +cpp_quote("#include <winapifamily.h>") + +cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") + +cpp_quote("#include \"vsserror.h\" ") + +typedef enum VSS_USAGE_TYPE { + VSS_UT_UNDEFINED = 0, + VSS_UT_BOOTABLESYSTEMSTATE, + VSS_UT_SYSTEMSERVICE, + VSS_UT_USERDATA, + VSS_UT_OTHER, +} VSS_USAGE_TYPE; + +typedef enum VSS_SOURCE_TYPE { + VSS_ST_UNDEFINED = 0, + VSS_ST_TRANSACTEDDB, + VSS_ST_NONTRANSACTEDDB, + VSS_ST_OTHER, +} VSS_SOURCE_TYPE; + +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_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE, + VSS_RME_CUSTOM, + VSS_RME_RESTORE_STOP_START, +} VSS_RESTOREMETHOD_ENUM; + +typedef enum VSS_WRITERRESTORE_ENUM { + VSS_WRE_UNDEFINED = 0, + VSS_WRE_NEVER, + VSS_WRE_IF_REPLACE_FAILS, + VSS_WRE_ALWAYS, +} VSS_WRITERRESTORE_ENUM; + +typedef enum VSS_COMPONENT_TYPE { + VSS_CT_UNDEFINED = 0, + VSS_CT_DATABASE, + VSS_CT_FILEGROUP, +} VSS_COMPONENT_TYPE; + +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, +} VSS_ALTERNATE_WRITER_STATE; + +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, +} VSS_SUBSCRIBE_MASK; + +typedef enum VSS_RESTORE_TARGET { + VSS_RT_UNDEFINED = 0, + VSS_RT_ORIGINAL, + VSS_RT_ALTERNATE, + VSS_RT_DIRECTED, + VSS_RT_ORIGINAL_LOCATION, +} VSS_RESTORE_TARGET; + +typedef enum VSS_FILE_RESTORE_STATUS { + VSS_RS_UNDEFINED = 0, + VSS_RS_NONE, + VSS_RS_ALL, + VSS_RS_FAILED, +} VSS_FILE_RESTORE_STATUS; + +typedef enum VSS_COMPONENT_FLAGS { + VSS_CF_BACKUP_RECOVERY = 0x00000001, + VSS_CF_APP_ROLLBACK_RECOVERY = 0x00000002, + VSS_CF_NOT_SYSTEM_STATE = 0x00000004, +} VSS_COMPONENT_FLAGS; + +interface IVssExamineWriterMetadata; + +[object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] +interface IVssWMFiledesc : IUnknown +{ + HRESULT GetPath( + [out] BSTR *pbstrPath); + + HRESULT GetFilespec( + [out] BSTR *pbstrFilespec); + + HRESULT GetRecursive( + [out] boolean *pbRecursive); + + HRESULT GetAlternateLocation( + [out] BSTR *pbstrAlternateLocation); + + HRESULT GetBackupTypeMask( + [out] DWORD *pdwTypeMask); +} + +[object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] +interface IVssWMDependency : IUnknown +{ + HRESULT GetWriterId( + [out] VSS_ID *pWriterId); + + HRESULT GetLogicalPath( + [out] BSTR *pbstrLogicalPath); + + HRESULT GetComponentName( + [out] BSTR *pbstrComponentName); +}; + +[object, uuid(d2c72c96-c121-4518-b627-e5a93d010ead), pointer_default(unique)] +interface IVssComponent : IUnknown +{ + HRESULT GetLogicalPath( + [out] BSTR *pbstrPath); + + HRESULT GetComponentType( + [out] VSS_COMPONENT_TYPE *pct); + + HRESULT GetComponentName( + [out] BSTR *pbstrName); + + HRESULT GetBackupSucceeded( + [out] boolean *pbSucceeded); + + HRESULT GetAlternateLocationMappingCount( + [out] UINT *pcMappings); + + HRESULT GetAlternateLocationMapping( + [in] UINT iMapping, + [out] IVssWMFiledesc **ppFiledesc); + + HRESULT SetBackupMetadata( + [in] LPCWSTR wszData); + + HRESULT GetBackupMetadata( + [out] BSTR *pbstrData); + + HRESULT AddPartialFile( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilename, + [in] LPCWSTR wszRanges, + [in] LPCWSTR wszMetadata); + + HRESULT GetPartialFileCount( + [out] UINT *pcPartialFiles); + + HRESULT GetPartialFile( + [in] UINT iPartialFile, + [out] BSTR *pbstrPath, + [out] BSTR *pbstrFilename, + [out] BSTR *pbstrRange, + [out] BSTR *pbstrMetadata); + + HRESULT IsSelectedForRestore( + [out] boolean *pbSelectedForRestore); + + HRESULT GetAdditionalRestores( + [out] boolean *pbAdditionalRestores); + + HRESULT GetNewTargetCount( + [out] UINT *pcNewTarget); + + HRESULT GetNewTarget( + [in] UINT iNewTarget, + [out] IVssWMFiledesc **ppFiledesc); + + HRESULT AddDirectedTarget( + [in] LPCWSTR wszSourcePath, + [in] LPCWSTR wszSourceFilename, + [in] LPCWSTR wszSourceRangeList, + [in] LPCWSTR wszDestinationPath, + [in] LPCWSTR wszDestinationFilename, + [in] LPCWSTR wszDestinationRangeList); + + HRESULT GetDirectedTargetCount( + [out] UINT *pcDirectedTarget); + + HRESULT GetDirectedTarget( + [in] UINT iDirectedTarget, + [out] BSTR *pbstrSourcePath, + [out] BSTR *pbstrSourceFileName, + [out] BSTR *pbstrSourceRangeList, + [out] BSTR *pbstrDestinationPath, + [out] BSTR *pbstrDestinationFilename, + [out] BSTR *pbstrDestinationRangeList); + + HRESULT SetRestoreMetadata( + [in] LPCWSTR wszRestoreMetadata); + + HRESULT GetRestoreMetadata( + [out] BSTR *pbstrRestoreMetadata); + + HRESULT SetRestoreTarget( + [in] VSS_RESTORE_TARGET target); + + HRESULT GetRestoreTarget( + [out] VSS_RESTORE_TARGET *pTarget); + + HRESULT SetPreRestoreFailureMsg( + [in] LPCWSTR wszPreRestoreFailureMsg); + + HRESULT GetPreRestoreFailureMsg( + [out] BSTR *pbstrPreRestoreFailureMsg); + + HRESULT SetPostRestoreFailureMsg( + [in] LPCWSTR wszPostRestoreFailureMsg); + + HRESULT GetPostRestoreFailureMsg( + [out] BSTR *pbstrPostRestoreFailureMsg); + + HRESULT SetBackupStamp( + [in] LPCWSTR wszBackupStamp); + + HRESULT GetBackupStamp( + [out] BSTR *pbstrBackupStamp); + + HRESULT GetPreviousBackupStamp( + [out] BSTR *pbstrBackupStamp); + + HRESULT GetBackupOptions( + [out] BSTR *pbstrBackupOptions); + + HRESULT GetRestoreOptions( + [out] BSTR *pbstrRestoreOptions); + + HRESULT GetRestoreSubcomponentCount( + [out] UINT *pcRestoreSubcomponent); + + HRESULT GetRestoreSubcomponent( + [in] UINT iComponent, + [out] BSTR *pbstrLogicalPath, + [out] BSTR *pbstrComponentName, + [out] boolean *pbRepair); + + HRESULT GetFileRestoreStatus( + [out] VSS_FILE_RESTORE_STATUS *pStatus); + + HRESULT AddDifferencedFilesByLastModifyTime( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] WINBOOL bRecursive, + [in] FILETIME ftLastModifyTime); + + HRESULT AddDifferencedFilesByLastModifyLSN( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] WINBOOL bRecursive, + [in] BSTR bstrLsnString); + + HRESULT GetDifferencedFilesCount( + [out] UINT *pcDifferencedFiles); + + HRESULT GetDifferencedFile( + [in] UINT iDifferencedFile, + [out] BSTR *pbstrPath, + [out] BSTR *pbstrFilespec, + [out] BOOL *pbRecursive, + [out] BSTR *pbstrLsnString, + [out] FILETIME *pftLastModifyTime); +} + +[object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] +interface IVssWriterComponents +{ + HRESULT GetComponentCount( + [out] UINT *pcComponents); + + HRESULT GetWriterInfo( + [out] VSS_ID *pidInstance, + [out] VSS_ID *pidWriter); + + HRESULT GetComponent( + [in] UINT iComponent, + [out] IVssComponent **ppComponent); +} + +[object, uuid(156c8b5e-f131-4bd7-9c97-d1923be7e1fa), pointer_default(unique)] +interface IVssComponentEx : IVssComponent +{ + HRESULT SetPrepareForBackupFailureMsg( + [in] LPCWSTR wszFailureMsg); + + HRESULT SetPostSnapshotFailureMsg( + [in] LPCWSTR wszFailureMsg); + + HRESULT GetPrepareForBackupFailureMsg( + [out] BSTR *pbstrFailureMsg); + + HRESULT GetPostSnapshotFailureMsg( + [out] BSTR *pbstrFailureMsg); + + HRESULT GetAuthoritativeRestore( + [out] boolean *pbAuth); + + HRESULT GetRollForward( + [out] VSS_ROLLFORWARD_TYPE *pRollType, + [out] BSTR *pbstrPoint); + + HRESULT GetRestoreName( + [out] BSTR *pbstrName); +} + +[object, uuid(3b5be0f2-07a9-4e4b-bdd3-cfdc8e2c0d2d), pointer_default(unique)] +interface IVssComponentEx2 : IVssComponentEx +{ + HRESULT SetFailure( + [in] HRESULT hr, + [in] HRESULT hrApplication, + [in] LPCWSTR wszApplicationMessage, + [in] DWORD dwReserved); + + HRESULT GetFailure( + [out] HRESULT *phr, + [out] HRESULT *phrApplication, + [out] BSTR *pbstrApplicationMessage, + [out] DWORD *pdwReserved); +} + +interface IXMLDOMDocument; + +[object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] +interface IVssCreateWriterMetadata +{ + HRESULT AddIncludeFiles( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive, + [in] LPCWSTR wszAlternateLocation); + + HRESULT AddExcludeFiles( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive); + + HRESULT AddComponent( + [in] VSS_COMPONENT_TYPE ct, + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszComponentName, + [in] LPCWSTR wszCaption, + [in] const BYTE *pbIcon, + [in] UINT cbIcon, + [in] boolean bRestoreMetadata, + [in] boolean bNotifyOnBackupComplete, + [in] boolean bSelectable, + [in] boolean bSelectableForRestore, + [in] DWORD dwComponentFlags); + + HRESULT AddDatabaseFiles( + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszDatabaseName, + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] DWORD dwBackupTypeMask); + + HRESULT AddDatabaseLogFiles( + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszDatabaseName, + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] DWORD dwBackupTypeMask); + + HRESULT AddFilesToFileGroup( + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszGroupName, + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive, + [in] LPCWSTR wszAlternateLocation, + [in] DWORD dwBackupTypeMask); + + HRESULT SetRestoreMethod( + [in] VSS_RESTOREMETHOD_ENUM method, + [in] LPCWSTR wszService, + [in] LPCWSTR wszUserProcedure, + [in] VSS_WRITERRESTORE_ENUM writerRestore, + [in] boolean bRebootRequired); + + HRESULT AddAlternateLocationMapping( + [in] LPCWSTR wszSourcePath, + [in] LPCWSTR wszSourceFilespec, + [in] boolean bRecursive, + [in] LPCWSTR wszDestination); + + HRESULT AddComponentDependency( + [in] LPCWSTR wszForLogicalPath, + [in] LPCWSTR wszForComponentName, + [in] VSS_ID onWriterId, + [in] LPCWSTR wszOnLogicalPath, + [in] LPCWSTR wszOnComponentName); + + HRESULT SetBackupSchema( + [in] DWORD dwSchemaMask); + + HRESULT GetDocument( + [out] IXMLDOMDocument **pDoc); + + HRESULT SaveAsXML( + [in] BSTR *pbstrXML); +} + +[object, uuid(9f21981d-d469-4349-b807-39e64e4674e1), pointer_default(unique)] +interface IVssCreateWriterMetadataEx : IVssCreateWriterMetadata /* , IUnknown */ +{ + HRESULT AddExcludeFilesFromSnapshot( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive); +} + +[object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)] +interface IVssWriterImpl : IUnknown +{ + HRESULT Initialize( + [in] VSS_ID writerId, + [in] LPCWSTR wszWriterName, + [in] LPCWSTR wszWriterInstanceName, + [in] DWORD dwMajorVersion, + [in] DWORD dwMinorVersion, + [in] VSS_USAGE_TYPE ut, + [in] VSS_SOURCE_TYPE st, + [in] VSS_APPLICATION_LEVEL nLevel, + [in] DWORD dwTimeout, + [in] VSS_ALTERNATE_WRITER_STATE aws, + [in] boolean bIOThrottlingOnly); + + HRESULT Subscribe( + [in] DWORD dwSubscribeTimeout, + [in] DWORD dwEventFlags); + + HRESULT Unsubscribe(); + + void Uninitialize(); + + LPCWSTR *GetCurrentVolumeArray(); + + UINT GetCurrentVolumeCount(); + + HRESULT GetSnapshotDeviceName( + [in] LPCWSTR wszOriginalVolume, + [out] LPCWSTR *ppwszSnapshotDevice); + + VSS_ID GetCurrentSnapshotSetId(); + + LONG GetContext(); + + VSS_APPLICATION_LEVEL GetCurrentLevel(); + + boolean IsPathAffected( + [in] LPCWSTR wszPath); + + boolean IsBootableSystemStateBackedUp(); + + boolean AreComponentsSelected(); + + VSS_BACKUP_TYPE GetBackupType(); + + VSS_RESTORE_TYPE GetRestoreType(); + + HRESULT SetWriterFailure( + [in] HRESULT hr); + + boolean IsPartialFileSupportEnabled(); + + HRESULT InstallAlternateWriter( + [in] VSS_ID idWriter, + [in] CLSID clsid); + + IVssExamineWriterMetadata* GetIdentityInformation(); + + HRESULT SetWriterFailureEx( + [in] HRESULT hr, + [in] HRESULT hrApplication, + [in] LPCWSTR wszApplicationMessage); + + HRESULT GetSessionId( + [out] VSS_ID *idSession); + + boolean IsWriterShuttingDown(); +} + +[object, uuid(9c772e77-b26e-427f-92dd-c996f41ea5e3), pointer_default(unique)] +interface IVssCreateExpressWriterMetadata : IUnknown +{ + HRESULT AddExcludeFiles( + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive); + + HRESULT AddComponent( + [in] VSS_COMPONENT_TYPE ct, + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszComponentName, + [in] LPCWSTR wszCaption, + [in] const BYTE *pbIcon, + [in] UINT cbIcon, + [in] boolean bRestoreMetadata, + [in] boolean bNotifyOnBackupComplete, + [in] boolean bSelectable, + [in] boolean bSelectableForRestore, + [in] DWORD dwComponentFlags); + + HRESULT AddFilesToFileGroup( + [in] LPCWSTR wszLogicalPath, + [in] LPCWSTR wszGroupName, + [in] LPCWSTR wszPath, + [in] LPCWSTR wszFilespec, + [in] boolean bRecursive, + [in] LPCWSTR wszAlternateLocation, + [in] DWORD dwBackupTypeMask); + + HRESULT SetRestoreMethod( + [in] VSS_RESTOREMETHOD_ENUM method, + [in] LPCWSTR wszService, + [in] LPCWSTR wszUserProcedure, + [in] VSS_WRITERRESTORE_ENUM writerRestore, + [in] boolean bRebootRequired); + + HRESULT AddComponentDependency( + [in] LPCWSTR wszForLogicalPath, + [in] LPCWSTR wszForComponentName, + [in] VSS_ID onWriterId, + [in] LPCWSTR wszOnLogicalPath, + [in] LPCWSTR wszOnComponentName); + + HRESULT SetBackupSchema( + [in] DWORD dwSchemaMask); + + HRESULT SaveAsXML( + [out] BSTR *pbstrXML); +} + +[object, uuid(e33affdc-59c7-47b1-97d5-4266598f6235), pointer_default(unique)] +interface IVssExpressWriter : IUnknown +{ + HRESULT CreateMetadata( + [in] VSS_ID writerId, + [in] LPCWSTR writerName, + [in] VSS_USAGE_TYPE usageType, + [in] DWORD versionMajor, + [in] DWORD versionMinor, + [in] DWORD reserved, + [out] IVssCreateExpressWriterMetadata **ppMetadata); + + HRESULT LoadMetadata( + [in] LPCWSTR metadata, + [in] DWORD reserved); + + HRESULT Register(); + + HRESULT Unregister( + [in] VSS_ID writerId); +} + +cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */") -- 2.35.1
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
