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