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

Reply via email to