From 567e797a10f86438d39d9307a7a84a6344f14ca7 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Mon, 7 Feb 2022 19:50:42 +0530 Subject: [PATCH 2/4] headers: Add vsmgmt.idl
Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-headers/Makefile.am | 1 + mingw-w64-headers/include/vsmgmt.idl | 261 +++++++++++++++++++++++++++ 2 files changed, 262 insertions(+) create mode 100644 mingw-w64-headers/include/vsmgmt.idl diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am index 0aa76fd..711b2ad 100644 --- a/mingw-w64-headers/Makefile.am +++ b/mingw-w64-headers/Makefile.am @@ -227,6 +227,7 @@ IDL_SRCS = \ include/urlmon.idl \ include/vdslun.idl \ include/vsadmin.idl \ + include/vsmgmt.idl \ include/vsprov.idl \ include/vss.idl \ include/wbemads.idl \ diff --git a/mingw-w64-headers/include/vsmgmt.idl b/mingw-w64-headers/include/vsmgmt.idl new file mode 100644 index 0000000..ec952cf --- /dev/null +++ b/mingw-w64-headers/include/vsmgmt.idl @@ -0,0 +1,261 @@ +/** + * 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. + */ + +cpp_quote("#include <winapifamily.h>") +cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") + +import "oaidl.idl"; +import "ocidl.idl"; + +import "vss.idl"; + +typedef enum _VSS_MGMT_OBJECT_TYPE { + VSS_MGMT_OBJECT_UNKNOWN = 0, + VSS_MGMT_OBJECT_VOLUME, + VSS_MGMT_OBJECT_DIFF_VOLUME, + VSS_MGMT_OBJECT_DIFF_AREA, +} VSS_MGMT_OBJECT_TYPE, *PVSS_MGMT_OBJECT_TYPE; + +const LONGLONG VSS_ASSOC_NO_MAX_SPACE = -1; + +const LONGLONG VSS_ASSOC_REMOVE = 0; + +typedef struct _VSS_VOLUME_PROP { + VSS_PWSZ m_pwszVolumeName; + VSS_PWSZ m_pwszVolumeDisplayName; +} VSS_VOLUME_PROP, *PVSS_VOLUME_PROP; + +typedef struct _VSS_DIFF_VOLUME_PROP { + VSS_PWSZ m_pwszVolumeName; + VSS_PWSZ m_pwszVolumeDisplayName; + LONGLONG m_llVolumeFreeSpace; + LONGLONG m_llVolumeTotalSpace; +} VSS_DIFF_VOLUME_PROP, *PVSS_DIFF_VOLUME_PROP; + +typedef struct _VSS_DIFF_AREA_PROP { + VSS_PWSZ m_pwszVolumeName; + VSS_PWSZ m_pwszDiffAreaVolumeName; + LONGLONG m_llMaximumDiffSpace; + LONGLONG m_llAllocatedDiffSpace; + LONGLONG m_llUsedDiffSpace; +} VSS_DIFF_AREA_PROP, *PVSS_DIFF_AREA_PROP; + +[switch_type(VSS_MGMT_OBJECT_TYPE)] +typedef union { + [case(VSS_MGMT_OBJECT_VOLUME)] VSS_VOLUME_PROP Vol; + [case(VSS_MGMT_OBJECT_DIFF_VOLUME)] VSS_DIFF_VOLUME_PROP DiffVol; + [case(VSS_MGMT_OBJECT_DIFF_AREA)] VSS_DIFF_AREA_PROP DiffArea; + [default]; +} VSS_MGMT_OBJECT_UNION, *PVSS_MGMT_OBJECT_UNION; + +typedef struct _VSS_MGMT_OBJECT_PROP { + VSS_MGMT_OBJECT_TYPE Type; + [switch_is(Type)] VSS_MGMT_OBJECT_UNION Obj; +} VSS_MGMT_OBJECT_PROP, *PVSS_MGMT_OBJECT_PROP; + +typedef enum _VSS_PROTECTION_LEVEL { + VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME = 0, + VSS_PROTECTION_LEVEL_SNAPSHOT, +} VSS_PROTECTION_LEVEL, *PVSS_PROTECTION_LEVEL; + +typedef enum _VSS_PROTECTION_FAULT { + VSS_PROTECTION_FAULT_NONE = 0, + VSS_PROTECTION_FAULT_DIFF_AREA_MISSING, + VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE, + VSS_PROTECTION_FAULT_META_DATA_CORRUPTION, + VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE, + VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE, + VSS_PROTECTION_FAULT_COW_READ_FAILURE, + VSS_PROTECTION_FAULT_COW_WRITE_FAILURE, + VSS_PROTECTION_FAULT_DIFF_AREA_FULL, + VSS_PROTECTION_FAULT_GROW_TOO_SLOW, + VSS_PROTECTION_FAULT_GROW_FAILED, + VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS, + VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE, + VSS_PROTECTION_FAULT_IO_FAILURE, + VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED, + VSS_PROTECTION_FAULT_EXTERNAL_WRITER_TO_DIFF_AREA, + VSS_PROTECTION_FAULT_MOUNT_DURING_CLUSTER_OFFLINE +} VSS_PROTECTION_FAULT, *PVSS_PROTECTION_FAULT; + +typedef struct _VSS_VOLUME_PROTECTION_INFO { + VSS_PROTECTION_LEVEL m_protectionLevel; + WINBOOL m_volumeIsOfflineForProtection; + VSS_PROTECTION_FAULT m_protectionFault; + LONG m_failureStatus; + WINBOOL m_volumeHasUnusedDiffArea; + DWORD m_reserved; +} VSS_VOLUME_PROTECTION_INFO, *PVSS_VOLUME_PROTECTION_INFO; + +interface IVssSnapshotMgmt; +interface IVssDifferentialSoftwareSnapshotMgmt; +interface IVssEnumMgmtObject; + +[ + object, + uuid(fa7df749-66e7-4986-a27f-e2f04ae53772), + pointer_default(unique) +] +interface IVssSnapshotMgmt: IUnknown +{ + HRESULT GetProviderMgmtInterface( + [in] VSS_ID ProviderId, + [in] REFIID InterfaceId, + [out, iid_is(InterfaceId)] IUnknown **ppItf); + + HRESULT QueryVolumesSupportedForSnapshots( + [in] VSS_ID ProviderId, + [in] LONG lContext, + [out] IVssEnumMgmtObject **ppEnum); + + HRESULT QuerySnapshotsByVolume( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_ID ProviderId, + [out] IVssEnumObject **ppEnum); +} + +[ + object, + uuid(0f61ec39-fe82-45f2-a3f0-768b5d427102), + pointer_default(unique) +] +interface IVssSnapshotMgmt2: IUnknown +{ + HRESULT GetMinDiffAreaSize( + [out] LONGLONG *pllMinDiffAreaSize); +} + +[ + object, + uuid(214a0f28-b737-4026-b847-4f9e37d79529), + pointer_default(unique) +] +interface IVssDifferentialSoftwareSnapshotMgmt: IUnknown +{ + HRESULT AddDiffArea( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PWSZ pwszDiffAreaVolumeName, + [in] LONGLONG llMaximumDiffSpace); + + HRESULT ChangeDiffAreaMaximumSize( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PWSZ pwszDiffAreaVolumeName, + [in] LONGLONG llMaximumDiffSpace); + + HRESULT QueryVolumesSupportedForDiffAreas( + [in] VSS_PWSZ pwszOriginalVolumeName, + [out] IVssEnumMgmtObject **ppEnum); + + HRESULT QueryDiffAreasForVolume( + [in] VSS_PWSZ pwszVolumeName, + [out] IVssEnumMgmtObject **ppEnum); + + HRESULT QueryDiffAreasOnVolume( + [in] VSS_PWSZ pwszVolumeName, + [out] IVssEnumMgmtObject **ppEnum); + + HRESULT QueryDiffAreasForSnapshot( + [in] VSS_ID SnapshotId, + [out] IVssEnumMgmtObject **ppEnum); +} + +[ + object, + uuid(949d7353-675f-4275-8969-f044c6277815), + pointer_default(unique) +] +interface IVssDifferentialSoftwareSnapshotMgmt2 : IVssDifferentialSoftwareSnapshotMgmt +{ + HRESULT ChangeDiffAreaMaximumSizeEx( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PWSZ pwszDiffAreaVolumeName, + [in] LONGLONG llMaximumDiffSpace, + [in] WINBOOL bVolatile); + + HRESULT MigrateDiffAreas( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PWSZ pwszDiffAreaVolumeName, + [in] VSS_PWSZ pwszNewDiffAreaVolumeName); + + HRESULT QueryMigrationStatus( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PWSZ pwszDiffAreaVolumeName, + [out] IVssAsync **ppAsync); + + HRESULT SetSnapshotPriority( + [in] VSS_ID idSnapshot, + [in] BYTE priority); +} + +[ + object, + uuid(383f7e71-a4c5-401f-b27f-f826289f8458), + pointer_default(unique) +] +interface IVssDifferentialSoftwareSnapshotMgmt3 : IVssDifferentialSoftwareSnapshotMgmt2 +{ + HRESULT SetVolumeProtectLevel( + [in] VSS_PWSZ pwszVolumeName, + [in] VSS_PROTECTION_LEVEL protectionLevel); + + HRESULT GetVolumeProtectLevel( + [in] VSS_PWSZ pwszVolumeName, + [out] VSS_VOLUME_PROTECTION_INFO *protectionLevel); + + HRESULT ClearVolumeProtectFault( + [in] VSS_PWSZ pwszVolumeName); + + HRESULT DeleteUnusedDiffAreas( + [in] VSS_PWSZ pwszDiffAreaVolumeName); + + HRESULT QuerySnapshotDeltaBitmap( + [in] VSS_ID idSnapshotOlder, + [in] VSS_ID idSnapshotYounger, + [out] ULONG *pcBlockSizePerBit, + [out] ULONG *pcBitmapLength, + [out, size_is(, *pcBitmapLength)] BYTE **ppbBitmap); +} + +[ + object, + uuid(01954e6b-9254-4e6e-808c-c9e05d007696), + pointer_default(unique) +] +interface IVssEnumMgmtObject : IUnknown +{ + HRESULT Next( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] VSS_MGMT_OBJECT_PROP *rgelt, + [out] ULONG *pceltFetched); + + HRESULT Skip( + [in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone( + [in, out] IVssEnumMgmtObject **ppenum); +} + +[ + uuid(84015c41-291d-49e6-bf7f-dd40ae93632b), + version(1.0) +] +library VSMGMT +{ + importlib("stdole2.tlb"); + + [ + uuid(0b5a2c52-3eb9-470a-96e2-6c6d4570e40f) + ] + coclass VssSnapshotMgmt + { + [default] interface IVssSnapshotMgmt; + interface IVssSnapshotMgmt2; + } +} + +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
