| /** |
| * 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 */") |